[論文メモ] DelightfulTTS 2: End-to-End Speech Synthesis with Adversarial Vector-Quantized Auto-Encoders

arxiv.org

VQ-GANをつかったEnd-to-End(E2E)なTTSの提案

既存のTTSの多くはメルスペクトログラムを介したacoustic model と vocoderによる構成だが、
1) メルスペクトログラムは位相情報が失われている
2) 実際のメルスペクトログラムで学習したvocoderにとってacoustic modelが生成した不正確なメルスペクトログラムはドメインが異なる
といった問題があり、E2Eにしたいというお気持ち

もとのDelightfulTTSと多分同じチーム?

手法

提案するDelightfulTTS2のアーキテクチャは図1参照。

仕組みとしては単純で、
1) 入力の音声波形を再構成するVQ-GANを学習しコードブックとデコーダを作る
2) 音素からコードブックのシーケンスを予測するacoustic model(DelightfulTTS)を学習する

VQ-GAN

音声特徴としてメルスペクトログラムよりリッチなものにしたいのでフレームレベルでのvector-quantizeを行う。
encoder-decoderの形で図2がVQ-GANの全体像。
特徴としてエンコーダとデコーダの間にskip connection(U-Net的な)、マルチステージのvector-quontizeがある。


デコーダはHiFi-GANでupsamplingにbidirectional Long Expressive Memory (LEM)を導入した。
LEMは長いシーケンスに依存した学習を安定させるらしい(詳しくは論文を参照)。
arxiv.org

エンコーダはデコーダと同じアーキテクチャ
skip-connectionを導入することで学習が安定し収束したらしい。
ただ、あくまで安定等の目的なので1kステップで削除する。

adversarial trainingのためのDiscriminatorはmulti-scale・multi-period discriminator。
これを解像度別に3つ用意(x2, x4のダウンサンプリング)。

DelightfulTTS

音素からVQ-GANのコードブックシーケンスを予測するacoustic model。
基本的にもとのDelightfulTTSを踏襲。
見た感じconformerが追加されたFastSpeech2といった印象を受ける。

学習

既存のメルスペクトログラムを介したTTSでは1)メルスペクトログラムという位相情報の欠落した中間特徴、2)学習と推論でドメインが異なる問題があったが DelightfulTTS2ではE2Eの学習でこれらを解決。

acoustic modelの学習ではGTのピッチやdurationを利用するがこれだと学習と推論でギャップができる。
そこで、これらをGTを使うか推論したものを使うかスケジューリングすることでギャップを減らす。

またE2E学習中にデコーダへの入力としてacoustic modelの出力をそのまま扱う(量子化しない)。
ただL1による量子化正則化はする。

目的関数

デコーダのlossは複数解像度でのスペクトログラム loss  L_{mrs}、adversarial loss  L_{Adv}、feature matching loss  L_{fm}、VQ loss L_{vq}

acoustic modelのlossは音素レベルでのピッチ・duration loss( L_{pitch}, L_{dur})。
音素・発話レベルでのacoustic condition loss( L_{utt}, L_{phone})。これはGTのVQのエンコーダ出力とのL1 loss。
acoustic modelの予測とVQエンコーダに通したGTの出力に対してのSSIM loss ( L_{SSIM})。
acoustic modelの予測とVQエンコーダに通したGTの出力に対してのL1 loss ( L_{feat})

 W_Xは重み。

実験・結果

データセットは自社性らしくプロが読んだ英語の40時間のデータセット(テキストあり)。

比較対象はDelightfulTTSとFastSpeech2

VQ-GANのパフォーマンス(再構成による音声とGTの比較)

所感

メルスペクトログラムは情報が欠落しているというのはよく分かるのだが、HiFi-GAN、VocGAN等試した感じメルスペクトログラムで十二分な気がするというのが本音。正直実験結果を見ても性能改善はそこまで大きくない(実際聞いてみても既存手法とそこまで違いがわからないのでは?)。
VQ-GANを使うのはやってみたい。
またskip connectionをVQ-GANの学習初期の安定・収束の高速化に利用するというのは良さそう。
VQ-GANの学習は(個人的に)不安定なのでこれは良いアイディア。