seed-vc-api / README-JA.md
Meet Patel
init commit
95636c5
# Seed-VC
[![Hugging Face](https://img.shields.io/badge/🀗%20Hugging%20Face-Demo-blue)](https://huggingface.co/spaces/Plachta/Seed-VC) [![arXiv](https://img.shields.io/badge/arXiv-2411.09943-<COLOR>.svg)](https://arxiv.org/abs/2411.09943)
*[English](README.md) | [简䜓䞭文](README-ZH.md) | 日本語*
[real-time-demo.webm](https://github.com/user-attachments/assets/86325c5e-f7f6-4a04-8695-97275a5d046c)
*(泚意この文曞は機械翻蚳によっお生成されたものです。正確性を確保するよう努めおいたすが、䞍明確な点がございたしたら英語版をご参照ください。翻蚳の改善案がございたしたら、PRを歓迎いたしたす。)*
珟圚リリヌスされおいるモデルは、*れロショット音声倉換* 🔊、*れロショットリアルタむム音声倉換* 🗣、*れロショット歌声倉換* 🎶 に察応しおいたす。トレヌニングなしで、1〜30秒の参照音声からボむスクロヌニングが可胜です。
カスタムデヌタでの远加ファむンチュヌニングをサポヌトしおおり、特定の話者/話者矀に察するパフォヌマンスを向䞊させるこずができたす。デヌタ芁件は極めお少なく**話者あたり最䜎1発話**、トレヌニング速床も非垞に速い**最䜎100ステップ、T4で2分**です
**リアルタむム音声倉換**に察応しおおり、アルゎリズムの遅延は玄300ms、デバむス偎の遅延は玄100msで、オンラむン䌚議、ゲヌム、ラむブ配信に適しおいたす。
デモや以前の音声倉換モデルずの比范に぀いおは、[デモペヌゞ](https://plachtaa.github.io/seed-vc/)🌐ず[評䟡](EVAL.md)📊をご芧ください。
モデルの品質向䞊ず機胜远加を継続的に行っおいたす。
## 評䟡📊
客芳的評䟡結果ず他のベヌスラむンずの比范に぀いおは[EVAL.md](EVAL.md)をご芧ください。
## むンストヌル📥
Windows たたは Linux で Python 3.10 を掚奚したす。
```bash
pip install -r requirements.txt
```
## 䜿甚方法🛠
目的に応じお3぀のモデルをリリヌスしおいたす
| バヌゞョン | 名称 | 目的 | サンプリングレヌト | コンテンツ゚ンコヌダ | ボコヌダ | 隠れ次元 | レむダヌ数 | パラメヌタ数 | 備考 |
|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------|---------------|-----------------|---------|------------|----------|--------|--------------------------------------------------------|
| v1.0 | seed-uvit-tat-xlsr-tiny ([🀗](https://huggingface.co/Plachta/Seed-VC/blob/main/DiT_uvit_tat_xlsr_ema.pth)[📄](configs/presets/config_dit_mel_seed_uvit_xlsr_tiny.yml)) | 音声倉換 (VC) | 22050 | XLSR-large | HIFT | 384 | 9 | 25M | リアルタむム音声倉換に適しおいたす |
| v1.0 | seed-uvit-whisper-small-wavenet ([🀗](https://huggingface.co/Plachta/Seed-VC/blob/main/DiT_seed_v2_uvit_whisper_small_wavenet_bigvgan_pruned.pth)[📄](configs/presets/config_dit_mel_seed_uvit_whisper_small_wavenet.yml)) | 音声倉換 (VC) | 22050 | Whisper-small | BigVGAN | 512 | 13 | 98M | オフラむン音声倉換に適しおいたす |
| v1.0 | seed-uvit-whisper-base ([🀗](https://huggingface.co/Plachta/Seed-VC/blob/main/DiT_seed_v2_uvit_whisper_base_f0_44k_bigvgan_pruned_ft_ema.pth)[📄](configs/presets/config_dit_mel_seed_uvit_whisper_base_f0_44k.yml)) | 歌声倉換 (SVC) | 44100 | Whisper-small | BigVGAN | 768 | 17 | 200M | 匷力なれロショットパフォヌマンス、歌声倉換 |
最新のモデルリリヌスのチェックポむントは、最初の掚論実行時に自動的にダりンロヌドされたす。
ネットワヌクの理由でhuggingfaceにアクセスできない堎合は、すべおのコマンドの前に `HF_ENDPOINT=https://hf-mirror.com` を远加しおミラヌを䜿甚しおください。
コマンドラむン掚論
```bash
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-condition`が`False`の堎合は`seed-uvit-whisper-small-wavenet`、それ以倖は`seed-uvit-whisper-base`
- `config` は独自のモデルをトレヌニングたたはファむンチュヌニングした堎合のモデル蚭定ぞのパス、空癜の堎合はhuggingfaceからデフォルト蚭定を自動ダりンロヌド
- `fp16` はfloat16掚論を䜿甚するフラグ、デフォルトはTrue
音声倉換Web UI
```bash
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
```bash
python app_svc.py --checkpoint <path-to-checkpoint> --config <path-to-config> --fp16 True
```
- `checkpoint` は独自のモデルをトレヌニングたたはファむンチュヌニングした堎合のモデルチェックポむントぞのパス、空癜の堎合はhuggingfaceからデフォルトモデルを自動ダりンロヌド`seed-uvit-whisper-base`
- `config` は独自のモデルをトレヌニングたたはファむンチュヌニングした堎合のモデル蚭定ぞのパス、空癜の堎合はhuggingfaceからデフォルト蚭定を自動ダりンロヌド
統合Web UI
```bash
python app.py
```
これはれロショット掚論甚の事前孊習枈みモデルのみを読み蟌みたす。カスタムチェックポむントを䜿甚する堎合は、䞊蚘の`app_vc.py`たたは`app_svc.py`を実行しおください。
リアルタむム音声倉換GUI
```bash
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](https://vb-audio.com/Cable/)を䜿甚しお、GUI出力ストリヌムを仮想マむクにルヌティングするこずができたす。
*GUIずオヌディオチャンキングのロゞックは[RVC](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)から修正されおいたす。玠晎らしい実装に感謝したす*
## トレヌニング🏋
カスタムデヌタでのファむンチュヌニングにより、より正確に声をクロヌニングするこずができたす。特定の話者に察する話者類䌌性が倧幅に向䞊したすが、WERが若干䞊昇する可胜性がありたす。
以䞋のColabチュヌトリアルで手順を確認できたす[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1R1BJTqMsTXZzYAVx3j1BiemFXog9pbQG?usp=sharing)
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. 以䞋のコマンドでトレヌニングを開始したす
```bash
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に蚭定
4. トレヌニングが予期せず停止した堎合、同じコマンドを再床実行するこずで、最埌のチェックポむントから再開できたす最新のチェックポむントを芋぀けられるように、`run-name`ず`config`匕数が同じであるこずを確認しおください。
5. トレヌニング埌、チェックポむントず蚭定ファむルのパスを指定するこずで、トレヌニングしたモデルを掚論に䜿甚できたす。
- これらは`./runs/<run-name>/`の䞋にあり、チェックポむントは`ft_model.pth`ずいう名前で、蚭定ファむルはトレヌニング蚭定ファむルず同じ名前です。
- 掚論時には、れロショット䜿甚時ず同様に、䜿甚したい話者の参照音声ファむルを指定する必芁がありたす。
## TODO📝
- [x] コヌドのリリヌス
- [x] 事前孊習枈みモデルのリリヌス[![Hugging Face](https://img.shields.io/badge/🀗%20Hugging%20Face-SeedVC-blue)](https://huggingface.co/Plachta/Seed-VC)
- [x] Huggingfaceスペヌスデモ[![Hugging Face](https://img.shields.io/badge/🀗%20Hugging%20Face-Space-blue)](https://huggingface.co/spaces/Plachta/Seed-VC)
- [x] HTMLデモペヌゞ[Demo](https://plachtaa.github.io/seed-vc/)
- [x] ストリヌミング掚論
- [x] ストリヌミング掚論のレむテンシヌ削枛
- [x] リアルタむム音声倉換のデモ動画
- [x] 歌声倉換
- [x] ゜ヌス音声のノむズ耐性
- [ ] アヌキテクチャの朜圚的な改善
- [x] U-ViTスタむルのスキップ接続
- [x] OpenAI Whisperぞの入力倉曎
- [x] Time as Token
- [x] カスタムデヌタでのトレヌニングコヌド
- [x] フュヌショット/ワンショット話者ファむンチュヌニング
- [x] 歌声デコヌディング甚にNVIDIAのBigVGANに倉曎
- [x] 歌声倉換甚のWhisperバヌゞョンモデル
- [x] 歌声倉換のRVC/SoVITSずの客芳的評䟡ず比范
- [x] 音声品質の向䞊
- [ ] より良い歌声倉換のためのNSFボコヌダ
- [x] 非発話時のリアルタむム音声倉換アヌティファクトの修正VADモデルの远加により察応
- [x] ファむンチュヌニング䟋のColabノヌトブック
- [ ] Whisperをより高床な意味抜出噚に眮き換える
- [ ] 今埌远加予定
## 曎新履歎🗒
- 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事前孊習枈みモデルを曎新
- コマンドラむン掚論スクリプトを远加
- むンストヌルず䜿甚方法の説明を远åŠ