アライさんになりきってみたかった(後編)
前編に引き続き、音声変換でアライさんになりきってみます。 音声変換はyukarinおよびbecome-yukarinを使用しました。
結果はこちらです。
- 第一段階(粗変換)
- 第二段階(高品質化)
どちらも「あらゆる現実を 全てアライさんの方へねじ曲げたのだ」と言ったつもりですが、全くダメですね。はい。
目次
環境・データセット
環境
- Windows 8.1
- 8GB RAM
- NVIDIA Quadro K1100M (2GB Memory)
データセット
- 劇中のアライさん63文の音声(BGMを弱くした後手動で切り出し、"えーーーー"など文でないものも含む)
- 対応する筆者の音声
- それぞれ約3分
- テスト用筆者の音声
参考(にした)文献
yukarin
、become-yukarin
の概要や音声変換の仕組みはこちらをご覧ください。
具体的な手順はこちらをご覧ください。
音声変換の仕組みや手順の詳細は他の良記事に譲るとして、本投稿では筆者がハマった箇所を書きます。
実行記録とハマったところ
第一段階
https://github.com/Hiroshiba/yukarin からクローンして、README.md
の手順に従い第一段階の学習を行います。
学習開始時、PicklingError
が発生したので、issueコメントに従ってdill
をインストールしました。
ところが、dill
の2019年10月10日当時の最新バージョンは0.3.1.1
なのですが、これはmultiprocessing
に依存する(未確認)ので、(おそらく)依存関係が巡回するためうまくいきませんでした。
よくわからなかったので、別のissueコメントの当時のバージョン0.2.8
をインストールして回避しました。
学習スクリプトを実行後、ひたすら待ちました。
第二段階
https://github.com/Hiroshiba/become-yukarin からクローンして、README.md
の"第2段階の学習"セクションを実行します。
やはりメモリ容量的に厳しいところがあるので、config_sr.json
にてtrain.gpu = -1
(GPU禁止)、train.batch_size = 1
としました。
さらに、train.log_iteration = 1000000
としました参考。
スクリプト実行後、ひたすら待ちました。
結果
冒頭にあります。
どうしてこうなった
- データが圧倒的に少ない(yukarin推奨の約1/10)
- 前編で行った処理の結果が悪く、それに引きずられて音質が悪い
- 前編でも言及していますが、BGM減衰のためのマスクについて間違った(実験で品質が良いと報告された方でない方の)マスクを使っていたことが分かりました。
が考えられます。要は高品質なデータをもっと集める必要がありそうだと予想しています。
おわりに
前後編にわたって、音声変換によってアライさんになりきることを試みました。
前編ではアニメ音声の音楽の要素を弱める変換を行うことにより、声のデータを集める方法を提案しました。
後編ではyukarin
と前編で集めたデータを使って音声変換を行いました。(しかし、その品質はまだまだで、改善の余地が大きいです)
以上になります。ありがとうございました。