つくよみちゃんトークソフトの作り方

f:id:shirowanisan:20201221132345p:plain

はじめに

先日公開した「シロワニさんのつくよみちゃんトークソフト」の作り方を記述します。

「シロワニさんのつくよみちゃんトークソフト」に関してはこちら。

shirowanisan.com

こちらの作り方は、初回公開時(version.1.0.0)のものとなります。今後、違う作り方になっていく可能性は大いにありますので、ご注意ください。

使用したソースコード

つくよみちゃんトークソフトは以下の二つをオープンソースを使用しています。

GitHub - espnet/espnet: End-to-End Speech Processing Toolkit

GitHub - kan-bayashi/ParallelWaveGAN: Unofficial Parallel WaveGAN (+ MelGAN & Multi-band MelGAN) with Pytorch

音響モデルとボコーダ

こちらの記事でも記述したように、近年の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コーパス準拠) | つくよみちゃん公式サイト

デモ音声

この仕組みで作成した合成音声のデモはこちらで公開しています。

今後の品質の改善案

転移学習前の音声データが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.11480] Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram

[1910.06711] MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis

[2005.05106] Multi-band MelGAN: Faster Waveform Generation for High-Quality Text-to-Speech