real-time-demo.webm
(注意:この文書は機械翻訳によって生成されたものです。正確性を確保するよう努めていますが、不明確な点がございましたら英語版をご参照ください。翻訳の改善案がございましたら、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-to-checkpoint> --config <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集約型タスク(ゲーム、動画視聴など)を実行している場合、推論速度が低下する可能性があることに注意してください。
VB-CABLEを使用して、GUI出力ストリームを仮想マイクにルーティングすることができます。
(GUIとオーディオチャンキングのロジックはRVCから修正されています。素晴らしい実装に感謝します!)
カスタムデータでのファインチューニングにより、より正確に声をクローニングすることができます。特定の話者に対する話者類似性が大幅に向上しますが、WERが若干上昇する可能性があります。 以下のColabチュートリアルで手順を確認できます:
-
独自のデータセットを準備します。以下の条件を満たす必要があります:
- ファイル構造は問いません
- 各音声ファイルは1〜30秒の範囲である必要があり、それ以外は無視されます
- すべての音声ファイルは以下のいずれかの形式である必要があります:
.wav
.flac
.mp3
.m4a
.opus
.ogg
- 話者ラベルは必須ではありませんが、各話者に少なくとも1つの発話があることを確認してください
- もちろん、データが多いほどモデルのパフォーマンスは向上します
- トレーニングデータはできるだけクリーンである必要があり、BGMやノイズは望ましくありません
-
ファインチューニング用に
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
という名前で、設定ファイルはトレーニング設定ファイルと同じ名前です。 - 推論時には、ゼロショット使用時と同様に、使用したい話者の参照音声ファイルを指定する必要があります。
- これらは
- コードのリリース
- 事前学習済みモデルのリリース:
- Huggingfaceスペースデモ:
- HTMLデモページ:Demo
- ストリーミング推論
- ストリーミング推論のレイテンシー削減
- リアルタイム音声変換のデモ動画
- 歌声変換
- ソース音声のノイズ耐性
- アーキテクチャの潜在的な改善
- U-ViTスタイルのスキップ接続
- OpenAI Whisperへの入力変更
- Time as Token
- カスタムデータでのトレーニングコード
- フューショット/ワンショット話者ファインチューニング
- 歌声デコーディング用にNVIDIAのBigVGANに変更
- 歌声変換用のWhisperバージョンモデル
- 歌声変換のRVC/SoVITSとの客観的評価と比較
- 音声品質の向上
- より良い歌声変換のためのNSFボコーダ
- 非発話時のリアルタイム音声変換アーティファクトの修正(VADモデルの追加により対応)
- ファインチューニング例のColabノートブック
- 今後追加予定
- 2024-11-26:
- リアルタイム音声変換用に最適化されたv1.0 tinyバージョンの事前学習済みモデルを更新
- ワンショット/フューショットの単一/複数話者ファインチューニングをサポート
- webUIおよびリアルタイムGUIでカスタムチェックポイントの使用をサポート
- 2024-11-19:
- arXiv論文公開
- 2024-10-28:
- より良い音声品質のファインチューニングされた44k歌声変換モデルを更新
- 2024-10-27:
- リアルタイム音声変換GUIを追加
- 2024-10-25:
- 歌声変換のRVCv2との包括的な評価結果と比較を追加
- 2024-10-24:
- 音声コンテンツ入力としてOpenAI Whisperを使用した44kHz歌声変換モデルを更新
- 2024-10-07:
- 音声コンテンツエンコーダをOpenAI Whisperに変更したv0.3事前学習済みモデルを更新
- v0.3事前学習済みモデルの客観的評価結果を追加
- 2024-09-22:
- NVIDIAのBigVGANを使用する歌声変換モデルを更新し、高音域の歌声を大幅に改善
- Web UIで長い音声ファイルのチャンキングとストリーミング出力をサポート
- 2024-09-18:
- 歌声変換用のf0条件付きモデルを更新
- 2024-09-14:
- 同じ品質を達成するためのサイズ縮小と拡散ステップ数の削減、およびプロソディ保持の制御能力を追加したv0.2事前学習済みモデルを更新
- コマンドライン推論スクリプトを追加
- インストールと使用方法の説明を追加