Tortoise TTS:後続モデルが学んだ低速モデル
テキストと録音を、聴ける作品に
ナレーション、ステム分離、カバー、効果音を、ブラウザだけで。
- テキスト読み上げも、ボイスクローンも
- ステムを分離、またはカバーを生成
- 登録して試聴。聴いてから決められる
ゼロショットクローンが高速で気軽に使えるものになる前、まったく異なる賭けに出たモデルがありました。必要なだけ時間をかけても、出力を本当に説得力のあるものにするという選択です。Tortoise TTS という名前に偽りはありません。開発者がこの名前を選んだのは、本人の言葉を借りれば、このモデルが「途方もなく遅い」からです。その辛抱強さと引き換えに得られるのが音声品質です。2022年当時、ニューラル TTS が商用システムと互角に渡り合えると示した、最初期のオープンソース事例のひとつでした。そこで実証されたアイデアを部分的に基盤とする新しいモデルには、今もそのアーキテクチャの DNA が見て取れます。
Tortoise TTS とは
Tortoise TTS は、開発者 James Betker が作成したオープンソースのマルチボイス・テキスト読み上げシステムです。最初の commit は 2022年1月までさかのぼります。Betker の論文「Better Speech Synthesis Through Scaling」に記録されており、当時画像生成を大きく変えたばかりの技術、すなわち自己回帰 Transformer とノイズ除去拡散確率モデル(DDPM)を取り入れ、音声に応用した経緯が説明されています。
特筆すべき点として、Tortoise は Betker が雇用主とは無関係に、自身のハードウェアだけを使って構築しました。そして完全に寛容な Apache 2.0 ライセンスで公開されています。非商用研究ライセンスによって商用利用を制限する新しいクローンモデルも複数ある中で、これは商用利用に真に適した選択として際立っています。
アーキテクチャ:自己回帰 Transformer の次に diffusion モデル
Tortoise の手法は DALL-E に着想を得ており、2段階のパイプラインが強みと遅さの両方を生み出しています。まず、GPT とアーキテクチャが似た自己回帰 Transformer が、入力テキストと参照音声サンプルを条件として離散音声 token を生成します。Tortoise はそこで終わらず、その token を diffusion モデルへ渡します。diffusion モデルは反復的に処理し、最終的な高忠実度の音声波形へと仕上げます。
これは、数年前に画像生成の品質を飛躍させたものと同じ2段階の論理です。最初に生成処理を行い、その後、計算時間と引き換えに忠実度を高める精緻化処理を続けます。Tortoise の場合、このトレードオフによって、自然な間、強調、話者固有の声の質感を備えた、本当に優れた韻律とイントネーションが生まれます。その代償として、生成速度は現代の代替手段の大半より明らかに遅くなります。
あえて丁寧に進めるマルチボイスクローン
Tortoise は、複数の参照音声クリップから音声をクローンできます。単一のデフォルト話者向けに最適化するのではなく、複数の声を適切に扱うことを中心に設計されています。対象となる声の参照クリップを複数用意すると、モデルがそれらをまとめて使い、その話者の特徴を捉えます。新しいモデルの単一クリップによるゼロショットクローンより準備は少し重くなりますが、後続の高速なシステムと比べて、歴史的にはより安定し、より自然に聞こえる話者の再現を実現してきました。
後続モデルに与えた Tortoise の影響
Tortoise と新しい選択肢を比較するなら、知っておく価値があります。そのアーキテクチャ上のアイデアは、ひとつのプロジェクトの中だけに留まりませんでした。XTTS の GPT 型自己回帰設計と Bilibili の IndexTTS は、いずれも Tortoise が築くのに貢献した基盤の上に明示的に成り立っています。コンテンツ生成用の自己回帰言語モデルに、音質向上のための独立した精緻化段階を組み合わせる構成は、オープンソース TTS エコシステムのかなりの部分が採用し、改良を重ねるひな型となりました。Transformer と独立した音響精緻化段階を組み合わせた新しいクローンモデルを使ったことがあるなら、その設計の系譜の一部はここにさかのぼる可能性があります。
Tortoise TTS の始め方
- 専用の conda 環境を設定します。
conda create --name tortoise python=3.9 numba inflectを実行して有効化し、使用する CUDA バージョンに合う PyTorch、torchvision、torchaudio をインストールします。 - transformers のバージョンを正確に固定します。 Tortoise には
transformers==4.29.2が明確に必要です。新しいバージョンでは互換性が壊れる可能性が高いため、セットアップ時にこの固定を省かないでください。 - リポジトリを clone してインストールします。
git clone https://github.com/neonbjb/tortoise-tts.gitを実行し、続いてcd tortoise-ttsとpython setup.py installを実行します(またはpip install git+https://github.com/neonbjb/tortoise-ttsで最新の開発版を直接インストールします)。 - 速度と品質の preset を選びます。 生成では
fast、standard、さらに高品質な設定などの preset を利用できます。最初のテストではfastから始め、最終出力では、より低速で忠実度の高い preset を選んでください。 kv_cacheと半精度を有効にして、生成を大幅に高速化します。TextToSpeech(kv_cache=True)またはTextToSpeech(half=True)で初期化すると、品質を劇的に損なうことなく、デフォルト設定より明らかに推論が速くなります。- ローカル環境を整える前に、ホスト型デモを試します。 Hugging Face Spaces のデモを利用できます。ただし Tortoise の推論パイプラインは CPU のみのインスタンスでは動作しないため、GPU を備えた Space が必要です。
より良い結果を得るためのヒント
- 特に高品質設定では、生成に実際の時間を確保してください。 Tortoise という名前は皮肉ではありません。
kv_cacheと半精度を有効にしても、ほぼ即時の結果が必要な場合に選ぶモデルではありません。リアルタイムのやり取りではなく、オーディオブックのナレーションのような、品質優先のオフライン作業向けに作られています。 - 参照クリップはひとつではなく、複数用意してください。 Tortoise のマルチボイスクローンは、対象となる声の複数のサンプルをまとめて使うように設計されています。新しいゼロショットモデルのように短いクリップひとつだけに頼ると、実際の能力を十分に引き出せない傾向があります。
- 所要時間より品質が重要なコンテンツに使ってください。 長編ナレーション、オーディオブック、プレミアムコンテンツでは、Tortoise の韻律面の優位性が最も明確になります。ライブエージェントや高速な反復には、新しい低遅延モデルの方が適しています。
- デプロイを計画する前に、約 8GB の VRAM があることを確認してください。 Tortoise を無理なく動かす基準として一般に挙げられる容量です。より小さな GPU で十分だと判断する前に、使用する preset と batch 設定に照らして確認してください。
- 活発に開発されているモデルと同じインストール体験は期待しないでください。 初期リリース以降、Tortoise の開発ペースは落ちています。すべての最新版が動くと想定するより、ドキュメントに記載された依存関係のバージョン、特に固定された
transformersのリリースに忠実に従う方が、トラブルシューティングの時間を大幅に節約できます。
Tortoise TTS と新しいクローンモデルの比較
| Tortoise TTS | XTTS-v2 | F5-TTS | |
|---|---|---|---|
| アーキテクチャ | 自己回帰 Transformer + diffusion | 自己回帰 Transformer(GPT-2 型)+ VQ-VAE | Diffusion Transformer + flow matching |
| 生成速度 | 低速、品質優先 | 中程度 | 高速(~0.15 RTF) |
| 音声クローン | 複数クリップを参照 | 約6秒の単一クリップ | 約5~15秒の単一クリップ |
| 多言語対応 | 主に英語 | 17言語 | 主に英語向け |
| ライセンス | Apache 2.0(完全に寛容) | Coqui Public Model License(非商用) | CC-BY-NC(非商用) |
| 最適な用途 | オーディオブック、プレミアムナレーション、品質優先のオフライン作業 | 一般的な多言語クローン | リアルタイムまたは高スループット生成 |
現在の Tortoise が持つ独自の立ち位置は、生成時間が本当に問題にならず、音質が重要なプロジェクトです。また、別途契約を結ばずに商用利用できるほど寛容なライセンスを持つ、数少ない有名クローンモデルのひとつでもあります。
よくある質問
なぜ「Tortoise TTS」という名前なのですか?
この名前は、モデルの遅さを意図的かつ冗談めかして表したものです。作成者は、生成速度より出力品質を優先した設計のため、「途方もなく遅い」と説明しています。
Tortoise TTS を作ったのは誰ですか?
James Betker が自身のハードウェアを使い、雇用主の関与なしに独立して Tortoise TTS を作成しました。モデル、コード、重みはすべて完全にオープンソース化されています。
Tortoise TTS は商用目的でも無料で使えますか?
はい。オープンソース TTS モデルの中でも寛容な選択肢のひとつである Apache 2.0 ライセンスで公開されており、別途商用契約を必要とする制限はありません。
Tortoise TTS のアーキテクチャは、新しい diffusion ベースのモデルとどう違いますか?
Tortoise は、離散音声 token を生成する自己回帰 Transformer(GPT がテキスト token を生成する方法に類似)と、その token を最終音声へと仕上げる diffusion モデルを組み合わせています。一部の新しいモデルが用いる単一の flow-matching または Diffusion Transformer パイプラインとは異なり、画像生成技術に着想を得た2段階設計です。
Tortoise TTS はほかの TTS モデルに影響を与えましたか?
はい。自己回帰言語モデルと、音質向上のための独立した精緻化段階を組み合わせた構成は、XTTS や IndexTTS を含む後続モデルへのアーキテクチャ上の影響として言及されています。
Echoraでテキストを音声に変換
テキストから一人の話者による音声を作る同様のワークフローをブラウザで利用したい場合は、Echoraのテキスト読み上げを使えます。最大5,000文字を入力し、内蔵音声または保存したカスタム音声を選び、必要に応じて対応している話し方タグを追加して安定性を調整できます。生成結果はプレビューしてMP3でダウンロードできます。