Glow-TTS を試してみた

Glow-TTS とはこちらの論文 のことです。
下記の github リポジトリでコードも公開されています。

github.com

今回はこの github コードをお借りして JSUT のデータセットで試してみました。

作成モデル推論結果サンプル
  • サンプルデータ 1

  • サンプルデータ2

  • サンプルデータ3 (濁音などデータが少ない場合は若干滑舌が悪くなります)

  • サンプルデータ4 とその予測 MelSpec の画像

f:id:tosaka-m:20200628212851p:plain
図1. サンプルデータ4 のMelSpec 比較

学習条件など補足
  • epoch 数=1000, batch_size=64 (GTX1080ti でちょうど 24h くらいかかった)
  • melspec 関連パラメータ: sample_rate=24000, n_fft=2048, hop_length=300, win_length=1200, n_mels=80, (torchaudio.transforms.MelSpectrogram 使用)
  • 入力テキストは JSUT データセットについてる .lab ファイルからローマ字の文字列を取得
  • glow-tts の github リポジトリで公開されているモデルから fine tuning
  • Vocoder は MB-MelGAN (mel の設定は同じ)
  • その他はだいたい公開されているコードの設定そのまま
計算速度

以下はサンプルデータ1 の生成にかかった時間です。
サンプルデータ1の音声時間=11秒、括弧内は Vocoder の計算時間

CPU GPU
0.568 s ± 3.46 ms (0.414 s ± 6.46 ms) 0.0777 s ± 513 µs (0.0127 s ± 26.6 µs)

前回の記事の他のモデルの結果と比べてみるとわかりますが、Glow-TTS めっちゃ早いです。 (あと前回の表の単位一部間違えてました。ほんとごめんなさい。)

おまけ

シャミ子の音声データで学習させたモデルのサンプル
(いい感じのやつを選んでます。他のテキストだったり適当に生成するともっと悪くなります。)

おわりに

今回やってみた感じだとデータの少ない子音をはっきりと話せないのとイントネーションが変になってしまう点に多少の課題がありそうです。ただ、論文だとこの何倍ものiterationを学習させているので、はっきり話せない点に関してはまだ学習時間が足りてないだけな気もしています。

しかし、この計算速度でこの音声の綺麗さはなかなかだなと思ったのと、flow を上手く使っている手法が好きで推せる論文なので皆さんもチェックしてみてください。