Tortoise は、次の優先順位に従って構築されたテキスト読み上げプログラムです。
このリポジトリには、Tortoise TTS を推論モードで実行するために必要なすべてのコードが含まれています。
原稿: https://arxiv.org/abs/2305.07243
ライブ デモは Hugging Face Spaces でホストされています。キューを避けたい場合は、スペースを複製して GPU を追加してください。このデモでは CPU のみのスペースは機能しないことに注意してください。
https://huggingface.co/spaces/Manmay/tortoise-tts
pip install tortoise-tts
最新の開発バージョンをインストールしたい場合は、git リポジトリから直接インストールすることもできます。
pip install git+https://github.com/neonbjb/tortoise-tts
私はスピーチ関連のリポジトリにモハーベ砂漠の動植物にちなんで名前を付けています。 Tortoise はちょっと皮肉です。このモデルはめちゃくちゃ遅いです。自己回帰デコーダと拡散デコーダの両方を利用します。どちらもサンプリングレートが低いことで知られています。 K80 では、中程度のサイズの文が 2 分ごとに生成されることが予想されます。
まあ....もうそれほど遅くはありませんが、4GB vram で0.25 ~ 0.3 の RTF を取得でき、ストリーミングでは500 ミリ秒未満の遅延を実現できます。
出力例の大きなリストについては、このページを参照してください。
Tortoise + GPT-3 のクールなアプリケーション (このリポジトリとは関係ありません): https://twitter.com/lexman_ai。残念ながら、このプロジェクトはもう活動していないようです。
これを自分のコンピュータで使用したい場合は、NVIDIA GPU が必要です。
ヒント
Windows では、Conda インストール方法を使用することを強くお勧めします。これを行わないと、依存関係の問題の追跡に多くの時間を費やすことになると言われています。
まず、miniconda をインストールします: https://docs.conda.io/en/latest/miniconda.html
次に、anaconda プロンプトを端末 (または conda で動作するように構成された他の端末) として使用して、次のコマンドを実行します。
これにより、次のことが行われます。
conda create --name tortoise python=3.9 numba inflect
conda activate tortoise
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
conda install transformers=4.29.2
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install
オプションで、pytorch を基本環境にインストールして、他の conda 環境でも使用できるようにすることができます。これを行うには、Tortoise 環境をアクティブ化する前にconda install pytorch...
行を送信するだけです。
注記
tortoise-tts を使用したい場合は、常にtortoise
conda 環境がアクティブ化されていることを確認する必要があります。
Windows を使用している場合は、pysoundfile もインストールする必要がある場合があります: conda install -c conda-forge pysoundfile
すぐに着手できる簡単な方法であり、ユースケースに応じて適切な出発点となります。
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
docker build . -t tts
docker run --gpus all
-e TORTOISE_MODELS_DIR=/models
-v /mnt/user/data/tortoise_tts/models:/models
-v /mnt/user/data/tortoise_tts/results:/results
-v /mnt/user/data/.cache/huggingface:/root/.cache/huggingface
-v /root:/work
-it tts
これにより、TTS を実行できる環境に対話型ターミナルが提供されます。これで、Tortoise が tts 用に公開するさまざまなインターフェイスを探索できるようになりました。
例えば:
cd app
conda activate tortoise
time python tortoise/do_tts.py
--output_path /results
--preset ultra_fast
--voice geralt
--text " Time flies like an arrow; fruit flies like a bananna. "
M1/M2 チップを搭載した macOS 13 以降では、公式ページに記載されているように、ほぼバージョンの PyTorch をインストールする必要があります。
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
これは、環境をアクティブ化した後に必ず実行してください。 conda を使用しない場合、コマンドは次のようになります。
python3.10 -m venv .venv
source .venv/bin/activate
pip install numba inflect psutil
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
pip install transformers
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
pip install .
Apple Silicon では DeepSpeed が無効になっているため、機能しないことに注意してください。 --use_deepspeed
フラグは無視されます。 MPS は Pytorch のすべての操作をサポートしているわけではないため、以下のコマンドを機能させるには、コマンドの先頭にPYTORCH_ENABLE_MPS_FALLBACK=1
追加する必要がある場合があります。
このスクリプトを使用すると、1 つまたは複数の音声で 1 つのフレーズを話すことができます。
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fast
python tortoise/socket_server.py
ポート5000でリッスンします
このスクリプトは、大量のテキストを読み取るためのツールを提供します。
python tortoise/read_fast.py --textfile < your text to be read > --voice random
このスクリプトは、大量のテキストを読み取るためのツールを提供します。
python tortoise/read.py --textfile < your text to be read > --voice random
これにより、テキストファイルが文に分割され、それらが一度に 1 つずつ音声に変換されます。一連の音声クリップが生成されると出力されます。すべてのクリップが生成されると、それらを 1 つのファイルに結合して出力します。
Tortoise が出力を台無しにすることがあります。 --regenerate 引数を指定してread.py
再実行することで、不良クリップを再生成できます。
Tortoise は次のようにプログラムで使用できます。
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
ディープスピードを使用するには:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
KV キャッシュを使用するには:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( kv_cache = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
float16 でモデルを実行するには:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
より高速に実行するには、次の 3 つすべてを使用します。
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ( use_deepspeed = True , kv_cache = True , half = True )
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )
このプロジェクトは予想以上に高い評価を獲得しました。しかし、私は巨人の肩の上に立っているので、これを実現するのに貢献したコミュニティの素晴らしい人々の功績を称えたいと思います。
Tortoise は、作者 (James Betker) が独自のハードウェアを使用して完全に構築しました。彼らの雇用主はトータスの開発には一切関与していませんでした。
Tortoise TTS は、Apache 2.0 ライセンスに基づいてライセンスされています。
このリポジトリまたはそこに含まれるアイデアを研究に使用する場合は、引用してください。 Bibtex のエントリーは、GitHub の右側のペインにあります。