[論文メモ] SNAC: Speaker-normalized affine coupling layer in flow-based architecture for zero-shot multi-speaker text-to-speech
zero-shot multi-speaker TTSのための話者を明示的に正規化するSNAC layerの提案
既存のzero-shot multi-speaker TTS (ZMS-TTS)では話者専用のエンコーダを用意してstyle transferの要領で変換することが多い。
またそのときにはFastSpeech系のfeed-forwardモデルが採用されやすい。
最近話題のVITSのようなflow-basedな手法ではreverse flowが必要なのであまり検討されていない。
そこで話者情報を正規化するaffine coupling layerを提案。
手法
affine coupling layerは入力を2つに分けて片方を普通の入力、片方をアフィン変換のパラメータの計算に用いる。
入力を、として
これで得られたと]をconcatして出力とする。
逆変換は以下でできる。
アフィン変換のパラメータがわかっているので単純に正規化するだけ。
このaffine coupling layerについて話者情報を条件とし、話者情報について明示的に正規化したい。ここで話者情報は固定長の埋め込みベクトルとする。
戦略としては入力される話者に依存した特徴からの情報を抜き取るように正規化し、逆変換時に指定した話者の分布になるように。
そこで speaker-normalized affine coupling (SNAC) layerを提案。
正規化時、シンプルにを使って入力を正規化を行う。
をに置き換えただけ。
逆変換も同じ感じで
log-determinantの計算も普通にできる。
SNAC layerのイメージが図1
実験・結果
ベースのモデルはVITSでデータセットはVCTK。
VCTKの109話者のうち、11人をin-domainの、LibriTTSから20人をout-of-domainのテスト話者として利用。
話者埋め込みにはスペクトログラムを入力としたconv2dとGRUを積んだネットワークを利用。出力は256次元の埋め込み。
これをreference encoder(REF)とする。
以下3つのベースラインを用意
Baseline+REF+ALL :REFを利用したVITS
Baseline+REF+FLOW :Flowとduration predictorにのみ話者埋め込み(REF)を利用。generatorは埋め込みを利用しない
Baseline+PRETRAINED+FLOW :Baseline+REF+FLOWにおいてREFを事前に学習し固定して利用
上記3つのベースラインのflow layerをSNACに置き換えてそれぞれ比較。
評価指標はMOSと話者類似度MOS(SMOS)と話者埋め込みのコサイン類似度(SECS)
話者埋め込みの計測は SpeechBrain toolkitを利用。
結果が表1。MOS、SMOSは高いがSECSが既存手法(YourTTS)より小さい。
YourTTSは話者埋め込みが近くなるような学習をしているかららしい。
正直、既存のVITSと大きな差がなく見える。
話者埋め込みは学習済みではなく、同時に学習したほうが良さそう。特徴量のドメインシフトの問題か?
所感
手法自体はシンプルでそこそこ納得感もある。実験結果的に悪くはなさそうだが、劇的な改善もなさそうに見える。
generatorが話者非依存にできそうなのは良いかも。
実際試した感じあまり効果は感じなかった。が曲者でこいつのせいですぐにnanになることが多かった。
非公式の実装ではを利用しておらず、気持ちはわかる。