Yunfi

Yunfi

tg_channel
github
email

愛読書香の設定マイクロソフトttsオーディオブックDocker自己構築版

はじめに#

手間をかけたくない方には、Vercel を使用してデプロイする方が便利かもしれません。詳細は、爱阅书香オーディオブック マイクロソフト AI 音声 TTS Vercel デプロイチュートリアル | Yunfi's Blogをご覧ください。

前提条件#

  • Docker を実行できるマシンが必要です。
  • 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 も使用できますが、月に 100GB の無料トラフィックしかありませんので、多くの音声を聞く / 他のサービスを構築している場合は注意が必要です。

  • マイクロソフトが Azure のトライアルを終了したため、ra(edge の大声朗読)インターフェースを使用するしかありません。

ifreetime#

  • プロジェクトのアドレス:iranee/ifreetime: iOS 爱阅书香 TTS 自建服务 (github.com)

  • サーバーで既に php をサポートしているウェブサイトを実行している場合は、プロジェクトの ra.php の中の http://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/ra の中の 127.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://your-ip:12222/ra.php です。

    パラメータ -> 追加 -> リクエストパラメータを入力してください:voiceName、内容は使用したい音声(ここを参照)を入力します。例:zh-CN-XiaoxiaoNeural

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

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

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

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