[論文メモ] StyleTTS: A Style-Based Generative Model for Natural and Diverse Text-to-Speech Synthesis

arxiv.org

スタイルベースなText-to-Speechの提案
間違っているかもしれないので注意。


Text-to-Speech(TTS)は進化してきたが未だに多くの課題もある。
近年のTTSは自己回帰ではなく直接音声を生成するので音素のアライメントをする外部ネットワークが必要になる(外部アライメント)。
外部アライメントはTTS用では無いので適切では無い。
それに対して内部アライメントはTTSのデータのみなので過適合しやすい。
そこで外部・内部の両方を備えたアライメントがほしい。

手法

外部アライメントで学習したあとに、内部アライメントを構築する。
システムの目的は音素 \boldsymbol{t} \in \mathcal{T}とある話者の発話から得たメルスペクトログラム  \boldsymbol{x} \in \mathcal{X}から \boldsymbol{t}を反映したメルスペクトログラム  \hat{\boldsymbol{x}} \in \mathcal{X}を生成すること。

2ステージの学習からなるシステムで、それを図1に示す。

Text Encoder

Text Encoder  Tは音素  \boldsymbol{t}を潜在変数 \boldsymbol{h}_{text}に埋め込む( \boldsymbol{h}_{text} = T(\boldsymbol{t}))。
3層のLSTMで構成。

Text Aligner

テキストのアライメントを行うモジュール。Tacotron2ののデコーダにattentionを追加した形。automatic speech recognition(ASR)を使って事前学習。
外部アライメントに該当する。

Style Encoder

入力されたメルスペクトログラムからスタイルを抽出する。
4つのResBlockとaverage poolingからなる。

Pitch Extractor

システムはFastPitchに倣いF0をそのまま扱う。F0を利用することで合成音声の操作が可能になる。
推論時、 \boldsymbol{x}のピッチ  p_(\boldsymbol{x})はpitch extractor  Fで抽出する( p_{\boldsymbol{x}} = F(\boldsymbol{x}))。
 FはJDC ネットワークというもの(よくしらない)。

Decoder

Decoder  Gはこれまでの特徴量を使ってメルスペクトログラムを生成する。学習は再構成で行う。
音素アライメントを \boldsymbol{d}_{align}、スタイルを s、ログメルスペクトログラムを ||\boldsymbol{x}||として \hat{\boldsymbol{x}} = G(\boldsymbol{h}_{text} \cdot \boldsymbol{d}_{align}, s, p_x, ||\boldsymbol{x}||)
デコーダはAdaINを採用。

Discriminator

VITSではadversarial trainingはTTSで非常に有効とのことだったので導入。ネットワークはstyle encoderと同じ。
内部アライメントに該当する。

Duration Predictor

adaptive layer norm(AdaLN)を使った3層のbidirectional LSTM3層での構成。

Prosody Predictor

Prosody Predictor  Pはテキストとスタイルベクトルからピッチ p_{pred}とエネルギー ||x||_{pred}を予測する。

学習

学習は2ステージに分けられる。
1ステージ目はメルスペクトログラムとテキストからの再構成タスク。図1(a)がそれ。

1ステージ目の学習のうち始めの半分はText Alignerを使い、残りの半分はDPを使ったmonotonic alignを使う。

Text Alignerについてはアライメントを保証するためのASR loss( L_{s2s})とmonotonic align( \boldsymbol{d}_{hard})とのL1 lossをとる

また、VITSと同じ様に合成した音声に対してDiscriminatorを使ってadversarial lossとfeature matching lossをとる。

 TはDiscriminatorの層の総数、 N_ll層の特徴の総数、 D^lはDiscriminatorのl層。

これらのlossに重みをかけたものが1ステージ目のlossになる。


2ステージ目は図1(b)を参照。
Duration PredictorとPitch Predictorの学習とDecoderのfine-tuning。

Duration Predictorは \boldsymbol{d}_{align}で得たものをGTとしてL1 lossを取る。

Prosody Predictorはピッチとエネルギーを予測する。
augmentationとして、メルスペクトログラムを伸縮することでピッチ・エネルギーを保ったまま速度を変更できるのでそれを利用する。


 \tilde{p} ||\tilde{\boldsymbol{x}}|| \tilde{\boldsymbol{d}}_{align}はそれぞれaugmentationしたデータセット \tilde{\boldsymbol{x}} \in \tilde{\boldsymbol{\mathcal{X}}}のピッチ、エネルギー、アライメントのGT。

1ステージ目ではメルスペクトログラムから抽出したピッチとエネルギーを使っていたが、それを予測に置き換えてDecoderをfine-tuningする。

 \hat{\boldsymbol{x}} \tilde p ||\tilde{\boldsymbol{x}}||から合成したサンプル。

2ステージ目の最終的はlossは以下。

実験・結果


ablations

所感

気持ちとしてはアライメント生成を推移させるだけ?
実験結果的には自然性が増したという感じ。
メルスペクトログラムの再構成等でスタイルを反映するのにはAdaINやINが有効そうなのは学び。