
AIリアルタイムボイスチェンジャーMMVC_v1.5_導入講座_学習編
講座記事一覧 最初と編まとめ
前回:準備編 次回:確認編
こんにちは。ピポッです。
AIリアルタイムボイスチェンジャーである
I'mずんだもん王への道_MMVCの導入講座動画を作っている者です。
当記事では『学習編』として、
『自分の声』を『目標の声(ずんだもん)』にするデータを
機械学習(AI)で作ります。
やることは
『機械学習を実行する』
です。
v1.5とv1.3で機械学習である『Train_MMVC.ipynb』の内容が
一部異なるため、別項目としてそれぞれ記述します。
機械学習する(v1.5)
Googleドライブに移動してください。
機械学習で使用するファイルは
『マイドライブ/MMVC_Trainer-v1.5.0.0_SiFiGAN/notebook』
フォルダの『04_Train_MMVC.ipynb』です。
『04_Train_MMVC.ipynb』をダブルクリックで開いてください。

マイドライブ/MMVC_Trainer-v1.5.0.0_SiFiGAN/notebook/
04_Train_MMVC.ipynb

04_Train_MMVC.ipynb:0 ノートブックの準備
順番に実行していきます。
最初に『0 ノートブックの準備』の枠の
左にある●▶のボタンを押してください。

ボタンを押して数秒経ち、『0 ノートブックの準備』の枠の最下部に
『log: パッケージのインストールが完了しました。』
と表示されたら、次に進んでください。

『log: パッケージのインストールが完了しました。』と出たらOK。
04_Train_MMVC.ipynb:1 Notebookの準備
次に『1 Notebookの準備』の枠の
左にある●▶のボタンを押してください。

ボタンを押して数秒経ち、『1 Notebookの準備』の枠の最下部に
『log: パッケージのインストールが完了しました。』
と表示されたら、次に進んでください。

04_Train_MMVC.ipynb:2 リポジトリの準備
次に『2 リポジトリの準備』の枠の
左にある●▶のボタンを押してください。

すぐ●▶の左に緑のチェックマークが付きますが、
まだ完了していません。
下部に
Platform:Colab
Path:/content/drive/MyDrive/MMVC_Trainer-v1.5.0.0_SiFiGAN
と表示されます。
ここまででフォルダ名を変更していなければ、内容の変更は不要です。
表示を確認したら、下にある『次へ』を押してください。

Platform:Colab
Path:/content/drive/MyDrive/MMVC_Trainer-v1.5.0.0_SiFiGAN
と表示される。
『次へ』を押すと
『このノートブックにGoogleドライブの
ファイルへのアクセスを許可しますか?』
と出ます。
『Googleドライブに接続』を押してください。

音声ファイル等を使用するためにアクセスが必要なため、『Googleドライブに接続』を押す。
『Googleドライブに接続』を押すと新しい画面で
『アカウントの選択』が表れます。
使用するアカウント(表示中のアカウント)を押してください。

『Google Drive for desktopがGoogleアカウントへの
アクセスをリクエストしています』
と出るため、下にスクロールして『許可』を押してください。

問題なければ『許可』を押す。
しばらくして
『Mounted at /content/drive
log: Google Driveのマウントが完了しました。
/content/drive/MyDrive/MMVC_Trainer-v1.5.0.0_SiFiGAN』
と出たら次に進んでください。

『log: Google Driveのマウントが完了しました。』と出たらOK。
04_Train_MMVC.ipynb:3 実行の準備
次に『3 実行の準備』の枠の
左にある●▶のボタンを押してください。

数分かかるので、しばらくお待ちください。
数分して
『log: パッケージのインストールが完了しました。』
と出たら次に進んでください。
いくつかERRORやWARNINGが出てますが今回は無視します。

『log: パッケージのインストールが完了しました。』と出たらOK。
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.torchdata 0.6.0 requires torch==2.0.0, but you have torch 1.13.1+cu117 which is incompatible.torchtext 0.15.1 requires torch==2.0.0, but you have torch 1.13.1+cu117 which is incompatible.torchvision 0.15.1+cu118 requires torch==2.0.0, but you have torch 1.13.1+cu117 which is incompatible.
や
WARNING: The following packages were previously imported in this runtime:
[numpy]
You must restart the runtime in order to use newly installed versions.
といった表示は一旦無視する。
04_Train_MMVC.ipynb:4 GPUの確認
次に『4 GPUの確認』の枠の
左にある●▶のボタンを押してください。

結果はすぐに表示されます。
割り当てられたGPU Nameが『Tesla T4』で、
『Memory_Usage』が『15360MiB』(=16GB)
なら特に変更の必要はありません(※)。次に進んでください。

(※)『Memory_Usage』が『16GBより低い場合』は、
『マイドライブ/MMVC_Trainer-v1.5.0.0_SiFiGAN/configs/』
フォルダの『train_config.json』を書き換える必要があります。
具体的には『batch_size』の値を下げる必要があります。
デフォルトは4ですが、3などに下げてください。
『train_config.json』は
メモ帳などのテキスト編集ソフトで編集できます。
04_Train_MMVC.ipynb:5 tensorboardの起動
次に『5 tensorboardの起動』の枠の
左にある●▶のボタンを押してください。

数秒すると『TensorBoard』が表示されます。
この画面には機械学習に関するグラフが表示されますが、
最初は何もグラフが出ません。
必要なグラフを確認できるのは機械学習が始まってから
数十分してからのため、今は次に進んでください。

最初は特に何も表示されない。
04_Train_MMVC.ipynb:6 学習の設定
次に『6 学習の設定』の枠の
左にある●▶のボタンを押してください。

すぐ●▶の左に緑のチェックマークが付きますが、
まだ完了していません。
下部に
new/resume:New
config_path:configs/train_config.json
model_save_dic:tutorial
fine_model:latest
と表示されます。
最初は(※)この状態のままで『次へ』を押してください。
(※)学習再開時については後述の
『機械学習を『再開する』場合』の手順・変更に沿ってください。

『次へ』を押すと
『/content/drive/MyDrive/MMVC_Trainer-v1.5.0.0_SiFiGAN
設定が完了しました。
new_or_resume:New
config:configs/train_config.json
model_save_dic:tutorial
fine_model_g:fine_model/G_v15_rev00_finemodel.pth
fine_model_d:fine_model/D_v15_rev00_finemodel.pth』
と表示されます。次へ進んでください。

『設定が完了しました。』と出て、全文が
/content/drive/MyDrive/MMVC_Trainer-v1.5.0.0_SiFiGAN
設定が完了しました。new_or_resume:New
config:configs/train_config.json
model_save_dic:tutorial
fine_model_g:fine_model/G_v15_rev00_finemodel.pth
fine_model_d:fine_model/D_v15_rev00_finemodel.pth
ならOK。
04_Train_MMVC.ipynb:7 学習を行う
最後に『7 学習を行う』の枠の
左にある●▶のボタンを押してください。

学習が開始すると
『Epoch 1: 46% 58/127 [02:10<02:00, 1.75s/it]』
のような表示が出ます。
このような表示(Epoch 1, Epoch 2, ...)が続く間、
学習は進行し続けます。

Epochが徐々に上がり、%右の数字が増加していれば学習は進行しており、問題ない。
学習進行中は、ブラウザのアイコンの部分が灰色のCOマークに変化する。
学習は数時間必要になります。
ブラウザをそのままに、数時間放置してください(※)。
(※)Google Colaboratoryは無料版の場合、6時間弱で
接続切断され、学習が強制的に停止します。それまで放置してください。
また、時々(アカウント作りたてなら頻繁に)
『まだ操作中ですか?』という画面が出ます。
数分以内に『私はロボットではありません』を押さないと
接続切断されますので、注意してください。
長く使用しているアカウントでも、3時間に1回は表示されるため
接続切断を避ける場合は時々ブラウザを確認してください。

実行場所に関係なく急に現れる。
数分以内に『私はロボットではありません』を押さないと
Google Colaboratoryの接続が切断され、
『0 ノートブックの準備』からやり直す事になるため注意する。
機械学習が始まってしばらく(30~40分ぐらい)すると、
INFO:tutorial:Saving model and optimizer state at iteration 2000 to ./logs/tutorial/G_latest_99999999.pth
INFO:tutorial:Saving model and optimizer state at iteration 2000 to ./logs/tutorial/D_latest_99999999.pth
のような『2000刻みの数字』(iteration 2000)と
『G(D)_latest_99999999.pth』
という表示が現れます。

INFO:tutorial:Saving model and optimizer state at iteration 2000 to ./logs/tutorial/G_latest_99999999.pth
INFO:tutorial:Saving model and optimizer state at iteration 2000 to ./logs/tutorial/D_latest_99999999.pth
のような表示が目安になる。
これは、以下の2つの意味を表します。
『学習が2000Step(Stepは単位)まで進んだ』
『中間セーブデータとして
G_latest_99999999.pth, D_latest_99999999.pth を作った』
この表示が出た場合『グラフの出力』と『データの出力』の
2つの変化が発生しています。それぞれ確認します。
グラフの出力:TensorBoardの参照
『5 tensorboardの起動』の場所まで移動し、
右上の回転する矢印のボタンを押してください。

するとTensorBoard内の画面が切り替わり、
図やグラフが出てきます。

色々とグラフがあるのですが、確認するのは
『loss g/mel』と『loss g/kl』の2種類のみです。
この2つのグラフを表示します。
まず、TensorBoard画面を下にスクロールして
『loss 24 cards』を押します。

すると『Previous』『Next』とグラフが表れます。
『Next』を押してください。

確認したい『loss g/mel』と『loss g/kl』は次のページにあるため『Next』を押す。
『次へ』で表示されるグラフが切り替わります。
下にスクロールしていくと
『loss/g/kl』と『loss/g/mel』が表れます。

2000の段階だと、横軸2000(Step)の位置に点が1つのみしかない。
4000, 6000, ... と進むと、点が増えていく。
つまり、学習の経過がグラフでわかる。

グラフにマウスカーソルを合わせると数値が表示される。
確認する数字は『Value(loss/g/melの値)』と『Step(学習の進行量)』のみになる。
両方の数値は、理想的には両方とも低い方が良いです。
しかし機械学習が進むほど
『loss/g/kl』は高くなり(悪くなり)
『loss/g/mel』は低くなり(良くなり)ます。
機械学習を進めないと
音声変換データとしてはイマイチになるため、
基本的に『loss/g/mel』の『低くなる傾向』を見ます。
Step(グラフの横軸。2000, 4000, 6000, ...)
が進むほど徐々に『loss/g/mel』が下がっていれば、
『音声変換データはいい方向に学習されている』
と見て問題ありません。
下がる傾向さえあれば『loss/g/mel』数値(※)は
気にしなくて構いません。

グラフ傾向を見たいため、Smoothing0.6で見た場合のグラフにしている。
最初に大きく下がって徐々に下がっていく様子ならOK。
(※)『loss/g/mel』はあくまで参考値です。
学習が進むと低くなっていきますが、
『g/melが低い』と『変換の品質が良い』は別です。
ある値未満までg/melが下がらなくても、品質が良い事は十分あります。
その逆もあり得ます。
v1.2の頃の動画で「18台だと良い」と言いましたが
アレは語弊があった(そこまでg/melが参考にならない)ため、
『グラフの傾向』と『非リアルタイム変換の質(後の編)』
を参考にしてください。
v1.5の場合、相当に長く(何十万Step)機械学習すれば
『loss/g/mel』は16.x台まで下がります。
ただ、そこまで学習しなくても(数万Stepで)品質は十分だと考えられます。
グラフの表示について、グラフ右上の□を押すと
ブラウザの大きさに合わせて拡大表示できます。


ブラウザの幅に合わせて大きくなる。
またグラフに関して、デフォルトだと
濃い線のグラフと薄い線のグラフが表示されています。
片方のグラフは『Smoothing』(グラフをなめらかにした物)
であり、実際の数値ではありません。
数万~数十万Step機械学習した時の傾向を見る時以外は、
右の『SCALES』『Smoothing』を0にして
非表示にする事をオススメします。

データの出力:Googleドライブのlogsフォルダ内を参照
中間セーブデータは
G_latest_99999999.pth, D_latest_99999999.pth
という名前になります。
Googleドライブにセーブデータが保存されているため
Googleドライブを確認します。
別のウィンドウ(別のタブ)でGoogleドライブを開いてください。
Googleドライブの『マイドライブ/MMVC_Trainer-v1.5.0.0_SiFiGAN』
フォルダを確認してください。
機械学習が始まると『logs』フォルダが増えています。
ダブルクリックで『logs』フォルダに移動してください。

『マイドライブ/MMVC_Trainer-v1.5.0.0_SiFiGAN』フォルダ
『logs』というフォルダが増えている。
『logs』フォルダの中に入ると、
『tutorial』というフォルダが作られています。
ダブルクリックで『tutorial』フォルダに移動してください。

特に変更していなければ『tutorial』フォルダが存在する。
『tutorial』フォルダに移動すると、
機械学習が10000Stepを超えている場合は図のようになっています。

config.json、D_latest_99999999.pth、G_latest_99999999.pth、train.log、events.---.0
ファイルなどがある。
10000Stepを超えると、追加で
『eval』フォルダ、best.log、D_best.pth、G_best.pth、G_10000.pth
が作られる。
2000Stepの段階でlatest_99999999.pthファイル2種が存在する事、
100000Stepの段階でD_best.pth, G_10000.pth, G_best.pth
が存在すれば問題ありません。
ただし、.pthファイルは1つ500MB以上の容量であるため
Googleアカウントの残り容量には注意してください。
容量が不足していると、ファイルが出ない事があります。

機械学習時は残り容量に注意する。
グラフの確認とファイルの確認ができたら、
04_Train_MMVC.ipynbに戻ります。
あとは6時間弱ほど経過して
機械学習が止められるまで放置してください。
時間経過で切断されると、以下のような表示が表れます。

5時間から6時間ほど機械学習すると、無料版ではColabの接続が切断される。
この場合、24時間前後ほど時間を開けなければ機械学習できない。
一度『学習の開始』をした場合、
中間データは『G(D)_latest_99999999.pth』として保存されています。
ランタイムの切断時のデータで機械学習が不十分な場合、
次回以降は機械学習を『再開する』場合で進めます。
機械学習が止まった時と機械学習再開の目安
Google Colaboratory無料版は
6時間弱で強制的に接続切断され、機械学習が止まります。
以降、24時間前後は機械学習ができません。
正確には『GPUバックエンドに接続できません』
と、機械学習に必須であるGPUが使用不可の状態になります。
24時間前後ほど時間が経過すると回復し、
再び機械学習ができるようになります。
機械学習を止める目安については、
『loss/g/mel』の下がり幅が小さくなっており、
Stepが数万から十数万Stepほどであれば、
止めて良い可能性があります(※)。
『『loss/g/mel』の下がり幅が小さい』というのは、
『loss/g/mel』のグラフをSmoothing表示したときに
グラフが徐々に横ばいになっている状態を指しています。
(※)学習が十分かどうかは
『Step数』や『loss/g/mel』の大小だけでなく、
今後の『確認編』での『非リアルタイム変換』で確認をお願いします。
『非リアルタイム変換』は05_NonRealtime_Conversion.ipynbで行います。
機械学習を『再開する』場合
機械学習を、開始ではなく『再開する』場合、
改めて『04_Train_MMVC.ipynb』内の
『0 ノートブックの準備』から『6 学習の設定』までを
順番に実行する必要があります。
加えて『6 学習の設定』では●▶ボタンを押した後に出る項目の内、
『New/Resume』の箇所は必ず『Resume』に変えてから
『次へ』を押してください。
その後、『6 学習の設定』の完了を確認してから
『7 学習を行う』を実行してください。

●▶ボタンを押した後に表れる表示の内
『new/resu…』(new/resume)
において、プルダウンから『Resume』を選択する。
他の箇所は変更しない。
選択してから『次へ』を押す。
繰り返しますが、機械学習を『再開する』場合
・改めて『0 ノートブックの準備』から『6 学習の設定』まで実行する
・『6 学習の設定』では『New/Resume』で『Resume』を選ぶ
・上記2点が完了してから『7 学習を行う』を実行する
の手順をを必ず守ってください。
この操作は『学習を再開する』場合(2回目、3回目、4回目……以降全て)
毎回必要です。
機械学習の開始・再開を進めて
数万StepのG_xxxxxx.pth(xxxxxは数字)が作成されたら
ボイチェン用機械学習は完了です。お疲れ様でした。
機械学習する(v1.3)
ほぼv1.5と同じですが、一部差異があります。
1.5の『logs/tutorial』フォルダが
v1.3は『logs/20220306_24000』フォルダになる、
『.ipynbの番号に差がある』といった点です。
ですが基本的な流れはv1.5と同じです。
グラフの見方や出力データに関しても、同じように出力されます。
v1.5の『グラフの出力:TensorBoardの参照』
『データの出力:Googleドライブのlogsフォルダ内を参照』
を参考にしてください。
進め方
・『0 ノートブックの準備』から 『5 tensorboardの起動』
をそのまま実行する(※1)
・『6 学習を実行する』は『New_or_Resume』を
『学習最初だけはNewにする』『学習再開時は毎回Resumeにする』
の選択を行う
・『6 学習を実行する』の●▶ボタンを押して学習開始する(※2)。
です。
(※1)グラフのg/melはあくまで参考値です。
学習が進むと低くなっていきますが、
『g/melが低い』と『変換の品質が良い』は別です。
ある値未満までg/melが下がらなくても、品質が良い事は十分あります。
その逆もあり得ます。
品質は『02_MMVC_Interface.ipynb』による『非リアルタイム変換』や
『リアルタイム編』(リアルタイムボイスチェンジ)
など、実際の音声変換で確認する必要があります。
v1.2の頃の動画で「18台だと良い」と言いましたが
アレは語弊があった(そこまでg/melが参考にならない)ため、
『グラフの傾向』と『非リアルタイム変換の質(後の編)』
を参考にしてください。
(※2)エラーについて
ModuleNotFoundError: No module named 'monotonic_align.monotonic_align.core'
が発生した場合の対処方法。
Colabが仕様変更すると時々出ます。
『2 MMVC_Trainerディレクトリに移動』の枠下にある
『コードを表示』を押し、表示される色んな行の最下部
!ls -1
のさらに下に、以下の3行を追記してください。
%cd monotonic_align/
!python setup.py build_ext --inplace
%cd ../
その後、『02_Train_MMVC.ipynb』の
『0 ノートブックの準備』から順に実行してください。

が発生した場合の対処方法。
『2 MMVC_Trainerディレクトリに移動』の『コードを表示』を押して
最下部『!ls -1』のさらに下に、次の3行を追記する。
%cd monotonic_align/
!python setup.py build_ext --inplace
%cd ../
その後、改めて『0 ノートブックの準備』から順に実行していく。
機械学習を『再開する』場合
機械学習を、開始ではなく『再開する』場合、
改めて『02_Train_MMVC.ipynb』内の
『0 ノートブックの準備』から『5 tensorboardの起動』までを
順番に実行する必要があります。
その後に『6 学習を実行する』に移るのですが、●▶ボタンを押す前に
『6 学習を実行する』枠内の
『New_or_Resume』を『Resume』に必ず変更してください。
『Resume』に変更してから
『6 学習を実行する』の●▶ボタンを押してください。
繰り返しますが、機械学習を『再開する』場合
・改めて『0 ノートブックの準備』から
『5 tensorboardの起動』まで実行する
・『6 学習を実行する』では『New/Resume』で『Resume』を選ぶ
・上記2点が完了してから『6 学習を実行する』を実行する
の手順をを必ず守ってください。
この操作は『学習を再開する』場合(2回目、3回目、4回目……以降全て)
毎回必要です。
機械学習の開始・再開を進めて
数万StepのG_xxxxxx.pth(xxxxxは数字)が作成されたら
ボイチェン用機械学習は完了です。お疲れ様でした。
学習編まとめ
機械学習する(v1.5)
→順番にボタンを押して機械学習を始める
再開時は学習設定でResumeにする点に注意
数万~十数万StepのG_xxxxxx.pthができたら完了機械学習する(v1.3)
→順番にボタンを押して機械学習を始める
再開時は学習設定でResumeにする点に注意
数万~十数万StepのG_xxxxxx.pthができたら完了
最後に(開発者支援)
開発者である天王洲アイルさん(@IsleTennos)は
PIXIV FANBOXを開設しています。
有料プランもあるため、資金の支援が可能です。
MMVC開発を支援したい方は是非支援をお願いします。
無料プランでMMVC開発状況も書く(らしい)ため、
リンク先を登録しておくと便利だと思います。
FANBOXは下記URLになります。
公式サポート音声募集中
MMVC公式サポート音源は常時募集中です(FAQより)。
ご自身の声をMMVC公式サポート音源にしたい場合は、
開発者である天王洲アイルさんのTwitter(https://twitter.com/IsleTennos)か
MMVC Discordサーバー(https://discord.com/invite/2MGysH3QpD)のIsleTennos#5740(天王洲アイルさん)に
DMにてお問合せください。
MMVCで分からない事があったら(FANBOXで質問)
不明点はMMVCのDiscordサーバーで質問可能ですが、
それとは別の質問用窓口が作成されました。
下記の、MMVC開発者天王洲アイルさんのpixivFAOBOXにて質問可能です。
MMVC関係で分からないことがあり、
Discordに入る事が難しい、質問しにくい、といった場合は
『MMVCに関する開発者に問い合わせ』にて質問してみてください。
次回予告(確認編)
次回は『確認編』として、
『非』リアルタイムのボイスチェンジを試みます。
『学習編』で作ったデータをさらに変換し、
非リアルタイムへの音声変換で品質を確認します。
品質を確認して大丈夫そうだったら『リアルタイム編』に行きます。
やることは
『非リアルタイムボイスチェンジする』
『学習結果をONNXファイルに変換する』
(『確認編』を飛ばして『リアルタイム編』に行く場合も必須)
です。
実際にちゃんと音声変換できるかの確認と、確認後に
リアルタイム編で必要になるONNXファイルの作成手順説明のため、
『確認編』として記述予定です。
関連リンク
Googleドライブ:https://drive.google.com/drive/
Google Colab(Google Colaboratory):https://colab.research.google.com/
開発者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