「RVC」+「VC Client」で自分の声を任意の声にリアルタイム変換しよう!

【導入】

・この記事の最終目標は「リアルタイム変換でずんだもんボイスになって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↓

Releases · RVC-Project/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.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がオススメ)

→参考URLhttps://xrcloud.jp/blog/articles/business/4709/ これを参考にインストールを済ませる。

→クライアントに戻ってきて、Device Settingの「AudioInput」に実機マイク、「AudioOutput」に「CABLE 〇〇」を指定する。

Discordの入力デバイスに「CABLE 〇〇」を指定する。これでDiscordボイチェンボイスが乘るようになります。

 

Speaker Settingの欄を見て、

Tuningの値を調整することでピッチを変更することができる。

チュートリアル:男性の声からずんだもんの声にする場合、Tuning1415にして、predict f0をオンにすると丁度良くなった。(個人差)

 

・以上で設定は完了です。

あとは一番上に戻ってServer Controlの欄を見て、

Startボタンを押してリアルタイムボイチェンを開始しましょう。

 

お疲れ様でした。

 

 

 

 

 

【参考元】

yasyune様の、RVCの使い方の解説記事(めちゃめちゃ分かりやすいです!)

https://twitter.com/yasyune1023/status/1643525933733924864

https://rentry.co/cxuc3

 

各方面に多大なる感謝を…。

 

 

 

 

 

~~~~

 

追記:皆さんからいただいたエラーと解決策を以下に残しておきます。

 

 

トラブルシューティング

 

★汎用:エラーが出たら、まずは以下の手順を行ってください。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.py16行目を削除して、17行目の()内の条件式を消してtrueに書き換えればGPUチェックを強引に突破できるみたいです)

(ただしGPU16MXが入っていると、動きはするけど、学習データが著しく劣化するという報告が上がっています。やはり16系のGPUだと学習モデルの制作は難しいのかもしれません)

 

 

~~

 

RVCで、「go-web.bat」をダブルクリックした瞬間にウィンドウが閉じる

 

①ソフトとして「vc_redist」が入っていないと、最初の起動でつまづく…という報告がありました。

「vc_redist」で検索してインストールしてみてください。(おそらくこれで解決するはずです。)

 

②もし上記でも解決しなければ…上記の「汎用:~~」のエラー解決手順を一通り実行してみてください。

 

③上記でも解決しなければ…これもまたGPUが認識されていないことが原因かもしれません。

1つ上の解決策の「②」「③」の手順を試してみてください。

 

~~

 

★学習が完了してモデルもweightフォルダに出力されてるけど、コンソールのほうに「librosa.load(path, self.fs)」のようなエラーが出る!

 

→問題ありません。スルーで大丈夫です。

 

 

 

トラブルシューティングは以上です。少しでも参考になれば幸いです。

 

 

ポチポチ押してるだけで『VRChatでのアバターの着せ替え』ができるようになる記事

追記:引用などのため一応記事は残しておきますが、2019年に執筆した記事なので今だとあまり役に立ちません!

 

 

この記事は『VRChatでアバターの着せ替えがしたい!』というUnity初心者の方向けの解説記事です。

初心者でも手順が理解できるように、Unityの用語の使用を極力避けました。

なお、楽をするためにsenz-A様が作成した「Auto Dresser」という神ツール(350円)を使用します。金で時間を買え。

 

①Unity2017 4.28f1(2019/10/29現在、VRChatにアバターをアップロードするにはこのバージョンを使わないといけない)をダウンロードします。

https://unity3d.com/jp/get-unity/download/archive

f:id:Eyatu_VRC:20191112173012j:plain

ページの真ん中あたりにある[Unity 2017.x]をクリック

 

f:id:Eyatu_VRC:20191112173110j:plain

Unity 2017.4.28の横の[ダウンロード(WIN)]→[Unityインストーラー]をクリック

②Unity2017 4.28f1で新規プロジェクトを作って開きます。

f:id:Eyatu_VRC:20191112173718j:plain

Unity2017.4.28で新規プロジェクトを作成します。なーんにもない。

 

③「VRChatSDKを入れる」

VRChatSDK(VRChatにアバターをアップロードするために、とりあえず入れなきゃいけないやつ)をダウンロードします。

https://vrchat.com/home/download

f:id:Eyatu_VRC:20191112205359j:plain

ログインして、[Download VRChat SDK]をクリックします


 

ダウンロードしてきた[VRCSDK-うんたらかんたら.unitypackage]をダブルクリックして開きます。

f:id:Eyatu_VRC:20191112173748j:plain

VRCSDKを開くとなんかウィンドウが出てくるので[Import]をクリックします

 

④「アバターと衣装を入れる」

まずBOOTHなどでアバターと衣装を用意しておきます。アバター専用の衣装が望ましいです。

ダウンロードしてきたアバターや衣装のフォルダの中の[○○○○.unitypackage]ファイルをダブルクリックして、先程と同じように[Import]を押してください

f:id:Eyatu_VRC:20191112175858j:plain

今こんな感じ。なんかフォルダが増えた。

 

⑤「衣装を読み込む」

衣装が置いてある場所を探します。衣装名のフォルダーの中のどこかにあります。

大体の場合ダブルクリックするだけで読み込めるファイルが用意されていますが、モデルを左上の部分にドラッグ&ドロップする必要があるものもあります。

それでは衣装を読み込んでください。

f:id:Eyatu_VRC:20191112210544p:plain

今回使用する衣装は、[OPEN.unity]の中にあります。それをダブルクリックしてください。

 ⑥「衣装をコピーする」

衣装をアバターと同じところに持っていくために、衣装をコピーしようと思います。

左にある衣装名をクリックして、Ctrl+Cを押してコピーします

f:id:Eyatu_VRC:20191112181400j:plain

左にある衣装名をクリックして、Ctrl+Cを押してコピーします

 

では次にアバターがあるところを開きましょう。

f:id:Eyatu_VRC:20191112183120j:plain

今回使用しているミーシェちゃんなら、[Mishe]フォルダの中に[Mishe_scene.unity]っていうファイルがあるのでそれをダブルクリックして開きます。

可愛すぎかよ・・・

次にアバターが既に着ている服を脱がせます。ぐへへ。

脱がせる手順は、

1,左のアバター名の横にある三角ボタンをクリックして展開

2,服やアクセサリなどのパーツを削除

です。これで下着だけになりましょう。

 

ミーシェちゃんの場合は特別な手順が必要なので、下の画像の手順通りにしてください。

f:id:Eyatu_VRC:20191112185944p:plain

左にある三角マークをクリックして、服やアクセサリのパーツを選択してDeleteキーで削除します。

f:id:Eyatu_VRC:20191112191805j:plain

上の手順を実行するとこうなります

 

ミーシェちゃんは下の画像の青色のパーツを削除すると水着になります。

f:id:Eyatu_VRC:20191112191822j:plain

ちなみに、Shiftキーを押しながら選択すると複数同時に選択できて楽です。選択したらDeleteキーを押して削除してください。

上の手順を実行すると以下のようになります

f:id:Eyatu_VRC:20191112192034j:plain

ウワーーッ!!

 

ミーシェちゃんの胴体が消えてしまったので、左の[Mishe_body_base]を選択して右上のチェックボックスをオンにします。

 

f:id:Eyatu_VRC:20191112192057j:plain

ヨシ!

 

はい。無事服を脱がせられました。

f:id:Eyatu_VRC:20191112192115j:plain

えっちだ・・・(?)

 

それでは、(⑥の「衣装をコピーする」で)コピーした衣装を貼り付けます。Ctrl+Vを押して貼り付けてください。

 

f:id:Eyatu_VRC:20191112192321j:plain

貼り付けた!

軍服ミーシェちゃんかわいい。完了まであと少しです。

 

ここままだとアバターを動かしても衣装が動かないので、アバターに追従して動くように設定する必要があります。

その設定ですが、手動でやるとクソ面倒くさいので今回はsenz-A様が作成した「Auto Dresser」という神ツール(350円)を使用します

DL→https://sentz-a.booth.pm/items/1300847

f:id:Eyatu_VRC:20191112203727j:plain

Auto Dresserはいいぞ。何度も手動でアバターの着せ替えをするのは骨が折れるので自動化ツールを使おう。



 

(手動でやる手順はhttps://twitter.com/siodome0/status/1025278903038828544などが参考になります)

 

以下、AutoDresserを使って着せ替えをする手順です。

①上記URLから、AutoDresserをダウンロードします

②ダウンロードしてきた[AutoDresser]フォルダ内の

[Auto Dresser-NonDB ver0.451.unitypackage]をダブルクリックして開きます。

 

(分からない方は読み飛ばして欲しいのですが、Dynamic Boneを持っている方はDynamic Boneをインポートしてから代わりに[Auto Dresser ver0.451.unitypackage]のほうを開いてください。上記のNonDBはDynamicBoneを持っていない人用のものなので。)

 

ウィンドウが開いたら[Import]を押しましょう。

③左にある衣装名をクリックして、右下にある[Add Component]をクリックします。

f:id:Eyatu_VRC:20191112212439p:plain

右下に[Add Component]ってボタンがありますね!クリック!


 

④検索欄に[Auto Dresser]と入力します。

⑤[Auto Dresser (NDB)]を選択します。

f:id:Eyatu_VRC:20191112203805j:plain

こんな感じになります。[Cloth HipBone]とか[Body Object]とかありますね。

 

左の衣装名の横にある三角ボタンを押します。

すると[Armature]ってのが出てくるので、さらに横の三角を押します

すると[Hips]ってのが出てくるので、それをドラッグ&ドロップで右の[Cloth HipBone]の右にある欄に持っていきます。

 

左のアバター名をドラッグ&ドロップで右の[Body Object]の右にある欄に持っていきます。

f:id:Eyatu_VRC:20191112203824j:plain

今こんな感じ

 

⑦[Dressing on]ボタンを押します

⑧着せ替え完了!!お疲れ様でした。

衣装は削除して構いません。

 

VRChatへのアップロード手順は以下

『上の[VRChatSDK]→[Show Control Panel]→サインイン→上の[Builder]→[Build & Publish]→[Avater Name]の横にアバターの名前(任意)を入力して、下部の規約に同意して[Upload]ボタンを押す』

これでVRChatを起動したら着せ替えしたアバターが使えるようになります

 

VRChatへのアップロード手順に関しては

https://www.moguravr.com/vrchat-9/#page03

の「VRChatへのアップロード」が参考になります

 

以上!! 少しでもお役に立てたなら幸いです