このリポジトリには、rabbitmqからリクエストを処理するエストニアのマルチスピーカーニューラルテキストからスピーチ合成ワーカーが含まれています。
このプロジェクトは、タルトゥ大学のNLP研究グループによって開発されています。音声統合は、デモでもテストできます。
リリースセクションには、モデルファイルまたはそのダウンロード手順が含まれています。リリースでモデル情報が指定されていない場合、前のリリースのモデルを使用できます。最適なモデルの品質とコード互換性を確保するために、常に最新の利用可能なバージョンを使用することをお勧めします。
config/config.yamlに含まれるモデル構成ファイルは、次のmodels/ディレクトリ構造に対応しています。
models
├── hifigan
│ ├── ljspeech
│ │ ├── config.json
│ │ └── model.pt
│ ├── vctk
│ │ ├── config.json
│ │ └── model.pt
└── tts
└── multispeaker
├── config.yaml
└── model_weights.hdf5
TTSワーカーは、リポジトリと一緒に公開されたDocker画像を使用して展開できます。各画像バージョンは、特定のリリースと相関しています。必要なモデルファイルは画像から除外されて画像サイズを削減し、リリースセクションからダウンロードする必要があり、そのディレクトリはボリューム/app/modelsに添付する必要があります。
ロギング構成は、 /app/config/logging.prod.ini /logging.prod.iniから/app/config/config.yamlファイルからサービス構成からロードされます。付属の構成には、新しいモデル構成を追加する方法を説明するためにコメントされています。
コンテナを実行するときに、次の環境変数を構成する必要があります。
MQ_USERNAME -rabbitmqユーザー名MQ_PASSWORD -RabbitMQユーザーパスワードMQ_HOST -rabbitmqホストMQ_PORT (オプション)-RabbitMQポート(デフォルトで5672 )MQ_EXCHANGE (オプション) - rabbitmq交換名(デフォルトでtext-to-speech )MQ_HEARTBEAT (オプション) - ハートビート間隔(デフォルトで60秒)MQ_CONNECTION_NAME (オプション) - フレンドリー接続名(デフォルトでTTS worker )MKL_NUM_THREADS (オプション) - Pytorch(ボコーダーモデルに使用)によるOP並列性に使用されるスレッドの数。 16デフォルトで。空白の値に設定すると、デフォルトでは、大きなノードに展開されたときに計算オーバーヘッドを引き起こす可能性のあるCPUコアの数がデフォルトです。あるいは、 docker runフラグ--cpuset-cpus使用してこれを制御できます。詳細については、以下のパフォーマンスとハードウェアの要件を参照してください。デフォルトでは、コンテナエントリポイントは追加の引数なしでmain.pyですが、 COMMANDオプションで引数を定義する必要があります。必要なフラグは、ワーカーによってロードされるモデルを選択するための--model-nameです。サポートされているフラグの完全なリストはpython main.py -hを実行することで見ることができます:
usage: main.py [-h] [--model-config MODEL_CONFIG] [--model-name MODEL_NAME] [--log-config LOG_CONFIG]
A text-to-speech worker that processes incoming TTS requests via RabbitMQ.
optional arguments:
-h, --help show this help message and exit
--model-config MODEL_CONFIG
The model config YAML file to load.
--model-name MODEL_NAME
The model to load. Refers to the model name in the config file.
--log-config LOG_CONFIG
Path to log config file.
セットアップは、次のサンプルdocker-compose.yml構成でテストできます。
version : ' 3 '
services :
rabbitmq :
image : ' rabbitmq '
environment :
- RABBITMQ_DEFAULT_USER=${RABBITMQ_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_PASS}
tts_api :
image : ghcr.io/tartunlp/text-to-speech-api:latest
environment :
- MQ_HOST=rabbitmq
- MQ_PORT=5672
- MQ_USERNAME=${RABBITMQ_USER}
- MQ_PASSWORD=${RABBITMQ_PASS}
ports :
- ' 8000:8000 '
depends_on :
- rabbitmq
tts_worker :
image : ghcr.io/tartunlp/text-to-speech-worker:latest
environment :
- MQ_HOST=rabbitmq
- MQ_PORT=5672
- MQ_USERNAME=${RABBITMQ_USER}
- MQ_PASSWORD=${RABBITMQ_PASS}
command : [ "--model-name", "multispeaker" ]
volumes :
- ./models:/app/models
depends_on :
- rabbitmq以下の手順はUbuntuでテストされており、CPUとGPUの両方の互換性があります(CUDAが必要)。
このリポジトリをサブモジュールでクローンします
前提条件をインストールする:
GNUコンパイラコレクション( sudo apt install build-essential )
CPUのインストールについては、Clean Environmentで添加requirements.txtを使用することをお勧めします(Python 3.9でテスト)
pip install -r requirements.txt
GPUインストールの場合、代わりにenvironment.ymlファイルを使用します。
次の前提条件がインストールされていることを確認してください。
次に、すべての依存関係を使用してコンドラ環境を作成してアクティブにします。
conda env create -f environment.yml -n tts
conda activate tts
リリースセクションからモデルをダウンロードし、 models/ディレクトリ内に配置します。
構成ファイルを確認し、必要に応じてデフォルトを変更します。 config/config.yamlのmodel_pathパラメーターが、ダウンロードしたばかりのモデルを指していることを確認してください。
環境変数を使用したRabbitMQ接続パラメーターを指定するか、 config/sample.envに示すようにconfig/.envファイルで指定します。
MODEL_NAME構成ファイルのモデル名と一致する場所でワーカーを実行します。
python main.py --model-name $MODEL_NAME [--log-config config/logging.ini --config config/config.yaml]