
AIリアルタイムボイスチェンジャーMMVC_v1.5_導入講座_リアルタイム編A_MMVC_Clientで実行
注意(2023年10月21日):話者IDが2023年10月20日を境に変更されました。
特にv1.3については話者ID
(自分の声やずんだもんの声に対する番号、107とか100とか)
が変更されています。
記事の話者IDは一部古いため、
変更内容と対応方法はこちらをご確認願います。
講座記事一覧 最初と編まとめ
前回:確認編 次回:リアルタイム編B_VCClientで実行
こんにちは。ピポッです。
AIリアルタイムボイスチェンジャーである
I'mずんだもん王への道_MMVCの導入講座動画を作っている者です。
当記事では『リアルタイム編A_MMVC_Clientで実行』として、
MMVC_Clientというボイスチェンジャーソフトを使用した
リアルタイムVC(ボイスチェンジ)までの手順を説明します。
合わせて、変換音声をDiscord等のソフトの「入力」にする方法や
変換速度を上げる・品質を上げるパラメータ調整について話します。
なお、『確認編』の
『学習結果をONNXファイルに変換する(v1.5)』
『MMVC_Client_v0.5.0.0の入手と展開』
『音声デバイスの取得』
『非リアルタイム用にmyprofile.conf編集(Client_v0.5)』
を実行している事を前提とします。
未実行の方は、先に『確認編』の試行をお願いします。
v1.3の場合は
『学習結果をONNXファイルに変換する(v1.3)』
『MMVC_Client_v0.3.1.0の入手と展開』
『音声デバイスの取得』
『非リアルタイム用にmyprofile.conf編集(Client_v0.3)』
を実行している事を前提とします。
やることは
『リアルタイムボイスチェンジする』
『仮想オーディオデバイスの導入』
『パラメータ調整と再ONNX化(再ONNX化はv1.5のみ)』
です。
ほとんどの部分は同じですが、
MMVC_Clientの仕様がv1.5(Client_v0.5.0.0),
v1.3(Client_v0.3.1.0)で一部異なるため、
差異のある場所はバージョンを分けて説明します。
差異が無い場合、同一の処理とみて進めてください。
リアルタイムボイスチェンジする
『確認編』で編集した『myprofile.conf』を編集することで
MMVC_Clientをリアルタイムボイスチェンジャーとして使用できます。
ただ編集前に、追加設定として『環境音(ノイズ)の録音』を行います。
環境音(ノイズ)の録音・準備
MMVC_Clientではノイズ低減機能があります。
ノイズ低減機能を使用するために、
環境音(ノイズ)を録音する必要があります。
マイクから、何も話していない時の環境音(ノイズ)を録音します。
『確認編』で展開した『mmvc_client_installer_15』内にある
(Trainer_v1.3, Client_v0.3.1.0なら『mmvc_client』フォルダ)
『rec_environmental_noise.exe』をダブルクリックで実行してください。

実行すると黒い画面が表れ、
『学習済みモデルのサンプリングレートを指定してください。
>>
』
と表示されます。
『24000』と入力してから、Enterキーを押してください。

最初にサンプリングレート(サンプリング周波数)を聞かれる。
MMVCは24000Hzで統一しているため、『24000』と入力する。
サンプリングレートを入力すると、次に
『myprofile.conf を選択してください』
と表示されます。
『確認編』で編集・使用したmyprofile.confを選んでください。

『myprofile.conf を選択してください』という表示と同時に ファイル選択画面が表れる。
『確認編』で使用したmyprofile.confを選んで『開く』。
選択すると、まずmyprofile.confで指定している
input_device1(入力デバイス・マイク)の名前が表示されます。
直後に、
『あなたの環境ノイズを録音します。マイクの電源を入れて、何もせずに待機していてください。
5秒後に録音を開始します。5秒間ノイズを録音します。完了するまで待機していてください。』
と出ます。この状態から待機してください。
5秒後に
『録音を開始しました。』
と表示され、5秒間マイクの録音を行います。
何も喋らず、5秒間待機してください。
録音が終わると
『録音が完了しました。
ファイルに書き込みを行っています。
ファイルの書き込み完了しました。
このウィンドウは閉じて問題ありません。』
と表示されます。
『ファイルの書き込み完了しました。
このウィンドウは閉じて問題ありません。』
と出たら黒い画面を閉じてください。

10秒ほどすれば、録音完了まで進む。
『このウィンドウは閉じて問題ありません。』 と出たら画面を消してよい。
終了後、エクスプローラーの『mmvc_client_installer_15』
フォルダ内を確認すると、
『noise.wav』という音声ファイルが新規に作成されています。
『noise.wav』が録音した環境音(ノイズ)になります。

新たに『noise.wav』が作られている。 このファイルを使用してノイズ低減を行う。
『noise.wav』が作られたら、
このファイルを.onnxファイル等があるフォルダと
同じ場所にコピーまたは移動してください。

以上で『環境音(ノイズ)の録音・準備』は完了です。
myprofile.confの編集
『確認編』で使用した『myprofile.conf』を編集して
リアルタイムVC向けの設定に変更します。
まず、『myprofile.conf』のothers欄のうち、
以下の部分を削除してください。
,
"input_filename": "D:\mmvcrt\note\v15\07kakunin\emotion005.wav",
"output_filename": "D:\mmvcrt\note\v15\07kakunin\emotion005_output.wav"
この部分を削除すると『非リアルタイムVC』から
『リアルタイムVC』に変化します。

input_filenameの上行にある、行末の,(カンマ)も削除する必要がある。
Client_v0.3.1.0でも削除する部分は同じになる。

次に、others欄の
"use_nr": false,
を
"use_nr": true,
に変更します。全て小文字にする点に注意してください。
これにより、noise.wavを用いたノイズ低減機能が有効になります。

最終的には、以下のようなmyprofile.confになります。

以上で『myprofile.confの編集』は完了です。
リアルタイムVC
myprofile.confの編集が完了したら、
『mmvc_client_installer_15/bin』フォルダにある
(v1.3は『mmvc_client/bin』)
『mmvc_client.exe』をダブルクリックして実行してください。
黒い画面が表れ、『myprofile.conf を選択してください』と出たら
先程編集したmyprofile.confを選択して『開く』をしてください。

myprofile.confの選択画面。
先程編集したmyprofile.confを選んで『開く』。
選択後、最初に
『path内で指定したconfig.jsonのパス』
が表示されます。
次に『モデルを読み込んでいます。少々お待ちください。』
と出ますので、数秒ほど読み込みを待ちます。

次に、
『モデルの読み込みが完了しました。
音声の入出力の準備を行います。
少々お待ちください。
準備が完了しました。VC開始します。』
と表示されます。
この状態になったらリアルタイムVCが開始しています。

あとはmmvc_client.exeを終了するまで画面が変わりません。
myprofile.confのinput_deviceで選択したマイクに話しかけてみて、
output_deviceで選択したスピーカーから変換後の音声が流れたら
リアルタイムVCは成功しています。
mmvc_client.exeが実行中でVC開始している場合、
Windowsであればタスクバーにマイクのアイコンが表れます。
マイクアイコンが出現している場合、マイクが使用されています。

マウスカーソルを合わせた時に 『マイクを使用しているアプリ: mmvc_client』
と表示されていれば、VC実行中・マイクが起動中になる。
以上で『リアルタイムVC』は完了です。お疲れ様でした。
VC音声をDiscord等のソフトの入力音声にする
以降は補足説明になります。
当項目は、MMVCに限らず
『VC音声を入力(マイク)として
Discord・Audacity等のソフトの入力にする場合』
の話になります。
VC音声は、基本『出力』デバイスに音声が出ます。
VC音声を『入力』デバイスに出す場合、
『仮想オーディオデバイス』が必要になります。
VB-CABLEのインストール
今回は一番導入が楽な仮想オーディオデバイスである
VB-CABLEをインストール、使用します。
まずVB-CABLEのサイトにアクセスします。下記URLです。
URLに移動したら、『VBCABLE_Driver』をダウンロードします。
Windowsのマーク(MacはMacのマーク)を押して
.zipファイルをダウンロードしてください。

赤枠内のボタンの どちらかを押してVBCABLE.zipをダウンロードする。
WindowsはWindowsのボタン、MacはMacのボタンを押す。

.zip展開できるフォルダに保存する。
図は.onnxファイル等を置いているフォルダと 同じ場所に保存している。
保存したら、.zipファイルを右クリックして
『すべて展開』から展開します。

『すべて展開』の後に出る画面はそのまま 『展開』ボタンを押して展開する。
展開後は新規作成された『VBCABLE_Driver』フォルダにある
『VBCABLE_Setup_x64.exe』を
右クリック→『管理者として実行』
で、管理者権限で実行してください。

『管理者として実行』する。 ここから仮想オーディオデバイスをインストールする。
管理者権限でないとインストールできないため 必ず『管理者として実行』する。
実行すると管理者権限の確認画面の後、
以下のような画面が出ます。
『Install Driver』を押してください。

数秒するとインストールが完了し、以下のような画面が表示されます。

『Installation Complete and Successful!』 とあれば成功している。
output_audio_device_list.exeの再実行
VB-CABLEのインストールが完了したら、
『確認編』で使用した
『mmvc_client_installer_15』フォルダ内の
『output_audio_device_list.exe』を
再度実行してください。

すでに『audio_device_list.txt』はあるが 改めて実行する。
『output_audio_device_list.exe』実行後、
同じフォルダにある『audio_device_list.txt』を開いてください。
『入力:』として『"CABLE Output (VB-Audio Virtual , MME"』
『出力:』として"CABLE Input (VB-Audio Virtual C, MME"』
が増えていれば、正常にVB-CABLEがインストールされ
仮想オーディオデバイスのインストールに成功しています。
なお『入力』が『CABLE Output』という名前で
『出力』が『CABLE Input』という名前ですが、これが正常です。
『入力』に分類されている方がマイク、
『出力』に分類サれている方がスピーカーです。

『output_audio_device_list.exe』を再実行した後の 『audio_device_list.txt』。
VB-CABLEが正常にインストールされていれば
『入力:』として『"CABLE Output (VB-Audio Virtual , MME"』
『出力:』として"CABLE Input (VB-Audio Virtual C, MME"』
がリスト内に表れる。
myprofile.confの『output_device』の変更
『audio_device_list.txt』が更新されて
VB-CABLE(CABLE Output, CABLE Input)が増えていたら
myprofile.confを編集します。
"device"欄にある"output_device"を
"CABLE Input (VB-Audio Virtual C, MME"
に変更します。

output_deviceを"CABLE Input (VB-Audio Virtual C, MME" に変更した。
あとは『リアルタイムVC』と同様の手順で
binフォルダのmmvc_client.exe実行
→先程編集したmyprofile.confを選ぶ
→『VC開始します』と出たら
VC結果がマイク入力として使える状態になっています。
VC結果を入力にする(例:Discord)
次に、VC結果を入力(マイク)にする方法を説明します。
方法は『使用ソフトの入力デバイスを『CABLE Output』に変更する』
です。例として、Discordで説明します。
Discordホーム画面左下の歯車アイコン『ユーザー設定』
を押し、『音声・ビデオ』を選んでてください。


表示される音声設定で、
『入力デバイス』から『CABLE Output(VB-Audio Virtual Cable)』
を選択してください。

入力デバイスで『CABLE Output(VB-Audio Virtual Cable)』 を選ぶ。
出力デバイスは普段使用するスピーカー・ヘッドホンのままにする。
入力デバイス変更後・mmvc_client.exe実行中で
『マイクテスト』を実行してみてください。
音量が検出される、
インジケーターが緑に点灯している、
VC結果が出力デバイス(スピーカー・ヘッドホン)から聞こえる、
となっていれば、VC結果がマイク入力になっています。

『入力デバイス』が『CABLE Output』の時に、
『マイクテスト』実行で色が出ればVCがマイクとして入力されている。
VC結果が入力になっている事が確認できたら
『リアルタイム編』は完了です。お疲れ様でした。
VC速度を早める・品質を上げる
myprofile.confの"vc_conf"欄のパラメータを変更することで
変換速度を早めたり、
逆に変換速度を遅くする代わりに品質を上げる(かも)
することができます(※)。
以下ではパラメータの変更例を記述します。
(※)v1.5(Client_v0.5.0.0)は
myprofile.confの"vc_conf"欄の内
"frame_length"
"delay_flames"
"overlap"
"dispose_stft_specs"
"dispose_conv1d_specs"
の項目を変更した場合、
『確認編』の『学習結果をONNXファイルに変換する(v1.5)』
を改めて実行する必要があります。
加えてONNX化の実行前に、
『マイドライブ/MMVC_Trainer_v1.5.0.0_SiFiGAN/configs』
フォルダにある『myprofile.conf』を削除して、
エクスプローラーにあるパラメータ変更後の
『myprofile.conf』をconfigsフォルダにアップロードする必要があります。
『myprofile.conf』を差し替えた後に、
『確認編』の『学習結果をONNXファイルに変換する(v1.5)』
の手順に沿って.onnxファイルを作成し、
作成したら新しい.onnxファイルをダウンロードしてください。
v1.3(Client_v0.3.1.0)は再ONNX化の手順が不要です。
myprofile.confを書き換えたらそのままmmvc_client.exe実行でOKです。
vc_confパラメータについて追記(2023年05月24日)
現在の仕様ですとframe_lengthは使ってませんでした
(Client_v0.3, 0.5両方使ってない)。
説明に混ざってますが、このパラメータは無視してください。
なお、動作条件は下記の式だとエラーになります。ソレ以外なら動きます。多分。
delay_frames < ( (dispose_stft_specs×2 + dispose_conv1d_specs×2) ×hop_length) + overlap
delay_framesの方が式の値より小さいと、エラーで動きません。
hop_lengthはconfig.jsonに書いてあります。
変換速度を早めるパターン
5項目のパラメータを半分にします。
"frame_length": 4096,
"delay_flames": 2048,
"overlap": 512,
"dispose_stft_specs": 1,
"dispose_conv1d_specs": 5,
というパラメータにします。
大雑把にいうと
「音声変換の頻度を上げる+遅延時間や音声間処理を減らす」
という変化を与えています。
デフォルトパラメータの約半分くらいの遅延時間になると思います。
ただし『音声変換の頻度を上げる』、つまりMMVCの負荷が上がります。
MMVCの負荷が上がったり、変換が間に合わず
音が途切れる可能性があります。
音が途切れる場合はデフォルトパラメータに戻してください。
デフォルトでも音が途切れる場合は、
次の『品質を上げるパターン』を試してみてください。
品質を上げるパターン
frame_length, delay_flames, overlapを増やします。
"frame_length": 16384,
"delay_flames": 8192,
"overlap": 2048,
"dispose_stft_specs": 2,
"dispose_conv1d_specs": 10,
というパラメータにします。
大雑把に言うと
「音声変換の頻度を下げる+遅延時間や音声間処理を増やす」
という変化を与えています。
変換頻度を下げている分、リアルタイムVCとしての速度は下がりますが
負荷は減るため、精度としては上がる可能性があります。
その他のパターン(ハードウェア参考例)
MMVCのWikiに
ハードウェア+実行環境+パラメータ
の例がいくつか載っています。
パラメータ調整する場合は、
ハードウェアの比較と合わせてこちらも参考にしてみてください。
エラー:[ONNXRuntimeError] : 2 : INVALID_ARGUMENT
myprofile.confのパラメータを変えつつ
mmvc_client.exeを実行していると、
以下のようなエラーが出る事があります。

[ONNXRuntimeError] : 2 : INVALID_ARGUMENT
これはv1.5(Client_v0.5.0.0)で発生するエラーです。
ONNX化した時のmyprofile.confパラメータと
mmvc_client.exeで指定したmyprofile.confパラメータが違う時
に生じます。
正確には
"frame_length"
"delay_flames"
"overlap"
"dispose_stft_specs"
"dispose_conv1d_specs"
のパラメータがONNX化の時、mmvc_client.exe実行時で違う時に生じます。
MMVC_Trainer_v1.5(MMVC_Client_v0.5.0.0)の場合、
上記5パラメータを変えた場合はGoogleドライブの
『マイドライブ/MMVC_Trainer_v1.5.0.0_SiFiGAN/configs』
フォルダにある『myprofile.conf』
を変更後パラメータのファイルに差し替えてから
改めて『学習結果をONNXファイルに変換する(v1.5)』
を実行してください。
エラー:エラーが発生しました。0 エラーが発生しました。101
他:エラーが発生しました。107 などの番号
これはv1.5(Client_v0.5.0.0)で発生するエラーです。

train_config_Correspondence.txtに存在しない
source_id, target_idをmyprofile.confで指定している
(学習していないIDを使おうとしている)と発生します。
train_config_Correspondence.txtと
myprofile.confのsource_id, target_idを直接比較し、
myvoiceのIDをsource_idに、zundamon(target)のIDをtarget_idに
設定してください。
下記の図は番号が誤っているパターンです。
この場合、train_config_Correspondence.txtに存在しない
(学習していない)IDである107を使おうとしてエラーになります。

のエラー例。
train_config_Correspondence.txtにおいて
0が00_myvoice(自分の声)のID、
101が1205_zundamon(ずんだもんの声、目標の声)のIDである。
myprofile.confにおいて
source_id(自分の声のID)を107、
target_id(目標の声のID)を101にしている。
この場合、train_Config_Correspondence.txtにおいて
存在しないIDを指定しているため、番号エラーが出る。
train_config_Correspondence.txtを書き換えると音声変換に失敗する
(学習していないIDを指す等すると、音声変換できない)ため、
書き換えるのはmyprofile.confにしてください。
また注意点として、v1.5(Clinet_v0.5)とv1.3(Client_v0.3.1)は
source_id(自身の声)とtarget_id(目標の声、ここではずんだもんの声)
のデフォルト値が違います。
v1.5は
自分の声(source_id):0 ずんだもんの声(target_id):101
になります。
v1.3は
自分の声(source_id):107 ずんだもんの声(target_id):100
になります。
v1.3からv1.5に変える時(逆の場合も)、
またtrain_config_Correspondence.txtを
バージョン間で使い回さないでください。
デフォルト値と異なるIDで学習を進めた場合は
『myprofile.confのsource_id, target_id等のIDは
train_config_Correspondence.txtのIDに合わせる』
ようにしてください。
Invalid sample rate(mmvc_client.exe)の対策
『確認編』のInvalid sample rate(非リアルタイムVC)
で書いたように、
[Error -9997] Invalid sample rate
というエラーが出る事があります。
原因は、使用デバイスが24000Hz非対応である事です。
出力(VB-CABLE)の仮想オーディオデバイスは問題ないとして、
入力マイクが24000Hzに非対応の時の対策を説明します。
結論として別の仮想オーディオデバイスとなる
SYNCROOMをインストール・経由する形で使用して
24000Hzをmmvc_client.exeの入力に送ります。
以下のURLからSYNCROOMの.zipファイルを
ダウンロードしてください。

『同意してダウンロード』から.zipファイルをダウンロード
ダウンロード後に.zipファイルを展開、表示に沿って
SYNCROOMをインストールしてください。
SYNCROOMの使用にはアカウントの作成・ログインが
必要になるため、表示に沿ってアカウントの作成などをしてください。
SYNCROOMをインストールした段階で
改めて『output_audio_device_list.exeの再実行』をしてください。
実行後にaudio_device_list.txtに
『入力:』『出力:』に『ライン(Yamaha SYNCROOM』
があれば問題ありません。
SYNCROOMをインストールした事で
仮想オーディオデバイス『ライン(Yamaha SYNCROOM』が増えています。
デバイスの確認をしたら、
SYNCROOMをインストールして起動・ログイン後、
左下の『設定』を押して設定画面を開いてください。

設定画面が出たら、『オーディオデバイス』から
『入力』を、VCで使用するマイク(24000Hz非対応)を選び
『OK』を押してください。

オーディオデバイス『入力』から、
24000Hz非対応・VCで使用するマイクを選ぶ。
この状態で、『SYNCROOMを起動したまま』、
bin/mmvc_client.exeを実行し、
先程編集したmyprofile.confを選択してVC開始してください。
エラーが出なければ、問題なく動作しています。

マイクが24000Hz非対応の場合、 2つのラインを経由してVCとDiscord入力を行う。
あとの使い方は『VC結果を入力にする(例:Discord)』
と同じになります。お疲れ様でした。
リアルタイム編A_MMVC_Clientで実行まとめ
リアルタイムボイスチェンジする
→環境音(ノイズ)を録音する、
リアルタイムVC向けにmyprofile.conf編集、
mmvc_client.exe実行VC音声をDiscord等のソフトの入力音声にする
→VB-CABLE(仮想オーディオデバイス)を使う
myprofile.confを編集してからmmvc_client.exe実行VC速度を早める・品質を上げる
→"vc_conf"欄の5パラメータを変更する
※v1.5はmyprofile.conf差し替えの後に再ONNX化が必要Invalid sample rate(mmvc_client.exe)の対策
→SYNCROOM(追加の仮想オーディオデバイス)を使う
最後に(開発者支援)
開発者である天王洲アイルさん(@IsleTennos)は
PIXIV FANBOXを開設しています。
有料プランもあるため、資金の支援が可能です。
MMVC開発を支援したい方は是非支援をお願いします。
無料プランでMMVC開発状況も書く(らしい)ため、
リンク先を登録しておくと便利だと思います。
FANBOXは下記URLになります。
公式サポート音声募集中
MMVC公式サポート音源は常時募集中です(FAQより)。
ご自身の声をMMVC公式サポート音源にしたい場合は、
開発者である天王洲アイルさんのTwitterか
MMVC DiscordサーバーのIsleTennos#5740(天王洲アイルさん)に
DMにてお問合せください。
MMVCで分からない事があったら(FANBOXで質問)
不明点はMMVCのDiscordサーバーで質問可能ですが、
それとは別の質問用窓口が作成されました。
下記の、MMVC開発者天王洲アイルさんのpixivFAOBOXにて質問可能です。
MMVC関係で分からないことがあり、
Discordに入る事が難しい、質問しにくい、といった場合は
『MMVCに関する開発者に問い合わせ』にて質問してみてください。
次回予告(リアルタイム編B_VC_Clientで実行)
次回は『リアルタイム編B_VC_Clientで実行』として
VC_Clientを使用した場合のVC手順を記述予定です。
ONNX化までは確認編のとおりに行う必要があり、
Discord等への入力化(VB-CABLE等の仮想オーディオデバイス使用)や
v1.5でのパラメータ変更時の再ONNXの注意も
同様になる可能性が高いです。
ただ、VC Clientの場合は
MMVC_Trainer_1.3もv1.5も同一ソフトで実行する点等、
ソフトが違うため差異はいくつか存在します。
よって、使用手順の説明のために
『リアルタイム編B_VC_Clientで実行』として記述予定です。
関連リンク
MMVC_Client_v0.5.0.0(MMVC_Trainer-v1.5.0.0_SiFiGAN用):https://github.com/stealthinu/MMVC_Client/releases/tag/v0.5.0.0
MMVC_Client_v0.3.1.0(MMVC_Trainer-main, MMVC_Trainer v1.3.2.5用):https://github.com/isletennos/MMVC_Client/releases/tag/v0.3.1.0
VB-CABLE:https://vb-audio.com/Cable/
YAMAHA SYNCROOM:https://syncroom.yamaha.com/play/dl/
開発者Twitter:https://twitter.com/IsleTennos
開発者FANBOX:https://mmvc.fanbox.cc/
MMVC Discordサーバー:https://discord.com/invite/2MGysH3QpD
MMVCニコニコ大百科:https://dic.nicovideo.jp/a/mmvc
記事執筆者Twitter:https://twitter.com/pipo_lll
記事執筆者Youtube:http://youtube.com/@pipo_lll
記事執筆者ニコニコ:https://www.nicovideo.jp/user/653583/
Imずんだもん王への道(旧版のMMVC導入解説動画)
ニコニコ Youtube
記事執筆者Note:https://note.com/pipo_lll
記事執筆者_欲しい物リスト(何かいただけたら嬉しいです)
https://amzn.to/37XNPOL