Yunfi

Yunfi

tg_channel
github
email

愛閱書香配置微軟tts聽書 Docker自建版

前言#

對於不想折騰的朋友,通過 Vercel 部署可能更方便。詳見 愛閱書香聽書 微軟 AI 語音 TTS Vercel 部署教程 | Yunfi's Blog

前置條件#

  • 有一台可以運行 Docker 的機器
  • 安裝好 docker

參考這篇文章的安裝 Docker 一節:#安裝 Docker | Yunfi's Blog

安裝服務器端#

安裝#

# 創建文件夾,名字任意
mkdir ifreetime_tts&&cd ifreetime_tts

# 下載文件
wget https://gist.github.com/yy4382/d0c2a5e2c19323f4aa651f99317fd53e/raw/docker-compose.yml

# 啟動容器
docker compose up -d
# 搞好了!按照下文的方法驗證是否成功,然後在愛閱中配置聽書

想要設置 token 的話,按照 yaml 文件裡的註釋操作

配置 ios 端愛閱書香#

參考 Vercel 部署教程 | 愛閱配置部分 ,唯一的區別在於地址,應該是 https://ip:3000/api/aiyue

有問題評論講

#

這是我最初做的版本,挺複雜的,僅供參考

稍顯麻煩,需要 docker 基礎知識,但是可以讓你知道這一切是如何運作的,放在文末了

ms-ra-forwarder#

填寫示例

也可以用 vercel,但是每月只有 100G 免費流量,聽的多的 / 還搭了其他服務的要小心些

  • 因為微軟把 Azure 的試用關了,所以只能用 ra(edge 的大聲朗讀)接口了

ifreetime#

  • 項目地址:iranee/ifreetime: iOS 愛閱書香 TTS 自建服務 (github.com)

  • 如果你的服務器已經在運行一個支持 php 的網站了,直接把項目裡的 ra.php 中的 http://127.0.0.1:3000/api/ra 的 ip 改成你自己在第一步裡用的,然後丟到網站裡就行

  • 如果沒有,那麼需要建一個 docker 容器以運行該 php 文件(警告:我沒寫過 php,dockerfile 的寫法是 ChatGPT 給的,不保證最優,但應該能用,反正我成功了)

  1. 新建一個文件夾,假設叫做 ifreetime (其他的也行)

  2. 進入文件夾,再建一個叫做 src 的文件夾,把項目中的 ra.php 放進去(或者直接把整個項目 clone 進去也行)

  3. 修改 ra.php,把 http://127.0.0.1:3000/api/ra 中的 127.0.0.1:3000 換成第一步中生成的 ip+ 端口

    • 對於服務器,最方便的方法是直接用公網 ip+ 端口,對於群晖,最簡單的是用局域網 ip+ 端口
    • 經測試可行的其他替代方案:
      1. 雲服務器做好域名解析和反代之後,使用類似 https://tts.example.com/api/ra 的格式(使用 https://tts.example.com 可以訪問 ms-ra-forwarder)
      2. 使用本地 docker 的 ip,一般是 172.17.0.1,所以應該形如 http://172.17.0.1:3000/api/ra
    • 不可行的方案:不可以使用 127.0.0.1,因為在容器裡
    • 可能會出問題的方案:域名 + 端口的形式,比如 https://www.example.com:3000/api/ra 尤其對於 nas 來說,因為 80/443 沒法用,所以不得不額外加端口。有人這樣搞失敗了,但不確定是不是因為這個問題。有人這樣搞成功了的話,用郵件踢我一腳(郵箱在博客上有寫)
  4. 回到 ifreetime 文件夾,新建一個叫 Dockerfile 的文件,內容為

    # 設置基礎鏡像
    FROM php:7.3
    
    # 將本地代碼複製到容器中的 /var/www/html 目錄
    COPY src/ /var/www/html/
    
    # 設置容器內的工作目錄
    WORKDIR /var/www/html
    
    # 暴露容器的 8000 端口
    EXPOSE 8000
    
    #啟動php服務器
    CMD ["php", "-S", "0.0.0.0:8000"]
    
  5. 構建並運行:在 ifreetime 目錄中,依次輸入如下指令

    docker build -t ifreetime .
    docker run -d -p 12222:8000 ifreetime
    
  6. 這種方法,需要將愛閱中的配置(還有測試的時候)把 3000 都換成 12222. 而且 /api/aiyue 都換成 /ra.php

  7. 打開手機 App,進入聽書配置 -> 自定義語音庫
    創建 -> 高級自定義語音合成

    名稱:任意

    合成字數:建議 200

    請求方式:GET

    地址:ra.php 網絡地址,如果安裝上面的方法,是 http://你的ip:12222/ra.php

    參數 -> 添加 -> 請輸入請求參數:voiceName,內容填自己想要的人聲(參考 這裡),例如 zh-CN-XiaoxiaoNeural

    參數 -> 添加 -> 請輸入請求參數:text,內容填 %@

    解析字段 -> 添加 -> 請輸入解析字段與規則:playData,內容填 ResponseData

    測試發音,如果正確就 ok 了。

image
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。