(注意:この文書は機械翻訳によって生成されたものです。正確性を確保するよう努めていますが、不明確な点がございましたら英語版をご参照ください。翻訳の改善案がございましたら、PRを歓迎いたします。)
現在リリースされているモデルは、ゼロショット音声変換 🔊、ゼロショットリアルタイム音声変換 🗣️、ゼロショット歌声変換 🎶 に対応しています。トレーニングなしで、1〜30秒の参照音声からボイスクローニングが可能です。
カスタムデータでの追加ファインチューニングをサポートしており、特定の話者/話者群に対するパフォーマンスを向上させることができます。データ要件は極めて少なく(話者あたり最低1発話)、トレーニング速度も非常に速い(最低100ステップ、T4で2分)です!
リアルタイム音声変換に対応しており、アルゴリズムの遅延は約300ms、デバイス側の遅延は約100msで、オンライン会議、ゲーム、ライブ配信に適しています。
デモや以前の音声変換モデルとの比較については、デモページ🌐と評価📊をご覧ください。
モデルの品質向上と機能追加を継続的に行っています。
客観的評価結果と他のベースラインとの比較についてはEVAL.mdをご覧ください。
Windows または Linux で Python 3.10 を推奨します。
pip install -r requirements.txt
目的に応じて3つのモデルをリリースしています:
| バージョン | 名称 | 目的 | サンプリングレート | コンテンツエンコーダ | ボコーダ | 隠れ次元 | レイヤー数 | パラメータ数 | 備考 |
|---|---|---|---|---|---|---|---|---|---|
| v1.0 | seed-uvit-tat-xlsr-tiny (🤗📄) | 音声変換 (VC) | 22050 | XLSR-large | HIFT | 384 | 9 | 25M | リアルタイム音声変換に適しています |
| v1.0 | seed-uvit-whisper-small-wavenet (🤗📄) | 音声変換 (VC) | 22050 | Whisper-small | BigVGAN | 512 | 13 | 98M | オフライン音声変換に適しています |
| v1.0 | seed-uvit-whisper-base (🤗📄) | 歌声変換 (SVC) | 44100 | Whisper-small | BigVGAN | 768 | 17 | 200M | 強力なゼロショットパフォーマンス、歌声変換 |
最新のモデルリリースのチェックポイントは、最初の推論実行時に自動的にダウンロードされます。
ネットワークの理由でhuggingfaceにアクセスできない場合は、すべてのコマンドの前に HF_ENDPOINT=https://hf-mirror.com を追加してミラーを使用してください。
コマンドライン推論:
python inference.py --source <source-wav>
--target <referene-wav>
--output <output-dir>
--diffusion-steps 25 # 歌声変換には30〜50を推奨
--length-adjust 1.0
--inference-cfg-rate 0.7
--f0-condition False # 歌声変換の場合はTrueに設定
--auto-f0-adjust False # ソースピッチをターゲットピッチレベルに自動調整する場合はTrue、通常は歌声変換では使用しない
--semi-tone-shift 0 # 歌声変換のピッチシフト(半音単位)
--checkpoint <path-to-checkpoint>
--config <path-to-config>
--fp16 True
各パラメータの説明:
source は変換したい音声ファイルのパスtarget は参照音声ファイルのパスoutput は出力ディレクトリのパスdiffusion-steps は拡散ステップ数、デフォルトは25、最高品質には30-50、最速推論には4-10を使用length-adjust は長さ調整係数、デフォルトは1.0、<1.0で音声短縮、>1.0で音声伸長inference-cfg-rate は出力に微妙な違いをもたらす、デフォルトは0.7f0-condition はソース音声のピッチを出力に条件付けするフラグ、デフォルトはFalse、歌声変換の場合はTrueauto-f0-adjust はソースピッチをターゲットピッチレベルに自動調整するフラグ、デフォルトはFalse、通常は歌声変換では使用しないsemi-tone-shift は歌声変換のピッチシフト(半音単位)、デフォルトは0checkpoint は独自のモデルをトレーニングまたはファインチューニングした場合のモデルチェックポイントへのパス、空白の場合はhuggingfaceからデフォルトモデルを自動ダウンロード(f0-conditionがFalseの場合はseed-uvit-whisper-small-wavenet、それ以外はseed-uvit-whisper-base)config は独自のモデルをトレーニングまたはファインチューニングした場合のモデル設定へのパス、空白の場合はhuggingfaceからデフォルト設定を自動ダウンロードfp16 はfloat16推論を使用するフラグ、デフォルトはTrue音声変換Web UI:
python app_vc.py --checkpoint <path-to-checkpoint> --config <path-to-config> --fp16 True
checkpoint は独自のモデルをトレーニングまたはファインチューニングした場合のモデルチェックポイントへのパス、空白の場合はhuggingfaceからデフォルトモデルを自動ダウンロード(seed-uvit-whisper-small-wavenet)config は独自のモデルをトレーニングまたはファインチューニングした場合のモデル設定へのパス、空白の場合はhuggingfaceからデフォルト設定を自動ダウンロードブラウザでhttp://localhost:7860/にアクセスしてWebインターフェースを使用できます。
歌声変換Web UI:
python app_svc.py --checkpoint <path-to-checkpoint> --config <path-to-config> --fp16 True
checkpoint は独自のモデルをトレーニングまたはファインチューニングした場合のモデルチェックポイントへのパス、空白の場合はhuggingfaceからデフォルトモデルを自動ダウンロード(seed-uvit-whisper-base)config は独自のモデルをトレーニングまたはファインチューニングした場合のモデル設定へのパス、空白の場合はhuggingfaceからデフォルト設定を自動ダウンロード統合Web UI:
python app.py
これはゼロショット推論用の事前学習済みモデルのみを読み込みます。カスタムチェックポイントを使用する場合は、上記のapp_vc.pyまたはapp_svc.pyを実行してください。
リアルタイム音声変換GUI:
python real-time-gui.py --checkpoint-path <path-to-checkpoint> --config-path <path-to-config>
checkpoint は独自のモデルをトレーニングまたはファインチューニングした場合のモデルチェックポイントへのパス、空白の場合はhuggingfaceからデフォルトモデルを自動ダウンロード(seed-uvit-tat-xlsr-tiny)config は独自のモデルをトレーニングまたはファインチューニングした場合のモデル設定へのパス、空白の場合はhuggingfaceからデフォルト設定を自動ダウンロード重要:リアルタイム音声変換にはGPUの使用を強く推奨します。 NVIDIA RTX 3060ノートパソコンGPUでいくつかのパフォーマンステストを行い、結果と推奨パラメータ設定を以下に示します:
| モデル構成 | 拡散ステップ | 推論CFGレート | 最大プロンプト長 | ブロック時間 (秒) | クロスフェード長 (秒) | 追加コンテキスト (左) (秒) | 追加コンテキスト (右) (秒) | レイテンシ (ミリ秒) | チャンクあたりの推論時間 (ミリ秒) |
|---|---|---|---|---|---|---|---|---|---|
| seed-uvit-xlsr-tiny | 10 | 0.7 | 3.0 | 0.18 | 0.04 | 2.5 | 0.02 | 430 | 150 |
GUIでパラメータを自身のデバイスのパフォーマンスに合わせて調整できます。推論時間がブロック時間より短ければ、音声変換ストリームは正常に動作するはずです。 他のGPU集約型タスク(ゲーム、動画視聴など)を実行している場合、推論速度が低下する可能性があることに注意してください。
リアルタイム音声変換GUIのパラメータ説明:
Diffusion Steps は拡散ステップ数、リアルタイム変換の場合は通常4~10で最速推論Inference CFG Rate は出力に微妙な違いをもたらす、デフォルトは0.7、0.0に設定すると1.5倍の推論速度が向上Max Prompt Length は最大プロンプト長、設定を低くすると推論速度が速くなるが、提示音声との類似性が低下する可能性があるBlock Time は推論の各オーディオ チャンクの時間長です。値が大きいほどレイテンシが長くなります。この値はブロックあたりの推論時間よりも長くする必要があることに注意してください。ハードウェアの状態に応じて設定します。Crossfade Length はクロスフェード長、通常は変更しないExtra context (left) は推論のための追加履歴コンテキストの時間長です。値が高いほど推論時間は長くなりますが、安定性は向上します。Extra context (right) は推論のための追加未来コンテキストの時間長です。値が高いほど推論時間とレイテンシは長くなりますが、安定性は向上します。アルゴリズムレイテンシーはBlock Time * 2 + Extra context (right)で、デバイス側レイテンシーは通常100ms程度です。全体の遅延は 2 つの合計です。
VB-CABLEを使用して、GUI出力ストリームを仮想マイクにルーティングすることができます。
(GUIとオーディオチャンキングのロジックはRVCから修正されています。素晴らしい実装に感謝します!)
カスタムデータでのファインチューニングにより、より正確に声をクローニングすることができます。特定の話者に対する話者類似性が大幅に向上しますが、WERが若干上昇する可能性があります。
以下のColabチュートリアルで手順を確認できます:
独自のデータセットを準備します。以下の条件を満たす必要があります:
.wav .flac .mp3 .m4a .opus .oggファインチューニング用にconfigs/presets/からモデル設定ファイルを選択するか、ゼロからトレーニングするための独自の設定を作成します。
./configs/presets/config_dit_mel_seed_uvit_xlsr_tiny.yml リアルタイム音声変換用./configs/presets/config_dit_mel_seed_uvit_whisper_small_wavenet.yml オフライン音声変換用./configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml 歌声変換用以下のコマンドでトレーニングを開始します:
python train.py --config <path-to-config> --dataset-dir <path-to-data> --run-name <run-name> --batch-size 2 --max-steps 1000 --max-epochs 1000 --save-every 500 --num-workers 0
各パラメータの説明:
config はモデル設定へのパス、ファインチューニング用に上記のいずれかを選択するか、ゼロからトレーニングする場合は独自の設定を作成dataset-dir はデータセットディレクトリへのパス、すべての音声ファイルを含むフォルダである必要がありますrun-name は実行名で、モデルチェックポイントとログの保存に使用されますbatch-size はトレーニング用のバッチサイズで、GPUメモリに応じて選択しますmax-steps は最大トレーニングステップ数で、データセットサイズとトレーニング時間に応じて選択しますmax-epochs は最大エポック数で、データセットサイズとトレーニング時間に応じて選択しますsave-every はモデルチェックポイントを保存するステップ間隔num-workers はデータ読み込みのワーカー数、Windowsの場合は0に設定トレーニングが予期せず停止した場合、同じコマンドを再度実行することで、最後のチェックポイントから再開できます(最新のチェックポイントを見つけられるように、run-nameとconfig引数が同じであることを確認してください)。
トレーニング後、チェックポイントと設定ファイルのパスを指定することで、トレーニングしたモデルを推論に使用できます。
./runs/<run-name>/の下にあり、チェックポイントはft_model.pthという名前で、設定ファイルはトレーニング設定ファイルと同じ名前です。