はじめに
先日公開した「シロワニさんのつくよみちゃんトークソフト」の作り方を記述します。
「シロワニさんのつくよみちゃんトークソフト」に関してはこちら。
こちらの作り方は、初回公開時(version.1.0.0)のものとなります。今後、違う作り方になっていく可能性は大いにありますので、ご注意ください。
使用したソースコード
つくよみちゃんトークソフトは以下の二つをオープンソースを使用しています。
GitHub - espnet/espnet: End-to-End Speech Processing Toolkit
音響モデルとボコーダ
こちらの記事でも記述したように、近年のTTS(Text to Speech。テキストから音声に変換すること)は「テキストからメルスペクトログラム(音声の設計図のようなもの)への変換」のあとに「メルスペクトログラムから音声への変換」を行います。「テキストからメルスペクトログラムへの変換」を行う機械学習モデルを音響モデル。「メルスペクトログラムから音声への変換」を行う機械学習モデルをボコーダと言います。
使用した音響モデル
上述したオープンソース、espnetではTTS用の音響モデルを作ることができます。音響モデルにもいくつか種類があり、espnetでは以下が作成可能です。
- Tacotron2 (2017)
- Transformer-TTS (2018)
- FastSpeech (2019)
- FastSpeech2 (2020)
一番新しいFastSpeech2が良いのではとも思いますが、つくよみちゃんトークソフトではTacotron2を使用しています。理由は以下です。
- FastSpeech、FastSpeech2は品質改善ではなく速度改善がメインだと言うこと(品質も上がっている可能性もありますが、これに関してはまだちゃんと論文を読めていないです)。
- FastSpeech、FastSpeech2の学習は少し手間がかかるということ(espnetでは、Tacotron2かTransformer-TTSモデルを作った後に作る必要がある)。
- Transformer-TTSがなぜか自分のデータセット・環境では上手く学習できなかった(Tacotron2よりTransformer-TTSの品質が良いと論文では書いてあったりしますが)。
そんなこんなでTacotron2を使いました。2017年のTacotron2さんに自分はいつまでお世話になるのだろうか......
使用したボコーダ
上述したオープンソース、ParallelWaveGANではTTS用のボコーダを作ることができます。ボコーダにもいくつか種類があり、ParallelWaveGANでは以下が作成可能です。
- ParallelWaveGAN (2019)
- MelGAN (2019)
- Multi-band MelGAN (2020)
つくよみちゃんトークソフトではParallelWaveGANを使用しています。Multi-band MelGANも試したんですが、ParallelWaveGANと比較して音声を聞いた結果、ParallelWaveGAN方がノイズが入りにくいように感じたので採用しました。
使用したデータセット
つくよみちゃんトークソフトは音響モデルもボコーダも使用したデータセットは同じです。
パプリックドメイン(著作権なし)の約6800文の男性音声で学習させ、そのモデルを100文のつくよみちゃん音声で転移学習させて作っています。各音声は以下で公開されています。
男性音声:
Japanese Single Speaker Speech Dataset | Kaggle
つくよみちゃん音声:
つくよみちゃんコーパス│声優統計コーパス(JVSコーパス準拠) | つくよみちゃん公式サイト
デモ音声
この仕組みで作成した合成音声のデモはこちらで公開しています。
作りました。
— シロワニさん (@shirowanisan) 2021年3月6日
この動画では、フリー素材キャラクター「つくよみちゃん」(© Rei Yumesaki)を使用しています。
音声合成には、フリー素材キャラクター「つくよみちゃん」が無料公開している音声データを使用しています。@TYC_Project
■イラスト素材:花兎*様
■つくよみちゃんコーパス(CV.夢前黎) pic.twitter.com/m1ieNO5N46
今後の品質の改善案
転移学習前の音声データが6800文なので少ないかなと思っています。また、つくよみちゃんの100文も少ないですね。データに関しては以下のような改善点があると思います。
- 転移学習前の音声データを増やす
- 転移学習前の音声データにはっきりとした読み上げのものを使う
- つくよみちゃんの音声データを増やす
あと、イントネーションの改善もできると思います。こちらは、音響モデルの入力が今はテキスト情報のみなので、イントネーション情報を付与してやることで改善できるのではないかと思っています。
参考文献
[1712.05884] Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions
[1809.08895] Neural Speech Synthesis with Transformer Network
[1905.09263] FastSpeech: Fast, Robust and Controllable Text to Speech
[2006.04558] FastSpeech 2: Fast and High-Quality End-to-End Text to Speech
[1910.06711] MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis
[2005.05106] Multi-band MelGAN: Faster Waveform Generation for High-Quality Text-to-Speech