LoginSignup
24
18

More than 3 years have passed since last update.

Neural text to speech のメモ(2020 年 3 月 28 日時点)

Last updated at Posted at 2018-10-06

テキストから, 自然な(人間が話しているっぽい)スピーチを生成し, LibTorch, TensorFlow C++ でモバイル(オフライン)でリアルタイム or インタラクィブに動く(動かしやすそう)な手法に注力しています.

英語に限っています.

人気がありそう(いろいろな人がトライしていて知見や実装があるもの)なやりやた

Tacotron2 -> [Mel spectrogram(wav)] -> WaveRNN -> [audio(wav)]

最近のトレンド?

Tacotron2 の部分を Transformer 系のものを使う(e.g. FastSpeech), WaveRNN の部分を WaveGlow, WaveFlow を使う.

Mel spectroguram(メル スペクトログラム)

中間のデータ表現. 誤差を計算したりいろいろ処理がしやすいのでこの Mel spectrogram データを入出力に使うのが長く使われている. WaveRNN, Tacotron2 も Mel spectrogram を中間データ形式として使う.

Tactron2

NATURAL TTS SYNTHESIS BY CONDITIONING WAVENET ON MEL SPECTROGRAM
PREDICTIONS

Tacotron に比べてより簡略化したネットワーク. Mel spectrogram を生成後は, Tacotron では Griffin-Lim で処理していた部分を WaveNet に置き換え(この部分はどれでもよい?).

WaveRNN

Mel spectrogram から自然な音声生成. Griffin-Lim や WaveNet は処理が重いが, 品質を保ったままモバイル CPU でもインタラクティブに動くように sparse に計算させるなどして高速化.

WaveGlow

WaveRNN + Glow.

論文著者によるオフィシャル実装があり検証しやすい. pytorch 実装.

WaveRNN のように mel spectrogram を生成する Tacotron2 などと組み合わせる.
合成が高速(mel spectrogram -> audio の部分)

オフィシャルの提供の pretrained model は 640 MB あるので, モバイルなどで動かすにはモデルデータ削減(パラメータ調整)が必要かもです(昨今のメモリ 8 ~ 12 GB, ストレージ 512GB ~ 1TB 搭載ハイエンドスマホなら削減しなくてもよさそう...?)

MelNet

MelNet: A Generative Model for Audio in the Frequency Domain
https://arxiv.org/abs/1906.01083

インターネット上のビデオから学習して, 話者の声質を再現

FastSpeech

高速に TTS できるっぽい. ソースコード公開予定

FastSpeech: Fast, Robust and Controllable Text to Speech
https://arxiv.org/abs/1905.09263

有志?による実装

pretrained model でそこそこいい感じに推論できます.

CPU でも I'am happy to see you again だと 1 秒くらいで合成できます(Transformer 0.1 秒, griffin-lim 0.9 秒くらい). waveglow と組みあわえる場合は 9 秒くらい.

関連論文

Almost Unsupervised Text to Speech and Automatic Speech Recognition
https://speechresearch.github.io/unsuper/

少ないデータから学習できる

Transformer-TTS

Neural Speech Synthesis with Transformer Network
https://arxiv.org/abs/1809.08895

LCPNet

モバイルで動く

Mellotron

Mellotron: Multispeaker expressive voice synthesis by conditioning on rhythm, pitch and global style tokens

感情や歌声などのトレーニングデータなしに, 感情を含んだ音声や歌声を生成できる.

2019 年 11 月 25 日にオフィシャル実装公開されました.

WaveFlow

WaveGlow より, よりコンパクトに表現できる(パラメータ数が少ない). 2D convolution する. WaveGlow, WaveNet もここから派生して定義することがでいる.

WaveFlow: A Compact Flow-based Model for Raw Audio
https://arxiv.org/abs/1912.01219

W.I.P 実装
https://github.com/L0SG/WaveFlow

ForwardTacotron

FastSpeech inspired.

Tacotron と FastSpeech のいいとこ取りな感じか.

その他

ClariNet: Parallel Wave Generation in End-to-End Text-to-Speech
https://arxiv.org/abs/1807.07281

Close to Human Quality TTS with Transformer
https://arxiv.org/abs/1809.08895

https://github.com/tensorflow/models/tree/master/official/transformer を使えばさらっと実装できるっぽい...?

FFTNet http://gfx.cs.princeton.edu/pubs/Jin_2018_FAR/
リアルタイム向け. WaveRNN よりいいかも?

GAN-based text-to-speech synthesis and voice conversion (VC)
https://github.com/r9y9/gantts

AlignTTS: Efficient Feed-Forward Text-to-Speech System without Explicit Alignment
https://arxiv.org/abs/2003.01950

WG-WaveNet: Real-Time High-Fidelity Speech Synthesis without GPU
https://arxiv.org/abs/2005.07412

所感

Tacotron は end-to-end で学習できるのが利点であるが, 品質を出すにはいろいろ学習の試行錯誤が必要なようである.
2020 年 3 月 28 日時点では,

  • Tacotron2 + Waveglow が基準品質(英語)
  • FastSpeech + WaveGlow -> Tacotron2 + Waveglow に比べ, いくらか機械的にはなるがより抑揚などが制御できている(英語) LJSpeech 以外のデータセットで学習すればいい感じになるかも
  • モバイル向けなら FastSpeech + SquezeWave or ForwardTacotron + SqueezeWave か?

Transformer 系は高速でモバイルで動かすのによさそうである.

Tacotron + WaveRNN は単一話者向け(一話者一学習データ)っぽいので, マルチスピーカーや声質変換, 感情つけなどの場合は別のモデルがよさそう(DeepVoice, LoopVoice, Mellotron など)

MelNet に期待.

実装

24
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
18