VITS: Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech
どんなものか ( 要約、システムのI/Oなど)
Text-to-Speech(TTS)およびVoice Conversion(VC)を行うモデル
同じテキストでもイントネーションや音素毎の読み上げ速度にはバリエーションが存在するため、一つの入力テキストに対して様々な抑揚とリズムで生成する予測器(Sthochastic duration predictor)を提案
先行研究と比べてすごいところ、貢献
一般にTTSは2段階のアーキテクチャになっている。
1: 前処理されたテキストから、メルスペクトログラム(Shen et al., 2018)や言語特徴(Oordet al., 2016)などの中間音声表現を生成すること
2: 中間表現を条件とした生の波形を生成すること
既存の問題点: 2つのモデルが別々に存在していることによって、上流タスクの品質が下流タスクの品質を決定してしまう。また、下流のモデルは上流のモデルが与える表現に合わせてファインチューニングを行わなけばならない。 貢献:VAEとGANを並列に学習させるアーキテクチャを設計し、SOTAを達成した。 手法
https://gyazo.com/047cdf10a3f32142b8fb5d9c124ca75f
https://gyazo.com/2507db89d021e8f37849e5e621a3149e
概要
入力
テキストの音素列
テキストを読み上げた音声のスペクトログラム
(学習時)話者のid
1: 読み上げ音声の特徴抽出、再構成
cVAE
スペクトログラムを波形に変換するモデル
話者idをEncoder, Decoderにそれぞれ条件として入力する。
(?)Lossは出力波形をメルスペクトログラムに変換し、入力した音声のメルスペクトログラムとの差分を取っている。
メルスペクトログラムで比較を行うことによって人間の聴覚特性を優先した学習が行える
メモリの節約のため、中間表現zからランダムな箇所をカットして音声の一部分のみをDecoderに渡す
GAN
cVAEのDecoder(Generatorとみなせる)から出力された波形と、正解の波形をDiscriminatorが受け取って学習を行う
Flow
cVAEの潜在変数z、話者idを入力として受け取り、zから話者情報をできるだけ取り除いて発音に関する情報のみを残した特徴zpを出力する
このとき、zとzpのサイズは同じである。
Flowとは?
https://gyazo.com/2e27aeb29a24b637de3987d1d446c568
逆変換可能な生成モデル
多変量正規分布からサンプリングされた潜在変数を受け取る。入力zの次元と出力x´の次元が同じである。
正解となるxは複雑な分布であるため、逆変換可能な関数を繰り返し適用することで複雑な分布にフィットさせる
https://gyazo.com/0acbe798806b241f711002d6aa5a0648
2: テキストの特徴抽出
Text Encoder
Transformer Encoderを利用
テキストの音素列を入力として、潜在表現htextに写像する
Loss
Projection
CNNで、htext内の各トークンに対してパラメータμ, σを写像する
Loss
3: 1, 2で得られた音声とテキストの特徴を関連付ける
Monotic Alignment Search
https://gyazo.com/318c8754b492661d24b3f4fc6b241b09
テキスト、音声双方の特徴は、時間軸方向に並んでいるという共通点がある。
時間軸方向に、音素とテキストのベクトルの関連付け(ペアの作成)をおこなう。
このとき、上図に表すように最初のトークンから最後のトークンに至るまでの経路選択問題と捉えることが出来る。(戻らない、飛ばさない、最後まで到達する条件付き)
ただし、経路は対数尤度の累積和が最大となるように動的計画法を用いて解く。
各ノードにおける尤度
https://gyazo.com/d8b4a68dc93787d97a3e01b182e9a3c1
テキストの特徴抽出を行うProjectionから出力されたμ, σをそれぞれ平均、標準偏差に持つ正規分布を仮定
(?)この分布に対する、 読み上げ音声の特徴抽出を行うFlowの出力fΘ(z)が観測される場合のパラメータの尤度
動的計画法の実行
時刻i, jにおいて、max(Q(i-1, j-1), Q(i, j-1))を取る
それに対してLi, jを加算していくことで対数尤度の累積和を取っていく
右下(s, t)に到達した後、キャッシュしたQ(s, t-1), Q(i-1, j-1)のmaxをとり大きい方向に戻っていく。
各入力音素のトークンに対して、関連付けされた音声特徴の数をDurationとして出力する
上図の時、(1, 3, 1, 2, 1)
4: Sthochastic duration predictor
https://gyazo.com/87c908f7d64e358648ddfb798a830696
(?)text-to-speechの推論時、各音素がどの程度の長さ発音されているかを予測するネットワーク
学習時
入力: 話者id, htext, Duration
出力: Noise
推論時
入力: htext, noise, 話者id
出力: Duration
Durationが離散値であるためFlowでの最適化が難しい。それを解決するための手法として、
variational dequantizeation
variational data augumentation
推論時の挙動
TTS
https://gyazo.com/26cbab77759619b08438bf4e5bbbc70b
VC
https://gyazo.com/98ab623773950e9262cf14e5732166e3
検証方法
議論、課題
次に読むべき論文
Flow
コメント
参考文献