以前以下の記事を書いた際に紹介した、『COEIROINK』というフリーの合成音声ソフトで、自分の声をモデル化できる【MY COEIROINK】というサービスがあるのを知って、これを試してみようと思い、実践レポートをいたします!
まずは利用規約・手順を確認
COEIROINKで自分の声を学習させるためには、【MY COEIROINK】というサービスを利用する形になるみたいなので、以下にアクセスしてみました。
【作り方や利用規約などの詳細は、Google colabのコードページをご参照ください。】とのことでしたので、早速、ページの下にある、【MYCOEIROINKを作る】ボタンを押して、Google colabのページへ移動します。
すると、Google Colabのページ(ツール)へ移動するのですが、なかなか大変そうで、ここで引き返す人が多そうな感じがしました…が、今回どうしても自分の声をモデル化してみたいので頑張って確認していきます。
利用規約の確認
Google Colabのページの始まりからしばらく『利用規約』の内容が続きますが、今回私がモデル(COEIROINK)を作成する目的が、作成したデータを配布するわけではなく、あくまで自分が自分で動画作成などをする際に使うだけなので、その用途であれば、注意すべき点は限定されそうです。
※COEIROINKの禁止事項を守って、使用時にクレジット表記をする必要があるくらいかなという認識でした!
用意しなければいけないデータ・環境を確認
次に【作成に関して】という項目があり、ここで、MYCOEIROINKの作成に必要なものリストが確認できます。
①Googleアカウント、および、Google Driveの空き容量
→最大7GB程度必要
②読み上げ音声wav(最小10文、最大652文で作成可能です)
→学習に利用する音声データ。これがないとなにより始まらない
③有料のGoogle Colab
この欄には記載がないのですが、おそらくGoogle Colabを有料プランで使った方がよいのでは?とも思うので、今回、Google Colabの有料プランも使ってやってみたいと思います。(そうじゃないと恐ろしく時間がかかりそう…)
必要な音声データ録音前の事前チェック!
上記②必要なデータである音声データですが、質の高いモデルを作成するためには、以下の3種類の台本すべて、最大の652文を読み上げて音声データを作る必要があります…!これは大変(;・□・)…しかし、今後、私のYoutubeサブチャンネルなどで解説系動画を作成するときに、原稿を作って流し込むだけで声の収録が不要になると考えると便利なはずなのでここは頑張りたいと思います!
必要な音声データ
①ITAコーパス(424文)
・emotion
・recitation
②MANAコーパス(228文)
・mana
wavの推奨設定
- 44.1kHz
- 16bit
- モノラル
ここで、wavデータが(最大)652個必要ということで数が相当に多いので、wavの推奨設定に沿ったデータを録音できるか、まずはためしに1個だけ音声を収録して、それをGoogle Colabに読み込ませて学習を進められるかを確認しておきたいと思います。
※すみません…後述もしますが、まず試す場合も、最低10個のwavファイルが必要でした…
音声データの録音テストと学習事前テスト
音声データの録音テスト
音声データの録音には、いつも手軽に録音する際に使っているフリーソフト『Audacity』を使ってみます!
早速、wavの推奨設定になるように、環境設定を以下のように設定してみました。
上記の設定で、emotionの001の原稿【え、うそでしょ?】を録音してみました。
録音データを以下の設定で保存。
Google Colabの実行環境構築
次に、音声データをGoogle Colab上で読み込ませて学習を進められそうか、自分のドライブに環境を構築しつつ確認してみます。
①Google Driveのマウント
あとは、マウントする自分のGoogleアカウントを選択して、【許可】を押しました。
②必要なデータのダウンロード
③音声データzipを入れるためのフォルダを作成
④Google Driveで作成されたフォルダを確認
上記のように、Google Driveのマイドライブ直下に【MYCOEIROINK_WORK】フォルダが作成されていて、更に【あなたの音声データzipを入れてください】というフォルダが配下にあることを確認できました!音声データはこちらのフォルダに入れれば良いようです!
⑤Google Driveにアップするテスト音声データzipの作成とアップロード
テスト音声データzip作成
上の録音したwavデータ一個だけを、以下のように手順書通り【ITA_CORPUS】という名前でzip化
音声データzipをGoogle Driveにアップロード
⑥zip内の内容確認
※⑤Google Driveにzipをアップしてから少し待った方がいいみたいです…
…するとここでエラー発生…!『Exception: wavファイルの数が「1」ですが、wavファイルは10以上必要です。』というメッセージがあり、なるほど、最低でも10個ファイルがないと受け付けてくれないんですね…ということであと9個録音してから再チャレンジ…したらとりあえずチェックマークはついたので、いったん問題ないものとして、600文以上の録音を頑張ろうと思います…
音声データを全部録音した感想
すこしでもモデルのクオリティの質を上げたい!ということで、用意するデータの最大652個のwavファイルを作成しましたが、おそらく合計で7時間くらいかかったのと、バ美肉の裏声アプローチによるボイチェン環境での収録は結構過酷でした…
…ただ、仮に学習がうまくいかなかったとしても、収録するセリフのようなものがシチュエーションボイスのようなものがかなり多くて、単純にボイトレになった!とも考えられるので、決して無駄ではなかった!と思える達成感でした…
つねに裏声状態だったので鎖骨あたりが筋肉痛みたいになりました(;・□・)
学習開始まで環境を整える
なんとか学習用の自分の音声データを作成できたので、Goolge Colabで以降の学習手順を進めていきます!
※↑の実行環境構築の⑤⑥、Google Driveへのファイルアップロードと内容確認をもう一度やってから以下を実行しています。
①音声の前処理
Google Colab手順の続き【音声の前処理】を実行して、成功すると学習に使われる音声の数が出力されるので、数に間違いが無いか確認。
②Speaker_infoフォルダの作成
③モデルの作成のための環境構築1
モデルの作成のための環境構築2
ここでベースとする声を「model_1(つくよみちゃん音声モデル)」「model_2(おふとんPさん音声モデル)」「model_3(MANAさん音声モデル)」から選択するみたいです。
デフォルトは「model_2」ですが、自分の声は「model_1」のつくよみちゃんに近いと思っているので「model_1」を選択
モデルの作成のための環境構築3
環境構築3まで終われば、学習前の準備は完了です!
Google Colabの有料版に課金して設定
ここで、いよいよ学習は実行できそうなことが分かったので、ハイスペックなGPUが選べて、途中で作業を止められてしまうリスクの少ないGoogle Colabの有料版サブスクに課金して以降の対応を進めます!
ランタイムを再起動し、以下のGPUや設定で再度学習開始までの手順を踏んでいく
上記、ハードウェアアクセラレータを【GPU】にして、GPUのタイプは最も性能のいいV100を選択、ランタイムの仕様は、私もよくわかってないのですが、【ハイメモリ】に設定しておくと、フリー版では長時間学習などでランタイム(環境?)を使っているものが不定期でリセットされてしまう?仕様を回避できるようなので、ここは必ず【ハイメモリ】にしておきます。
GPUに関しては、毎月に使える数(コンピューティング量?)が決まっていて、使い切ってしまうとV100などが選べなくなるのですが(その分処理速度が遅くなると思われる)、上記、ランタイムの仕様の【ハイメモリ】は有料版である限り設定できるので、ランタイムが再起動されて再度実行しなおさなければならない時間的リスクを回避できるみたいです!この点がフリー版と有料版の大きな違いになりそうですね…!
学習開始!
これでいよいよ学習開始です!学習の開始には以下の再生ボタンを押すだけですが、果てしない時間がかかるようですので、実際体感でどれくらいかかったかもレポートできればと思います!
学習中のあれこれ
2023年6月29日現在、まだ学習は継続しているのですが、昨日6月28日から学習を介しているこれまでの経緯を途中経過として残しておきたいと思います。
1epochの生成時間
学習の進行については、Google Colabの案内に詳細が記載されているのでそちらに譲りますが、おおきな流れとしては、【epoch】という単位の学習を、1回ずつ実行→完了を繰り返す形で学習が進んでいきます。
1回の実行が終わると、Googleドライブの中に、【1epoch.pth】といった名前の学習すみのファイルが保存されます。2回目の実行が終わると次は【2epoch.pth】というファイルがさらに保存され、これを最大100回行うというのが公式の仕様のようでした。
Google Colabの有料サブスクに課金している状態で学習を行うと、この1回の実行にかかる時間は約10分でした。
途中、Google Colabのランタイムが中断(切断ではない?)されることがあって、これが起きると手動で学習を再開させなければならないため、それによるタイムロスがあればもっとかかるのですが、これを除けば、単純に学習にかかる時間は10分*100回で1,000分=約16時間といったところですかね…
ランタイムが切断された際にもう一度学習を再開する方法
Google Colabの有料版に課金したので、ランタイムの切断は心配ないかな!と思っていたのですが、私のPCの設定なのか、Google Colabの仕様なのか、有料版に入っても、ランタイムが切断(中断?)されてしまうことがあって、その際に、もう一度学習させるためにGoogle Colab上で走らせる処理をいかにメモしておきます!(基本、自分のGoogleドライブにファイルをダウンロードしたり、フォルダを作ったりする処理以外をもう一度やる感じかな?と思いました)
実際有料版のコンピューティングをどのくらい消化するか?
Google Colabの有料版では、一か月で【100クラウドコンピューティングユニット】というサービスを定額で受けられるのですが、これが残っている限りは、フリー版では選択できない高品質のGPUを使うことが可能!という認識です。
それで実際、このMY COEIROINKの学習でどのくらいコンピューティングユニットを消化するのか?というのも今後の参考のために残しておきたいと思います!
以下は、45epochが完了したあたりでのコンピューティングユニット消化量なのですが、この時約40/100残っている形でした。そうなると、1epochあたり、1.33のコンピューティングユニットを消化することになるので、100epoch完了前に、1か月あたりの100クラウドコンピューティングユニットを使い切ってしまいそうですね。
一か月分のクラウドコンピューティングを使い切った後、100epochまでは、フリー版と同じスペックで実行し続けることになりそうですね。※ただしランタイムの仕様は【ハイスペック】のままで利用可能
学習(いったん)完了→COEIROINKで使ってみる
上記の通り、学習については100回実行する流れですが、学習済みのモデルをCOEIROINKで使うだけなら、1epoch目のデータでも実施可能です!
この記事の初稿の段階では100回の学習は完了していませんが、学習途中のデータを使って、実際に作成した学習データをCOEIROINKで利用する方法についてもまとめて、いったん記事を公開いたします。
■40epochが完了した段階で【おはようVtuber】の動画を作ってみた!
皆様おはようございます(*・ヮ・)!
必死に頑張ったCOEIROINKの収録の成果が出てきたのでおはようVtuberムービーを作ってみました!
まだ学習レベルは40%付近ですがすでに大満足!
このムービーでは私は頭を動かしてるだけで声は出してません!合成音声のみです(*・ω・)#おはようVtuber pic.twitter.com/RuyJ0JN2Eh— エルティアナ/バ美肉Vtuber•AIとWEB3の錬金術士・ゲーム音楽系バーチャルピアニスト? (@atelier_ert) June 29, 2023
■学習済みのMY COEIROINKの使い方
学習済みのデータが一つ(1epoch)でも完了していれば、以下のように、Googleドライブのspeaker infoフォルダ内に、アルファベットと数字の羅列のようなフォルダが出来ているので、これをフォルダごとダウンロードします。
ダウンロードしたフォルダを自分のPCのCOEIROINKフォルダ内、speaker_infoフォルダに格納します。
Googleドライブに戻って、exp→tts_mycoe_modelフォルダに格納されている、config.yamlと任意のepoch.pthデータをダウンロードします。
ローカルPCに格納した、アルファベットと数字の羅列ファイルの配下、【model】の中に、数字だけのフォルダがあるのでその中に上記ダウンロードしたconfig.yamlとxxepoch.pthデータを格納します。
準備は以上で完了です!
これでCOEIROINKを起動して、以下のように【MY COEIROINK】が選択できれば、あとは他のモデルと同様に利用できるはずです!※モデルを導入して初回起動時はモデル一覧の画面が最初にでると思います!
まとめ
いかがでしたか?ここまで作業しながら記事を書き続けて、おそらくここまでの私のブログで最も長文の記事になってしまった…と思っていますが、それだけ勉強になった…気がします!
このオリジナルの合成音声をきっかけに、自分でしゃべって動画素材を収録する必要が減ったはずなので、自分がしゃべるべきコンテンツはしっかり自分でしゃべって、例えば将来的に、こういった解説記事を動画にしたい!場合は特に、この合成音声で解説動画が作れたら!と思うので、しっかり活用していきたいと思います!
Google Colabについても、そもそもの仕様や、月額約1,200円払ったら何ができるのか?というのも勉強になったので、また何か、別の学習をGoogle Colabで行う場合も、自分でこの記事を参考にしたいと思います!