【導入】
・この記事の最終目標は「リアルタイム変換でずんだもんボイスになってDiscordで通話する」です。
・大まかな記事の流れは「RVCで学習モデルを作る」→「学習モデルをVC Clientに入れる」→「リアルタイムボイチェン完成!」です。
・「RVC」という超凄い非リアルタイム音声変換ソフトが話題になったと思ったら、翌日に「VC Client」という超凄いソフトがリアルタイム音声変換に対応したのを聞いたので、急いで記事を書きました。
・この記事ではずんだもんボイスになることを目標としていますが、学習先の音声さえあればどんな音声にもなれます。
【手順】
①~RVCのダウンロード~
・以下のURLを開いて、「RVC-beta.7z」をDLします。(要Hugging Faceアカウント)(Hugging Faceアカウントを持ってない人は無料なので作りましょう)
https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/RVC-beta.7z
追記:RVCに学習速度改善のアップデートが入りました。最新版はこちらからDL↓
Release 20230410updated · liujing04/Retrieval-based-Voice-Conversion-WebUI · GitHub
・DLした「RVC-beta.7z」を解凍して、「RVC-beta」フォルダ直下の「go-web.bat」を開きます。
しばらくすると機械学習のブラウザタブが立ち上がります。
追記:「RVC-betaフォルダは」Cドライブ直下に置くことを強くお勧めします。デスクトップに置くとエラーが出やすいです。
↓
②~RVCでの作業~
・まず、「训练」タブを開きます。
・step1の、左上の「输入实验名」(モデルの出力ファイル名)を任意の名前にします。
※チュートリアル:ここでは「ZundaModel」という名前にしてみる
・step2aの、「输入训练文件夹路径」に「学習したい音声データがある場所のパス名」を入力します。(例:C:\ZundamonVoice など)
→ずんだもんボイスになりたい場合は、ずんだもんのボイスを100個用意しましょう。
※チュートリアル:ずんだもんのボイスを100個用意する場合、機械学習で使える音声データセットを無料でDLできる「研究者向けマルチモーダルデータベース」がオススメです。
下記サイトにtwitterでログインしてから「ITAコーパスマルチモーダルデータベース→ずんだもんボイスデータ」ボタンを押すと、ずんだもんの音声をDLできます。感謝の極み…
https://zunko.jp/multimodal_dev/login.php
→ダウンロードしたら、「zundamon_voice_data\emotion\normal」に通常のずんだもんのボイスデータが大量に入っています。この工程ではそのフォルダの場所のパスを指定すると良いでしょう。
・step2bの、真ん中の「提取音高使用的CPU进程数」を見る。
この数値を自分のCPUスレッド数と同じになるように設定する。
(自分のCPUスレッド数は、Ctrl+Shift+Escキーを押してタスクマネージャーを開く→パフォーマンスの欄を開く→論理プロセッサ数:〇〇で確認することができます)
(もしイマイチ分からなければ12に変更しましょう)
・step3の数値を調整する。
保存频率 save_every_epoch→学習データの途中経過を保存する間隔。5のままでいい。お好みで変えていい。
总训练轮数 total_epoch→総学習量。初めての学習なら10で良い。個人的には30ぐらいにするとガッツリ学習できて使える音質になると思う。
batch_size→4でいい。大きいと学習が早くなるけど、大きすぎるとメモリが足りなくなって止まる。
(数字が見えないときは、サイトの拡大率を下げると治ることがあります)
・最後に、右下にある大きなオレンジのボタン「一鍵训练」を押す。これでモデルの学習が開始される。
→途中で「Pythonにこれらのネットワーク上での通信を許可する」ポップアップが出てくることがあるけど、別にキャンセルボタンを押してもいい。キャンセルしてもちゃんと学習されます。
・学習モデルは「RVC-beta\weights」フォルダ直下に出力される。
このときの学習モデルのファイルの場所を覚えておいてください。後ほど使います。
※チュートリアル:「ZundaModel.pth」というファイルが出力されている。
↓
③~VC Clientをダウンロードしよう~
・RVC対応のVC Clientをダウンロードします。以下のURLを開いてください。
https://github.com/w-okada/voice-changer
スクロール(またはCtrl+Fで検索)して、以下のダウンロードリンクをクリックしてください。
今回使うのはサポートVCの欄に「RVC」が含まれているバージョンです。
・link「通常」ボタンを押すと「MMVCServerSIO_win_~~」というファイルがDLされるので、解凍します。
「MMVCServerSIO_win_~~」というファイルの下に、「MMVCServerSIO」というフォルダがあります。
以下、このフォルダをメインに進めていきます。
・以下のURLから「hubert_base.pt」をダウンロードします。
https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/hubert_base.pt
その後、「hubert_base.pt」を「MMVCServerSIO」フォルダ直下に入れます。
・「MMVCServerSIO」フォルダ直下にある「start_http_RVC.bat」を開きます。
→このとき、「mmvcserversio.exeにこれらのネットワーク上での通信を許可する」:というポップアップが出てくるので、アクセスを許可しましょう。
→何度か「start_http_RVC.bat」を開くと、クライアントが起動するはずです。(もし起動しなければブラウザで「http://localhost:18888/?modelType=RVC」を開いてください)
以下、このとき開いたクライアントをメインにして進めていきます。
・クライアントには「VC Client for RVC」「License」「Server Control」などの文字が出ていると思います。
・上から二番目の「Model Setting」の欄を見て、右側にある「select」ボタンを押します。
その後、RVCで作った学習モデル(pthファイル)を選択します。(「RVC-beta\weights」に学習モデル.pthが置いてあります。)
※チュートリアル:上記で作った学習モデル「ZundaModel.pth」を選択します。
・そして、「select」ボタンの下にある「upload」ボタンを押して、学習モデルを登録します。(忘れがち)
(uploadすると、一番上のServer Controlの欄の「Model Info:」の部分に「モデル名.pth」が表示されます。)
・Device Settingの欄を見て、
「AudioInput」「AudioOutput」の欄を埋めます。
※Discordで初めてボイチェンを使う場合、仮想オーディオをインストールしよう。(VB-CABLE Virtual Audio Deviceがオススメ)
→参考URL:https://xrcloud.jp/blog/articles/business/4709/ これを参考にインストールを済ませる。
→クライアントに戻ってきて、Device Settingの「AudioInput」に実機マイク、「AudioOutput」に「CABLE 〇〇」を指定する。
→Discordの入力デバイスに「CABLE 〇〇」を指定する。これでDiscordでボイチェンボイスが乘るようになります。
・Speaker Settingの欄を見て、
Tuningの値を調整することでピッチを変更することができる。
※チュートリアル:男性の声からずんだもんの声にする場合、Tuningを14~15にして、predict f0をオンにすると丁度良くなった。(個人差)
・以上で設定は完了です。
あとは一番上に戻ってServer Controlの欄を見て、
Startボタンを押してリアルタイムボイチェンを開始しましょう。
お疲れ様でした。
【参考元】
・yasyune様の、RVCの使い方の解説記事(めちゃめちゃ分かりやすいです!)
https://twitter.com/yasyune1023/status/1643525933733924864
各方面に多大なる感謝を…。
~~~~
追記:皆さんからいただいたエラーと解決策を以下に残しておきます。
★汎用:エラーが出たら、まずは以下の手順を行ってください。6割方これで直ります。
①本体の「RVC-beta」フォルダや学習元音声のフォルダをCドライブ直下(またはDドライブ直下)に置く
②学習元音声などのファイル名やフォルダ名は、日本語や半角英数字のみを使う。
半角スペースも使わないほうがいい。アンダーバーに変えましょう。
~~
★VC Clientで、ボイチェンしながらループバックで自分の声を確認したい!
これは以下の2通りの方法があります。(自分の環境では動作チェックしていません)
①仮想オーディオ「VB-CABLE Virtual Audio Device」を使っている場合、
システムの「サウンド」→「録音」タブ→「CABLE Output」の「プロパティ」→「聴く」タブ→「このデバイスを聴く」にチェックを入れる。
②VoiceMeeterをかませて、ループバックを設定する。(ただし遅延が少し増えるらしいです)
~~
★VC Clientのほうでエラーが出る or VC Clientの学習結果がおかしい
・half-precisionがオフになっていることを確認してください。(よくあるエラー)
・モデルを選択した後に「upload」ボタンを押し忘れているかも。(よくあるエラー)
~~
★RVCで「ポートが使用中です(要約)」みたいなエラーが出る!
①「RVC-beta\infer-web.py」をメモ帳などで開きます。
②一番下の行の「server_port=7865」の部分を適当な数値に書き換えます。(9865など)
これでRVCの使用ポートを変更することができ、エラーを回避できます。
~~
★RVCで、『FileNotFoundError:指定されたパスが見つかりません。:パス名~:3_feature256』というエラーが出て止まる
①まずは、上記の「汎用:~~」のエラー解決手順を一通り実行してください。(Cドライブ直下に置くと解決することが多いです)
②それで解決しなければ、GPUが認識されていない可能性があります。
RVCの「step2b」の左下に自分のGPU名が書いてあることを確認してください。
もし自分のGPU名が書かれていなければ、③の手順へ進んでください。
(もしGPU名が書かれているのにエラーが出た場合は、別の問題が原因の可能性があります…)
③GPUがデフォルトで対応していない可能性があります。(GPU名に「16」や「MX」という文字があると弾くようになっているっぽい…?)
なので、「infer-web.pyに記載されている16を除外するための文を書き換えることで使えるようになる」らしいです。(伝聞)
(infer-web.pyの16行目を削除して、17行目の()内の条件式を消してtrueに書き換えればGPUチェックを強引に突破できるみたいです)
(ただしGPUに16やMXが入っていると、動きはするけど、学習データが著しく劣化するという報告が上がっています。やはり16系のGPUだと学習モデルの制作は難しいのかもしれません)
~~
★RVCで、「go-web.bat」をダブルクリックした瞬間にウィンドウが閉じる
①ソフトとして「vc_redist」が入っていないと、最初の起動でつまづく…という報告がありました。
「vc_redist」で検索してインストールしてみてください。(おそらくこれで解決するはずです。)
②もし上記でも解決しなければ…上記の「汎用:~~」のエラー解決手順を一通り実行してみてください。
③上記でも解決しなければ…これもまたGPUが認識されていないことが原因かもしれません。
1つ上の解決策の「②」「③」の手順を試してみてください。
~~
★学習が完了してモデルもweightフォルダに出力されてるけど、コンソールのほうに「librosa.load(path, self.fs)」のようなエラーが出る!
→問題ありません。スルーで大丈夫です。
トラブルシューティングは以上です。少しでも参考になれば幸いです。