Yunfi

Yunfi

tg_channel
github
email

愛読書香設定マイクロソフトtts聴書 Docker自建版

前言#

手間をかけたくない方には、Vercel へのデプロイがより便利かもしれません。詳細は 愛読書香聴書 Microsoft 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
# 完了しました!以下の方法で成功を確認し、愛読書香で聴書を設定してください。

トークンを設定したい場合は、yaml ファイルのコメントに従って操作してください。

iOS 端末の愛読書香の設定#

Vercel デプロイチュートリアル | 愛読設定部分 を参考にしてください。唯一の違いはアドレスで、https://ip:3000/api/aiyue であるべきです。

問題があればコメントしてください。

付録#

これは私が最初に作ったバージョンで、かなり複雑です。参考までにどうぞ。

少し面倒ですが、Docker の基礎知識が必要です。しかし、これによりすべてがどのように機能しているかを理解できます。文末に置いておきます。

ms-ra-forwarder#

入力例

Vercel を使用することもできますが、毎月 100G の無料トラフィックしかないため、多く聴く方や他のサービスも利用している方は注意が必要です。

  • Microsoft が Azure の試用を終了したため、RA(Edge の音声読み上げ)インターフェースを使用するしかありません。

ifreetime#

  • プロジェクトアドレス:iranee/ifreetime: iOS 愛読書香 TTS 自建サービス (github.com)

  • もしサーバーがすでに PHP をサポートするウェブサイトを運営している場合は、プロジェクト内の ra.phphttp://127.0.0.1:3000/api/ra の IP を最初のステップで使用したものに変更し、ウェブサイトに追加するだけで大丈夫です。

  • もしそうでない場合は、この PHP ファイルを実行するために Docker コンテナを作成する必要があります(警告:私は PHP を書いたことがないので、Dockerfile の書き方は ChatGPT からのもので、最適である保証はありませんが、動作するはずです。実際に成功しました)。

  1. 新しいフォルダーを作成し、仮に ifreetime と呼びます(他の名前でも構いません)。

  2. フォルダーに入り、src という名前のフォルダーを作成し、プロジェクト内の ra.php をそこに入れます(またはプロジェクト全体をクローンしても構いません)。

  3. ra.php を修正し、http://127.0.0.1:3000/api/ra127.0.0.1:3000 を最初のステップで生成した IP + ポートに変更します。

    • サーバーの場合、最も便利な方法は直接パブリック IP + ポートを使用することです。Synology の場合、最も簡単なのはローカル 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. モバイルアプリを開き、聴書設定 -> カスタム音声ライブラリに進みます。
    作成 -> 高度なカスタム音声合成

    名前:任意

    合成文字数:200 を推奨

    リクエスト方法:GET

    アドレス:ra.php のネットワークアドレス。上記の方法をインストールした場合、http://あなたのip:12222/ra.php になります。

    パラメータ -> 追加 -> リクエストパラメータを入力してください:voiceName、内容は自分が望む声を入力します(こちらを参考に)、例えば zh-CN-XiaoxiaoNeural。

    パラメータ -> 追加 -> リクエストパラメータを入力してください:text、内容は %@を入力します。

    解析フィールド -> 追加 -> 解析フィールドとルールを入力してください:playData、内容は ResponseData を入力します。

    発音をテストし、正しければ OK です。

image
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。