mirror of
https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI.git
synced 2026-06-05 01:10:22 +08:00
feat(audio): use PyAV instead of ffmpeg (#31)
* feat(audio): use PyAV instead of ffmpeg replaced usage of ffmpeg in favor of PyAV (`av`) * refactor(audio): store all of the audio related functions in the `infer.lib.audio` refactors previous commit to have singular functions for each task, all located in `infer.lib.audio` * fix(audio): remove downsample_audio from mdxnet.py it is no longer needed, since it's imported from infer.lib.audio * docs: remove every ffmpeg mention in the documentation to avoid confusion * chore(requirements): remove ffmpeg-python and ffmpy from all requirements * fix(audio): fix loading for UVR wrapped gathering of META info from the stream into a function fixes loading for UVR * fix(audio): use np.frombuffer() instead of direct conversion of the resampled frames this fixes traceback on preprocessing * feat(audio): pre-allocate decoded_audio array in the load_audio function this should improve performance, even if just a little * Revert "docs: remove every ffmpeg mention in the documentation to avoid confusion" This reverts commit1e05bbce03. * chore(format): run black on dev * fix(requirements): revert removal of ffmpeg in unitest.yml and Dockerfile * Revert "fix(requirements): revert removal of ffmpeg in unitest.yml and Dockerfile" This reverts commite28a0eebb2. * feat(audio): pre-allocate numpy array to store the AudioFrame data in ndarray of dtype float32 * chore(format): run black on dev * fix(audio): fix the decoded_audio size estimation in estimated_total_samples we multiply by `sr` instead of `container.streams.audio[0].rate` since we want to estimate size of the OUTPUT file, not the input one. - Added dynamic resizing, in case something goes wrong and the size of decoded_audio is estimated incorrectly Fixed function `load_audio` when the input audio's samplerate does not match the desired samplerate (`sr`) * chore(format): run black on dev * refactor(audio): remove `clean_path()` function as it serves no purpose anymore * docs: remove everything related to ffmpeg this includes everything except for formats support specification in the training_tips docs, since it has nothing to do with what ffmpeg does/did but rather what audio formats are supported (all the ones that ffmpeg supports!) * docs: fix order of the steps in preparation in the READMEs --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This commit is contained in:
@@ -130,27 +130,7 @@ v2バージョンのモデルを使用したい場合は、追加ダウンロー
|
||||
rvcmd assets/v2 # RVC-Models-Downloader command
|
||||
```
|
||||
|
||||
### 2. ffmpegツールのインストール
|
||||
`ffmpeg`と`ffprobe`がすでにインストールされている場合は、このステップをスキップできます。
|
||||
|
||||
#### Ubuntu/Debian
|
||||
```bash
|
||||
sudo apt install ffmpeg
|
||||
```
|
||||
#### MacOS
|
||||
```bash
|
||||
brew install ffmpeg
|
||||
```
|
||||
#### Windows
|
||||
ダウンロード後、ルートディレクトリに配置しましょう。
|
||||
```bash
|
||||
rvcmd tools/ffmpeg # RVC-Models-Downloader command
|
||||
```
|
||||
- [ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe)
|
||||
|
||||
- [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe)
|
||||
|
||||
### 3. RMVPE人声音高抽出アルゴリズムに必要なファイルのダウンロード
|
||||
### 2. RMVPE人声音高抽出アルゴリズムに必要なファイルのダウンロード
|
||||
|
||||
最新のRMVPE人声音高抽出アルゴリズムを使用したい場合は、音高抽出モデルをダウンロードし、`assets/rmvpe`に配置する必要があります。
|
||||
|
||||
@@ -166,7 +146,7 @@ rvcmd tools/ffmpeg # RVC-Models-Downloader command
|
||||
rvcmd assets/rmvpe # RVC-Models-Downloader command
|
||||
```
|
||||
|
||||
### 4. AMD ROCM(オプション、Linuxのみ)
|
||||
### 3. AMD ROCM(オプション、Linuxのみ)
|
||||
|
||||
AMDのRocm技術を基にLinuxシステムでRVCを実行したい場合は、まず[ここ](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)で必要なドライバをインストールしてください。
|
||||
|
||||
@@ -211,7 +191,6 @@ rvcmd packs/general/latest # RVC-Models-Downloader command
|
||||
- [VITS](https://github.com/jaywalnut310/vits)
|
||||
- [HIFIGAN](https://github.com/jik876/hifi-gan)
|
||||
- [Gradio](https://github.com/gradio-app/gradio)
|
||||
- [FFmpeg](https://github.com/FFmpeg/FFmpeg)
|
||||
- [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui)
|
||||
- [audio-slicer](https://github.com/openvpi/audio-slicer)
|
||||
- [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE)
|
||||
|
||||
@@ -1,35 +1,30 @@
|
||||
## Q1: ffmpeg error/utf8 error
|
||||
|
||||
大体の場合、ffmpeg の問題ではなく、音声パスの問題です。<br>
|
||||
ffmpeg は空白や()などの特殊文字を含むパスを読み込む際に ffmpeg error が発生する可能性があります。トレーニングセットの音声が中国語のパスを含む場合、filelist.txt に書き込む際に utf8 error が発生する可能性があります。<br>
|
||||
|
||||
## Q2: ワンクリックトレーニングが終わってもインデックスがない
|
||||
## Q1: ワンクリックトレーニングが終わってもインデックスがない
|
||||
|
||||
"Training is done. The program is closed."と表示された場合、モデルトレーニングは成功しています。その直後のエラーは誤りです。<br>
|
||||
|
||||
ワンクリックトレーニングが終了しても added で始まるインデックスファイルがない場合、トレーニングセットが大きすぎてインデックス追加のステップが停止している可能性があります。バッチ処理 add インデックスでメモリの要求が高すぎる問題を解決しました。一時的に「トレーニングインデックス」ボタンをもう一度クリックしてみてください。<br>
|
||||
|
||||
## Q3: トレーニングが終了してもトレーニングセットの音色が見えない
|
||||
## Q2: トレーニングが終了してもトレーニングセットの音色が見えない
|
||||
|
||||
音色をリフレッシュしてもう一度確認してください。それでも見えない場合は、トレーニングにエラーがなかったか、コンソールと WebUI のスクリーンショット、logs/実験名の下のログを開発者に送って確認してみてください。<br>
|
||||
|
||||
## Q4: モデルをどのように共有するか
|
||||
## Q3: モデルをどのように共有するか
|
||||
|
||||
rvc_root/logs/実験名の下に保存されている pth は、推論に使用するために共有するためのものではなく、実験の状態を保存して再現およびトレーニングを続けるためのものです。共有するためのモデルは、weights フォルダの下にある 60MB 以上の pth ファイルです。<br>
|
||||
今後、weights/exp_name.pth と logs/exp_name/added_xxx.index を組み合わせて weights/exp_name.zip にパッケージ化し、インデックスの記入ステップを省略します。その場合、zip ファイルを共有し、pth ファイルは共有しないでください。別のマシンでトレーニングを続ける場合を除きます。<br>
|
||||
logs フォルダの数百 MB の pth ファイルを weights フォルダにコピー/共有して推論に強制的に使用すると、f0、tgt_sr などのさまざまなキーが存在しないというエラーが発生する可能性があります。ckpt タブの一番下で、音高、目標オーディオサンプリングレートを手動または自動(ローカルの logs に関連情報が見つかる場合は自動的に)で選択してから、ckpt の小型モデルを抽出する必要があります(入力パスに G で始まるものを記入)。抽出が完了すると、weights フォルダに 60MB 以上の pth ファイルが表示され、音色をリフレッシュした後に使用できます。<br>
|
||||
|
||||
## Q5: Connection Error
|
||||
## Q4: Connection Error
|
||||
|
||||
コンソール(黒いウィンドウ)を閉じた可能性があります。<br>
|
||||
|
||||
## Q6: WebUI が Expecting value: line 1 column 1 (char 0)と表示する
|
||||
## Q5: WebUI が Expecting value: line 1 column 1 (char 0)と表示する
|
||||
|
||||
システムのローカルネットワークプロキシ/グローバルプロキシを閉じてください。<br>
|
||||
|
||||
これはクライアントのプロキシだけでなく、サーバー側のプロキシも含まれます(例えば autodl で http_proxy と https_proxy を設定して学術的な加速を行っている場合、使用する際には unset でオフにする必要があります)。<br>
|
||||
|
||||
## Q7: WebUI を使わずにコマンドでトレーニングや推論を行うには
|
||||
## Q6: WebUI を使わずにコマンドでトレーニングや推論を行うには
|
||||
|
||||
トレーニングスクリプト:<br>
|
||||
まず WebUI を実行し、メッセージウィンドウにデータセット処理とトレーニング用のコマンドラインが表示されます。<br>
|
||||
@@ -51,18 +46,18 @@ index_rate=float(sys.argv[7])<br>
|
||||
device=sys.argv[8]<br>
|
||||
is_half=bool(sys.argv[9])<br>
|
||||
|
||||
## Q8: Cuda error/Cuda out of memory
|
||||
## Q7: Cuda error/Cuda out of memory
|
||||
|
||||
まれに cuda の設定問題やデバイスがサポートされていない可能性がありますが、大半はメモリ不足(out of memory)が原因です。<br>
|
||||
|
||||
トレーニングの場合は batch size を小さくします(1 にしても足りない場合はグラフィックカードを変更するしかありません)。推論の場合は、config.py の末尾にある x_pad、x_query、x_center、x_max を適宜小さくします。4GB 以下のメモリ(例えば 1060(3G)や各種 2GB のグラフィックカード)は諦めることをお勧めしますが、4GB のメモリのグラフィックカードはまだ救いがあります。<br>
|
||||
|
||||
## Q9: total_epoch はどのくらいに設定するのが良いですか
|
||||
## Q8: total_epoch はどのくらいに設定するのが良いですか
|
||||
|
||||
トレーニングセットの音質が悪く、ノイズが多い場合は、20〜30 で十分です。高すぎると、ベースモデルの音質が低音質のトレーニングセットを高めることができません。<br>
|
||||
トレーニングセットの音質が高く、ノイズが少なく、長い場合は、高く設定できます。200 は問題ありません(トレーニング速度が速いので、高音質のトレーニングセットを準備できる条件がある場合、グラフィックカードも条件が良いはずなので、少しトレーニング時間が長くなることを気にすることはありません)。<br>
|
||||
|
||||
## Q10: トレーニングセットはどれくらいの長さが必要ですか
|
||||
## Q9: トレーニングセットはどれくらいの長さが必要ですか
|
||||
|
||||
10 分から 50 分を推奨します。
|
||||
音質が良く、バックグラウンドノイズが低い場合、個人的な特徴のある音色であれば、多ければ多いほど良いです。
|
||||
@@ -70,7 +65,7 @@ is_half=bool(sys.argv[9])<br>
|
||||
1 分から 2 分のデータでトレーニングに成功した人もいますが、その成功体験は他人には再現できないため、あまり参考になりません。トレーニングセットの音色が非常に特徴的である必要があります(例:高い周波数の透明な声や少女の声など)、そして音質が良い必要があります。
|
||||
1 分未満のデータでトレーニングを試みた(成功した)ケースはまだ見たことがありません。このような試みはお勧めしません。
|
||||
|
||||
## Q11: index rate は何に使うもので、どのように調整するのか(啓蒙)
|
||||
## Q10: index rate は何に使うもので、どのように調整するのか(啓蒙)
|
||||
|
||||
もしベースモデルや推論ソースの音質がトレーニングセットよりも高い場合、推論結果の音質を向上させることができますが、音色がベースモデル/推論ソースの音色に近づくことがあります。これを「音色漏れ」と言います。
|
||||
index rate は音色漏れの問題を減少させたり解決するために使用されます。1 に設定すると、理論的には推論ソースの音色漏れの問題は存在しませんが、音質はトレーニングセットに近づきます。トレーニングセットの音質が推論ソースよりも低い場合、index rate を高くすると音質が低下する可能性があります。0 に設定すると、検索ミックスを利用してトレーニングセットの音色を保護する効果はありません。
|
||||
|
||||
Reference in New Issue
Block a user