🚀 OuteTTS Version 1.0
このアップデートでは、音声合成とボイスクローニングに大きな改善がもたらされ、コンパクトなサイズでより強力で正確かつ使いやすい体験を提供します。
🚀 クイックスタート
インストール
🔗 インストール手順
基本的な使用法
import outetts
interface = outetts.Interface(
config=outetts.ModelConfig.auto_config(
model=outetts.Models.VERSION_1_0_SIZE_1B,
backend=outetts.Backend.LLAMACPP,
quantization=outetts.LlamaCppQuantization.FP16
)
)
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")
output = interface.generate(
config=outetts.GenerationConfig(
text="Hello, how are you doing?",
generation_type=outetts.GenerationType.CHUNKED,
speaker=speaker,
sampler_config=outetts.SamplerConfig(
temperature=0.4
),
)
)
output.save("output.wav")
詳細な設定オプション
高度な設定やカスタマイズについては、公式リポジトリを参照してください。
🔗 interface_usage.md
✨ 主な機能
新機能
1. プロンプトの見直しと依存関係の削除
- 自動単語アラインメント:モデルは内部で単語のアラインメントを行います。生のテキストを入力するだけで、前処理は必要ありません。最適な結果を得るには、改行のない正規化された読みやすいテキストを使用してください(outettsライブラリで自動的に軽度の正規化が適用されます)。
- ネイティブな多言語テキストサポート:複数の言語のネイティブテキストを直接サポートするため、ローマ字化は必要ありません。
- 強化されたメタデータ統合:更新されたプロンプトシステムは、グローバルおよび単語レベルで追加のメタデータ(時間、エネルギー、スペクトル重心、ピッチ)を組み込み、話者の流れと合成品質を向上させます。
- オーディオコードブック用の特殊トークン:c1(コードブック1)とc2(コードブック2)用の新しいトークンが追加されました。
2. 新しいオーディオエンコーダモデル
- DACエンコーダ:ibm-research/DAC.speech.v1.0のDACオーディオエンコーダを統合し、2つのコードブックを利用して高品質のオーディオを再構築します。
- パフォーマンスのトレードオフ:オーディオの忠実度が向上し、トークン生成速度が毎秒75トークンから150トークンに増加します。このトレードオフは、特に多言語アプリケーションで品質を優先します。
3. ボイスクローニング
- ワンショットボイスクローニング:ワンショットクローニングを実現するために、モデルは通常、約10秒の参照オーディオのみで正確な音声表現を生成できます。
- 精度の向上:新しいエンコーダと追加のトレーニングメタデータにより、ボイスクローニングがより自然で正確になりました。
4. 自動テキストアラインメントと数値サポート
- 自動テキストアラインメント:前処理されたトレーニングデータから得た知見を利用して、生のテキストを単語レベルでアラインメントします。日本語や中国語など、明確な境界がない言語でも機能します。
- 直接的な数値入力:組み込みの多言語数値サポートにより、プロンプトで直接数値を使用できます。テキスト変換は必要ありません。(モデルは通常、存在する主要な言語を選択します。単一のプロンプトで言語を混合すると、誤りが発生する可能性があります。)
マルチリンガル機能
- サポートされる言語:OuteTTSは、トレーニングデータの露出に基づいて、複数の言語でさまざまなレベルの能力を提供します。
- 大量のトレーニングデータがある言語:英語、アラビア語、中国語、オランダ語、フランス語、ドイツ語、イタリア語、日本語、韓国語、リトアニア語、ロシア語、スペイン語
- 適度なトレーニングデータがある言語:ポルトガル語、ベラルーシ語、ベンガル語、グルジア語、ハンガリー語、ラトビア語、ペルシャ語、ポーランド語、スワヒリ語、タミル語、ウクライナ語
- サポートされていない言語:モデルはトレーニングされていない言語でも音声を生成できますが、結果は最適ではない場合があります。未リストの言語を試してみてください。
📦 インストール
🔗 インストール手順
💻 使用例
基本的な使用法
import outetts
interface = outetts.Interface(
config=outetts.ModelConfig.auto_config(
model=outetts.Models.VERSION_1_0_SIZE_1B,
backend=outetts.Backend.LLAMACPP,
quantization=outetts.LlamaCppQuantization.FP16
)
)
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")
output = interface.generate(
config=outetts.GenerationConfig(
text="Hello, how are you doing?",
generation_type=outetts.GenerationType.CHUNKED,
speaker=speaker,
sampler_config=outetts.SamplerConfig(
temperature=0.4
),
)
)
output.save("output.wav")
高度な使用法
高度な設定やカスタマイズについては、公式リポジトリを参照してください。
🔗 interface_usage.md
📚 ドキュメント
使用上の推奨事項
話者参照
モデルは話者参照とともに使用することを想定しています。話者参照がない場合、ランダムな声の特性が生成され、出力品質が低下することがあります。モデルは参照された話者の感情、スタイル、アクセントを引き継ぎます。同じ話者で他の言語に文字起こしする場合、モデルが元のアクセントを保持することがあります。
最適なオーディオ長
- 最良のパフォーマンス:一度に約42秒(約8,192トークン)のオーディオを生成することをお勧めします。生成時にこのウィンドウの上限に近づかないようにしてください。通常、7,000トークンまでが最良の結果をもたらします。
- 話者参照によるコンテキストの削減:話者参照が10秒の場合、有効なコンテキストは約32秒に減少します。
温度設定の推奨事項
テストによると、温度0.4は精度のための理想的な開始点です(以下のサンプリング設定を使用)。ただし、一部の音声参照では、表現力を高めるためにより高い温度、またはより正確な音声複製のためにわずかに低い温度が有効な場合があります。
話者エンコーディングの検証
クローンされた音声の品質が低い場合、エンコードされた話者サンプルを確認してください。
interface.decode_and_save_speaker(speaker=your_speaker, path="speaker.wav")
DACオーディオ再構築モデルは損失があるため、クリッピング、過度の音量、または異常な声の特徴を持つサンプルは、エンコーディングの問題を引き起こし、出力品質に影響を与える可能性があります。
サンプリング設定
このTTSモデルで最適な結果を得るには、以下のサンプリング設定を使用してください。
パラメータ |
値 |
温度 |
0.4 |
繰り返しペナルティ |
1.1 |
繰り返し範囲 |
64 |
トップk |
40 |
トップp |
0.9 |
最小p |
0.05 |
本番環境または高品質が必要な場合は、最良の結果を得るためにllama.cppを使用することを強くお勧めします。
モデル仕様
- トレーニングデータ:約60,000時間のオーディオでトレーニングされています。
- コンテキスト長:最大8,192トークンのコンテキストウィンドウをサポートしています。
トレーニングパラメータ
事前トレーニング
- オプティマイザ:AdamW
- バッチサイズ:100万トークン
- 最大学習率:3e-4
- 最小学習率:3e-5
- コンテキスト長:8192
ファインチューニング
- オプティマイザ:AdamW
- 最大学習率:1e-5
- 最小学習率:5e-6
- データ:10,000個の多様な高品質のサンプル
🔧 技術詳細
このモデルは、異なるバックエンドでのサンプリングに関する重要な考慮事項があります。OuteTTS Version 1.0は複数のバックエンドをサポートしていますが、各バックエンドはサンプリングを異なる方法で処理します。デフォルトでは、llama.cppが最も信頼性が高く、一貫した出力品質を提供します。最適な結果を得るために、このモデルではllama.cppバックエンドを使用することをお勧めします。
また、指定された設定ここでモデルを使用することを強くお勧めします。これらの設定から逸脱すると、低品質または破損した出力につながる可能性があります。この問題は主に、異なるバックエンドが繰り返しペナルティを実装する方法に起因しています。このモデルは、ウィンドウ方式(64トークンのウィンドウを使用)で最適に動作し、ペナルティは最近のトークンにのみ適用され、コンテキストウィンドウ全体には適用されません。
Llama.cppとEXL2はこのようなサンプリングをサポートしていますが、Transformersはサポートしていません。この問題を解決するために、OuteTTSライブラリのHugging Face Transformersバックエンドにウィンドウ式繰り返しペナルティを実装しました。これにより、出力品質が大幅に向上し、サンプリングの問題が解消され、llama.cppと同等の結果が得られます。この調整がない場合、出力品質は大幅に低下する可能性があります。
もし、パフォーマンスを向上させる代替サンプリング設定を見つけた場合は、OuteTTS GitHubで問題を開いて、あなたの発見を共有してください。
📄 ライセンス
謝辞
倫理的な使用ガイドライン
このテキスト読み上げモデルは、アクセシビリティ、創造性、コミュニケーションを向上させる合法的なアプリケーションを目的としています。許可なしのなりすまし、意図的に誤解を招くコンテンツの作成、有害または嫌がらせ的な素材の生成、適切な開示なしの合成音声の配布、許可なしのボイスクローニング、および適用される法律、規制、または著作権に違反するすべての使用は禁止されています。