Skip to content

Latest commit

 

History

History
210 lines (178 loc) · 17.6 KB

README-JA.md

File metadata and controls

210 lines (178 loc) · 17.6 KB

Seed-VC

Hugging Face arXiv

English | 简体中文 | 日本語

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.7
  • f0-condition はソース音声のピッチを出力に条件付けするフラグ、デフォルトはFalse、歌声変換の場合はTrue
  • auto-f0-adjust はソースピッチをターゲットピッチレベルに自動調整するフラグ、デフォルトはFalse、通常は歌声変換では使用しない
  • semi-tone-shift は歌声変換のピッチシフト(半音単位)、デフォルトは0
  • checkpoint は独自のモデルをトレーニングまたはファインチューニングした場合のモデルチェックポイントへのパス、空白の場合はhuggingfaceからデフォルトモデルを自動ダウンロード(f0-conditionFalseの場合は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チュートリアルで手順を確認できます:Open In Colab

  1. 独自のデータセットを準備します。以下の条件を満たす必要があります:

    • ファイル構造は問いません
    • 各音声ファイルは1〜30秒の範囲である必要があり、それ以外は無視されます
    • すべての音声ファイルは以下のいずれかの形式である必要があります:.wav .flac .mp3 .m4a .opus .ogg
    • 話者ラベルは必須ではありませんが、各話者に少なくとも1つの発話があることを確認してください
    • もちろん、データが多いほどモデルのパフォーマンスは向上します
    • トレーニングデータはできるだけクリーンである必要があり、BGMやノイズは望ましくありません
  2. ファインチューニング用に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 歌声変換用
  3. 以下のコマンドでトレーニングを開始します:

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に設定
  1. トレーニングが予期せず停止した場合、同じコマンドを再度実行することで、最後のチェックポイントから再開できます(最新のチェックポイントを見つけられるように、run-nameconfig引数が同じであることを確認してください)。

  2. トレーニング後、チェックポイントと設定ファイルのパスを指定することで、トレーニングしたモデルを推論に使用できます。

    • これらは./runs/<run-name>/の下にあり、チェックポイントはft_model.pthという名前で、設定ファイルはトレーニング設定ファイルと同じ名前です。
    • 推論時には、ゼロショット使用時と同様に、使用したい話者の参照音声ファイルを指定する必要があります。

TODO📝

  • コードのリリース
  • 事前学習済みモデルのリリース:Hugging Face
  • Huggingfaceスペースデモ:Hugging Face
  • 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事前学習済みモデルを更新
    • コマンドライン推論スクリプトを追加
    • インストールと使用方法の説明を追加