[論文メモ] NNSPEECH: SPEAKER-GUIDED CONDITIONAL VARIATIONAL AUTOENCODER FOR ZERO-SHOT MULTI-SPEAKER TEXT-TO-SPEECH

arxiv.org
間違えてるかもしれないので注意。

Conditional VAE(CVAE)を使ったzero-shot text-to-speech(TTS)の提案。
f:id:Ninhydrin:20220224094559p:plain
既存手法だとほかfine-tuningしたりタスクで学習したSpeaker Encoderを使ったりする方法があるが、fine-tuningはデータの保存や学習コストが高い(ユーザーが多いと更に大変)、Encoderを使うのはクオリティが低い(Encoderの解像度だと表現しきれない)。
なので提案するnnSpeech(no new speech)ではSpeakerをガイドとしたCVAEを利用してzero-shot化する。

手法

f:id:Ninhydrin:20220224093009p:plain

CVAEは条件付きのVAEで下記の条件付きの対数尤度で学習する。

f:id:Ninhydrin:20220224093608p:plain

 XをメルスペクトログラムEncoderの出力、 Cを音素Encoderの出力とする。
メルスペクトログラムEncoderはAdaIN-VCのものを、音素EncoderはFastSpeech2のものを利用する。

条件付き分布 p(X, Z|C) = p_{\theta}(X|C, Z)p_{\theta}(Z|C)を考える( p_{\theta}(X|C, Z) p_{\theta}(Z|C)はネットワークでモデリング)。
図1(a)のように真の p_{\theta}(Z|C) p_{\phi}(Z|C,X)モデリングすると、メルスペクトログラム Xを再構成するときに潜在変数 Zが話者情報を持つ必要があるため直感に反する。

そこでspeaker-guided CVAEを提案する。 Zが話者情報 Sに基づいていると仮定する(p_{\theta}(Z|C) = p_{\theta}(Z|C,S))。そしてp_{\theta}(Z|C,S) q_{\theta}(Z|C,X)で予測する。
 Z Cの情報を含んでいるので p_{\theta}(X|C, Z, S) = p_{\theta}(X|Z, S)とできる。

もとの条件付き分布を書き換えて、 p(X, Z|C, S) = p_{\theta}(X|Z,S)p_{\theta}(Z|C,S)になる。

 q_{\phi}(Z|C,X) p_{\theta}(Z|C,S)はガウシアンに従うと仮定して、それらの平均、分散は X, C, SからMLPで予測する。

lossは話者情報で変更したELBOの最大化
f:id:Ninhydrin:20220225091844p:plain


一項目と二項目のは生成したメルスペクトログラムと話者埋め込みに関するものでELBOの最大化のためにはMLEを最小化すれば良い。
f:id:Ninhydrin:20220225091919p:plain

三項目はKLの最小化。
f:id:Ninhydrin:20220225092446p:plain

最終的なlossは下記で \alpha, \beta, \gammaはハイパラ。
f:id:Ninhydrin:20220225092538p:plain

なおボコーダはHifiGANを利用。

実験・結果

f:id:Ninhydrin:20220225092618p:plain
f:id:Ninhydrin:20220225092637p:plain
f:id:Ninhydrin:20220225092652p:plain

所感

paper内でデモや結果のリンクがなかったのは珍しい(VC系は最近デモの公開が多いので)。
それ故に少々結果は懐疑的。ぶっちゃけ数字だけでは何もわからない。