※ MMVCは日々更新されておりますので、本記事は最新ではない可能性があります。
Discordサーバーがあるみたいなので不明な点はDiscordで質問しましょう。

はじめに

こんにちは!システム開発部のYです。

ところで皆さんは、MMVCというのをご存知でしょうか?

AIを使ったリアルタイムボイスチェンジャーらしく無料で試せるらしいです!

その中で、ずんだもんの音声になるチュートリアルをチュートリアルもんというらしいので、そこまで今回は試してみたいと思います笑

MMVCとは 

AIを使ったリアルタイムボイスチェンジャー「MMVC(RealTime-Many to Many Voice Conversion)」 で使用するモデルを学習するためのリポジトリです。
Google Colaboratory (Google Colab) を用いることで、個人の環境に依存せず、かつ簡単に機械学習の学習フェーズを実行可能です。

https://github.com/isletennos/MMVC_Trainer

個人の環境に依存せず、誰でも好きな声になれるのはすごいですね

環境

今回使用している各バージョンは下記です。

・Windows10: v21H2
・Audacity: v3.2.3
・MMVC_Trainer: v1.3.1.6
・MMVC_Client(CPU ver): v0.3.0.0

MMVCの準備

前準備編①

MMVCを利用するためのソフトやファイルを用意する必要があります。機械学習をするのですが、この機械学習にテキストと音声が必要です。100個録音のこと。。笑

※ 後程ダウンロードする、MMVC_Trainer-main / notebook / 00_Rec_Voice.ipynb でも、指示に従うことで音声の録音ができる様です。

録音ソフトを用意

今回は、Audacityという録音ソフトを使って録音をしていきたいと思います。以下URLから入手します。

https://forest.watch.impress.co.jp/library/software/audacity/

読み上げ文章を用意

  1. 読み上げるテキストファイルは、ITAコーパスのemotion100文で配布してくれている方がいるので、それをお借りします。以下URLからファイルを入手します。https://drive.google.com/file/d/14oXoQqLxRkP8NJK8qMYGee1_q2uEED1z/edit
  2. また録音するファイルは「ITA_emotion_all.txt」です。同時に「ITA_emtion_all_hira.txt」のファイルは録音には使用しませんが、読みの対策としてひらがなも一緒に出しとくといいです。

録音の設定確認

  1. 今回録音する周波数は48000Hzで録音して、24000Hzに後から変換を行います。学習用で必須らしいです。Audacityを起動後、左下の「プロジェクトのサンプリング周波数(Hz)」設定値が「48000」になっていることを確認。
    なっていない場合は、上のタブから「編集」→「Prefrences」→「品質」→「サンプリング周波数(デフォルト)」で48000 Hzに変更してください。
    変更したら、Audacityを終了して反映されていることを確認。


  2. MMVCの機械学習はモノラル対応なので、音声もモノラルである必要があります。
    以下のように録音した際にステレオになっている場合はモノラルに変更する必要があります。
    変更する場合は、音声1タブから「ステレオからモノラルに分割」をすることで変更できます。

文章を読み上げて、機械学習で使用する音声ファイルの録音

  1. ITA_emotion_all.txtの1行目を録音していきます!前半と後半の無音部分は不要なので削除します。クリックしたままドラックして、CTRL + X で削除します。
  2. 保存は左上の「ファイル」タブから「書き出し」、「WAVとして書き出し」を選択します。
    ※ MMVCではwavファイルが必要なので必ずWAVファイルで出力してください。
  3. 音声の書き出し画面に変わります。ファイル名を入力するのですが、必ず1行目から順に「emotion001」のようにemotionと1から数えた3桁にしてください。
    ※ 機械学習をする上でテキストに対応する音声の名前が一致していないと問題になります。
  4. そして画面下の「エンコーディング」設定は、「Signed 16-bit PCM」になっているか確認してください。
    ※ bitも機械学習で16bit指定なので「Signed 16-bit PCM」にしてください。
  • 48000Hz
  • モノラル
  • wavファイル
  • emotion001
  • Signed 16-bit PCM

全て一致していれば保存。次は2行目の内容を音声録音します、これを後残り99回行います!!笑

100文章の録音を少しでも効率よくするために、ショートカットの設定

ボタンをクリックしたりするのが面倒なので、ショートカットを登録します。

  1. キー割り当てのファイルを配布してくれている方がいるので、それをお借りします。
    下記URLへアクセスしてXMLファイルを、ダウンロードしてください。
    https://ux.getuploader.com/lll_opip/download/8
  2. Audacityを起動し、上の「編集」タブから「環境設定」をクリックします。
    その中の下から4番目「キーボード」をクリックし、取り込みボタンをクリックします。
    ショートカットを読み込めました。と表示されたら完了です。

ショートカットキーの使い方の例は以下です。

  • Rキー: 録音の開始
  • Spaceキー:録音の停止、再生
  • Ctrl + Zキー:取り消し
  • Ctrl + Xキー:切り取り
  • Jキー:録音開始タイミングを先頭に戻す
  • Ctrl + Shift + Eキー:WAVファイル書き出し
  • Ctrl + Shift + Dキー:音声ファイルの削除

ショートカットを上手く使用して、効率よく録音しましょう!

48000Hzから24000Hzにまとめて変換処理

先ほど録音したのは48000Hzなので、24000Hzに変換を行います。なぜ48000Hzで録音するかと言いますと、今後24000Hz以上が必要になったときに、困るからです。Hzを下げて変換するならデータを削るだけで済むのですが上げる場合は無駄データを増やすことになってしまうのです。
要は先を見据えてということです。先を見据えなければ、そのまま24000Hz収録でも問題ないです。その場合、ここは読み飛ばしてください。

  1. 録音した音声ファイル100個をまとめて選択し、Audacity内にドラッグ&ドロップしてください。100ファイル読み込まれたら完了です。
  2. 読み込まれたら、左下の「サンプリング周波数」に直接「24000」と入力します。
  3. 左上の「ファイル」、「書き出しから」から「複数ファイルの書き出し」を選択します。
  4. 複数ファイルの書き出し画面が出たら、保存場所を前のファイルは別の場所を選び書き出しを行います。
    「次の100ファイルの書き出しに成功しました。」と出れば完了です。
    ※ フォーマットが「WAV」、エンコーディングが「Signed 16-bit PCM」になっていることを確認します。
  5. 念の為、正しく変換されたかチェック。24000Hzの音声ファイルを右クリックで「プロパティ」を選択、「詳細」タブ、オーディオの「ビットレート」を確認します。
    ビットレートが、384kbpsになっていれば成功です。



前準備編②

機械学習の準備になります。

学習用のツール取得、配置をする

  1. GitHubからモデル学習用ツールを取得し、展開します。以下のURLです。2022/12/23 最新(v1.3.1.6)
    https://github.com/isletennos/MMVC_Trainer
  2. GitHubのREADMEを下にたどると、「G_180000.pth」「D_180000.pth」をダウンロードと書いてあるのでダウンロードします。
  3. ダウンロードした「G_180000.pth」「D_180000.pth」をfine_modelに配置します。
  4. 録音した音声ファイルの配置をします。録音した音声を全て選択し「MMVC_Trainer-main\dataset\textful\00_myvoice\wav\フォルダ」に配置してください。
    ※ 場所が違うと学習時にエラーが起きます。
  5. テキストファイルの配置をします。前準備編①でダウンロードした、「MMVC向けITAコーパス文章ファイル_配布用」の中にある「ITA_emotion_hira_100file」のフォルダに音声に対応したテキストファイルがあります。
    テキストファイルを全て選択し「MMVC_Trainer-main\dataset\textful\00_myvoice\text\フォルダ」に配置します。

あらかじめ4ファイル書き換えを行う

  1. configs/baseconfig
    ・「log_interval」この値の刻みで学習の程度を記録します。 今回は細かく様子を見たいので500に変更します。
    ・「eval_interval」この値の刻みで学習結果を出力します。modelを保存する間隔、いわばセーブポイントです。細かく様子見して古いのを消せるなら500、放置なら1000が安定です。
    ・「batch_size」colabで割り当てたGPUに合わせて調整します。
  2. notebook/Create_Configfile
    ・「source: 87行目」ここの「MyDrive/」と\nの間に「MMVC_Trainer-main/」を書き加えます。
  3. notebook/Train_MMVC
    ・「source: 80行目」ここの「MyDrive/」と\nの間に「MMVC_Trainer-main/」を書き加えます。
  4. notebook/MMVC_Interface
    ・「source: 86行目」ここの「MyDrive/」と\nの間に「MMVC_Trainer-main/」を書き加えます。
    ・「source: 269行目」非リアルタイムでの音声変換をするファイルの指定。存在するファイル名に変更。

Googleドライブの準備

今回、Googleアカウントは作成済みとして進めていきたいと思います。

  1. Googleドライブを表示。Googleドライブに「MMVC_Trainer-main」を選択してドラッグ&ドロップしてコピーをします。
  2. Googleドライブにコピーが完了したら、notebookフォルダにある.ipynbファイルをダブルクリックして実行します。そうするとプレビューできません。と表示されるので、上の「アプリで開く」を押し「その他のアプリを接続」を押します。
  3. Google Workspace Marketplaceという画面が表示されるので、検索窓で「Colab」と入力してEnterを押します。「Colaboratory」が表示されるのでインストールを行います。
  4. 2の手順と同じように.ipynbファイルをダブルクリックすると、接続済みのアプリに「Colaboratory」が見えるのでクリックして表示します。あとはこの中の指示通りボタンを押していければ機械学習ができます。

MMVCのお試し

機械学習編

あとは、.ipynbファイルを上から順番に実行していきます。

設定ファイルの作成

設定ファイルを作成するにはnotebookフォルダにある、「Create_Configfile.ipynb」をダブルクリックし、Colaboratoryが接続され上から順番に実行していきます。

最後の項目が完了し、左に緑のチェックマークがつきました。WARNINGが出ていますが、これは無視して大丈夫だそうです。

完了したら、Googleドライブを確認し以下のファイルが存在し中身が書いてある事を確認します。
あれば設定ファイルは完了です。

  1. MMVC_Trainer-mainのconfigsフォルダに、「train_config_zundamon.json」が存在すること

  2. MMVC_Trainer-mainのfilelistsフォルダに、5つの「train_config_zundamon」ファイルが存在すること

機械学習

いよいよ機械学習を行います。notebookフォルダにある、「Train_MMVC.ipynb」をダブルクリックし、Colaboratoryが接続され設定ファイル作成時と同様上から順番に実行していきます。

「6学習を実行します。」の操作を実行すると機械学習が始まります。先ほどbaseconfigファイルで設定したeval_intervalの刻みに確認します。自分の場合は1000を設定したので、1000,2000と確認します。

GPUによって処理速度が変わります。自分の場合はT4だったので1000が表示されるまで大体25分くらいだそうです。(K80なら1時間位)

出力と学習の良し悪しを見る

eval_intervalの倍数に当たると、以下の画像のように[INFO] loss/g/melと出力されます。g/mel直後の数字が学習の良し悪しを測る値になるそうです。
また、数値が低ければ低いほど良いらしく自分の場合は21.6448でした。

tensorboardというのを見れば、わかりやすいという事なので確認します。以下画像のg/melが具体的な推移を表しています。4000Stepまで経過したのでそこまで表示されています。


19未満を目指して、続けていきます。

4時間経過・・

機械学習を始めてからおよそ4時間、14000Stepが経過した頃

[INFO] loss/g/mel 19.3349 きました! 19未満とまではいかなかったですが19にそれなりに近いのでこれを使っていきましょう!

リアルタイムボイスチェンジャー編

※ GPU版とCPU版があるのですが、CPU版はCPU使用率の問題で非推奨らしいです。GPU版はNVIDIAのものが必須になります。

必要なものを用意

  1. 「MMVC_Client (CPU ver)」を下記URLから取得そして展開。2022/12/23 最新(v0.3.0.0)
    https://github.com/isletennos/MMVC_Client
  2. Googleドライブで「MMVC_Trainer-main/logs/20220306_24000」フォルダ内にある「Config.json」を取得。1で展開したフォルダに格納します。
  3. 同じくGoogleドライブで「MMVC_Trainer-main/logs/20220306_24000」フォルダ内にある「G_(一番よさそうな物).pth」を取得。1で展開したフォルダに格納します。
  4. 「MMVC_Client/rec_environmental_noise.exe」を実行し、環境音/ノイズファイルを取得。「noise.wav」が作られます。

リアルタイムボイスチェンジャーをしよう

  1. 使うマイクのスピーカー確認「MMVC_Client/output_aduio_device_list.exe」ファイルの実行。
    実行すると「audio_device_list.txt」ファイルが出力されます。
    以下のように出力され、PCで使えるマイクとスピーカーを全部出力した物になります。
    マイクとスピーカーに対応する番号が左側に書いており、それを後程使用します。(同じ名前のものがある場合、一番低い番号を使います)


  2. 設定ファイル「MMVC_Client/myprofile.conf」をダブルクリックで開きます。
    上の括弧から順に、デバイス、ボイスチェンジャー、パス、その他の設定と記載されています。
    こちらをそれぞれの環境毎に変更していきます。
    ひとまず変更するのは、デバイスとパスのみで大丈夫みたいです。



    デバイス設定、1で取得した情報を記載します。
    ・input_device: 入力デバイス index番号
    ・out_device: 出力デバイス index番号

    パス、ファイルが格納されているパスを記載します。
    ・json: config.jsonが格納されているパス
    ・model: 学習したモデルのパス
    ・noise: 環境音/ノイズファイルのパス

準備が終わったので、試してみましょう!

起動ファイルは、「MMVC_Client/mmvc_client_GPU_v0.3.0.0/mmvc_client_GPU.exe」です。天王洲さんのアイコンが目印です。

起動すると、「myprofile.conf」を選択してください。と表示されるので格納してあるファイルを選択してください。その後モデルの読み込み開始が始まり。その後に「VC開始します」と表示されます。
実際にマイクに声を出してみて、スピーカーから変換後の音声が出力されていれば成功です!

試した様子がこちらです。※音声が流れます

おまけ(非リアルタイムでの変換)

非リアルタイム変換を行うには、[MMVC_Trainer-main / notebook / 03_MMVC_Interface.ipynb]ファイルを上から順番に実行していきます。

「4 学習したモデルを読み込む」の所は、どこまで学習したかによって記載するパスが変わります。
下記のNET_PATH、G_XXXXに学習結果で使うものを記載します。

CONFIG_PATH = "./configs/train_config_zundamon.json"
NET_PATH = "./logs/20220306_24000/G_xxxxx.pth"

「5 学習したモデルで非リアルタイムVCを行う」の所で、変換元の音声ファイルのパスを記入し変換を行うと変換結果が出力されます。

試した様子がこちらです。※音声が流れます。生声注意です。

まとめ

今回はMMVCを使ってのリアルタイムボイスチェンジャーについて試しました。
少し複雑でしたが、無料でここまで出来るのはすごいですね。。

セットアップで3時間、機械学習で4時間、そしてリアルタイムボイスチェンジャーで1時間、合計で大体8時間程かかりました。セットアップでは、機械学習で使用する音声の録音に時間がかなりかかりました。

NVIDIAGPUを搭載しているPCをお持ち方のは是非試してみてください

友人との通話等で使うと盛り上がります笑

参考リンク

pipoさんの前準備編〜リアルタイム編

MMVC_Trainer README

MMVC_Client README



ギャップロを運営しているアップフロンティア株式会社では、一緒に働いてくれる仲間を随時、募集しています。 興味がある!一緒に働いてみたい!という方は下記よりご応募お待ちしております。
採用情報をみる