はじめに#
手間をかけたくない方には、Vercel を使用してデプロイする方が便利かもしれません。詳細は、爱阅书香オーディオブック マイクロソフト AI 音声 TTS Vercel デプロイチュートリアル | Yunfi's Blogをご覧ください。
- Docker による実装
- プロジェクトのアドレス:yy4382/ms-ra-forwarder-for-ifreetime
- wxxxcxx/ms-ra-forwarder: 無料のオンラインテキスト音声変換 API (github.com)から変更されました。スターを付けてください。
- 特に@justnsmsさんに感謝します。彼の助けがなければ、このような簡単な方法はありませんでした。
- 設定中に問題が発生した場合は、メールを送ってください(メールアドレスはブログのサイドバーにあります)。
前提条件#
- 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
になることです。
問題があればコメントしてください。
付録#
これは私が最初に作ったバージョンで、かなり複雑ですが、参考までに。
- 2 つのサービスが必要です。1 つは TTS テキスト音声変換サービスで、Android の読み上げ 3.0 を使用する場合はこれだけで十分です。もう 1 つは、最初のサービスを爱阅书香で使用できる形式に変換するものです。
- 2 つのプロジェクトのアドレス:wxxxcxx/ms-ra-forwarder: 無料のオンラインテキスト音声変換 API (github.com)、iranee/ifreetime: iOS 爱阅书香 TTS 自建服务 (github.com)。2 人の方にスターを付けてください。
やや手間がかかりますが、Docker の基礎知識が必要ですが、すべてがどのように動作するかを知ることができます。最後に置いておきます。
ms-ra-forwarder#
- GitHub のアドレス:wxxxcxx/ms-ra-forwarder: 無料のオンラインテキスト音声変換 API (github.com)
- プロジェクト自体が
docker-compose.yml
ファイルを提供しているので、そのまま使用してください。 http://your-ip:3000
を開いて、このページが表示されるか確認してください。
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 からもらったもので、最適ではないかもしれませんが、動作するはずです。少なくとも私は成功しました)。
-
フォルダを作成します。例えば、ifreetime(他の名前でも構いません)。
-
フォルダに移動し、src という名前のフォルダを作成し、プロジェクトの ra.php をそこに配置します(または、プロジェクト全体をクローンしても構いません)。
-
ra.php を編集し、
http://127.0.0.1:3000/api/ra
の中の127.0.0.1:3000
を最初の手順で生成した IP + ポートに変更します。- サーバーの場合、最も簡単な方法は、パブリック IP + ポートを直接使用することです。Synology の場合、最も簡単な方法は、ローカル IP + ポートを使用することです。
- テスト済みの他の代替案:
- クラウドサーバーでドメイン解決とリバースプロキシを設定し、
https://tts.example.com/api/ra
のような形式を使用する(https://tts.example.com
で ms-ra-forwarder にアクセスできる)。 - ローカル 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 は使用できないため、追加のポートが必要です。これを試した人が失敗したかどうかはわかりませんが、この問題が原因かどうかはわかりません。これを試した人が成功した場合は、メールで教えてください(メールアドレスはブログに記載されています)。
-
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"]
-
ビルドして実行します:ifreetime ディレクトリで次のコマンドを順番に入力します。
docker build -t ifreetime . docker run -d -p 12222:8000 ifreetime
-
この方法では、設定中(およびテスト時)に 3000 をすべて 12222 に変更する必要があります。また、/api/aiyue を /ra.php に変更する必要もあります。
-
携帯アプリを開き、オーディオブック設定に移動します -> カスタム音声ライブラリを作成します -> 高度なカスタム音声合成
名前:任意
合成文字数:200 がおすすめです
リクエスト方法:GET
アドレス:ra.php のネットワークアドレス。上記の方法でインストールした場合、
http://your-ip:12222/ra.php
です。パラメータ -> 追加 -> リクエストパラメータを入力してください:voiceName、内容は使用したい音声(ここを参照)を入力します。例:zh-CN-XiaoxiaoNeural
パラメータ -> 追加 -> リクエストパラメータを入力してください:text、内容は%@を入力します。
解析フィールド -> 追加 -> 解析フィールドとルールを入力してください:playData、内容は ResponseData を入力します。
発音をテストし、正しければ OK です。