1 of 60

VITS

Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech

の紹介と解説

@kaffelun

2 of 60

1. 概要

2. モデル概説

3. モデルの詳細

4. アーキテクチャ

5. まとめ

論文の概要と結果について

モデルの全体像を俯瞰

技術の紹介と誤差関数の導出

各ニューラルネットの内部構造,設定など

まとめと今後の研究について

2

3 of 60

1.

概要

3

4 of 60

1.1 メタ情報

4

著者: Jaehyeon Kim, Jungil Kong, Juhee Son

論文の概要:

Glow-TTS (https://arxiv.org/pdf/2005.11129.pdf) と�HiFi-GAN (https://arxiv.org/pdf/2010.05646.pdf) の2つを合体させ,いくつかの追加要素を盛り込んだモデル.�テキスト音声合成(TTS)と声質変換(VC)が可能で,TTSの公称性能はすさまじいスコアとなっている.

論文リンク: https://arxiv.org/pdf/2106.06103.pdf

公式デモ: https://jaywalnut310.github.io/vits-demo/index.html

公式実装(pytorch): https://github.com/jaywalnut310/vits

Glow-TTS, HiFi-GANの著者

5 of 60

1.2 性能評価(MOS)

5

TTSで評価したMOSは非常に高く,特にVCTKの方は頭一つ抜けており,本物と区別がつかなくなっている.実際のデモ音源も非常に鮮明.

LJ Speech: 英語,一人の女性,13100文(約24h)

VCTK: 英語,109人の男女,それぞれ約400文

6 of 60

1.3 性能評価(推論速度)

6

Glow-TTS + HiFi-GAN よりも速く,実時間の60倍以上の速度で実行できる.

ちなみにこの数値はGPUによる推論時の値とのこと.(githubのissueより)

Deterministic Duration Predictorの略

7 of 60

1.4 実際に学習させてみた結果

7

JVSコーパスの100人,各人130文の音声とテキストの組を使用.�400k itersまで学習.

学習結果: https://drive.google.com/drive/folders/1X061PLlof7o0hAjO5MiNbt0hJzM9De6v?usp=sharing

8 of 60

2.

モデル概観

8

9 of 60

2.1 学習時の流れ

誤差関数

  • Reconstruction loss
  • KL divergence loss
  • Duration loss
  • Adversarial loss
  • Feature matching loss

9

10 of 60

2.1 学習時の流れ

Reconstruction Loss

Decoderの出力のmel-specと,元のmel-specの間のL1誤差

10

11 of 60

2.1 学習時の流れ

KL Divergence Loss

Flowの出力f(z)とProjectionの出力の分布N(μ,σ)の間のKL情報量

11

12 of 60

2.1 学習時の流れ

Duration Loss

Duration Predictorが入力の音声長の分布を変形して正規分布に落とし込めているかを測る誤差

12

13 of 60

2.1 学習時の流れ

Adversarial Loss, Feature Matching Loss

Decoderの出力をDiscriminatorで評価した誤差

13

14 of 60

2.2 推論時の流れ

14

TTS

VC

sは元の話者ID

ŝは目標話者ID

15 of 60

3.

モデルの詳細

15

16 of 60

3.1 はじめに 〜ベイズの定理の使い方〜

ベイズの定理

16

データや標本など,既に観測されている確率変数をXとする.

潜在変数やパラメータで,まだ観測されていない確率変数をZとする.

尤度 (likelihood)

事前分布 (prior distribution)

証拠 (evidence) あるいは�周辺尤度(marginal likelihood)

事後分布 (posterior distribution)

17 of 60

3.2.1 VITSの Variational Inference

17

VITSのPosteriorEncoderとDecoderの組は,Conditional VAE(cVAE)になっている.

18 of 60

3.2.2 変分推論

18

X を生成したいものとする.このとき分布 p(X) を計算できれば X を生成できる.

p(X) を直接求めるのは難しいので潜在変数 Z を導入してみると,以下のようになる.

この積分は解析的に計算できないので,ここで事後分布 p(Z|X) に対し近似を使う.

19 of 60

3.2.2 変分推論

19

変分パラメータξを用いてp(Z|X)をq(Z;ξ)で近似すると,以下のようになる.

ℒ(x) はエビデンス下界(ELBO)と呼ばれる.

Xが与えられたときlog p(X)は固定なので,近似分布のKL Divergenceの最小化はELBOの最大化と等価になる.

20 of 60

3.2.3 VAE

20

VAEでは,以下のようにしてモデル分布pおよび近似確率分布qを定める.

上式におけるfがデコーダ,m,vがエンコーダと呼ばれていて,それぞれニューラルネットで構成されている.

21 of 60

3.2.3 VAE

21

VAEの誤差関数E(θ,φ)は次のようになる.

Reconstruction Loss

KL Divergence Loss

DecoderのWeightDecay

22 of 60

3.2.4 cVAE

22

cVAEは事前分布p(z)にcを条件付けることで直ちに導出できる.

Reconstruction Loss

KL Divergence Loss (& WeightDecay)

23 of 60

3.3.1 Normalizing Flow

利点:

  • 確率分布を直接計算できるので不完全な問題もモデリングしやすい
  • 逆変換を実現できる

欠点:

  • 構造上の制約で表現能力が低い
  • 学習に時間がかかる
  • 学習速度が遅い場合がある(行列式の計算にO(D³)かかる場合があるため)

23

可逆な関数(ニューラルネット)を使って変換を行う手法

24 of 60

3.3.1 Normalizing Flow

24

数式で表すと以下のようになる.fがFlowで,入力がx,出力がyである.

25 of 60

3.3.2 音声合成における応用例

WaveGlow

MelSpectrogramなどの音響特徴量から音声波形を生成するボコーダモデルの一つ.

GlowというFlow構造を使用.

ParallelWaveNet

自己回帰構造のWaveNetで学習したモデルを,並列構造のモデルで蒸留する.

Inverse Autoregressive Flow (IAF)�というFlow構造を使用.

25

26 of 60

3.3.3 Affine Coupling Layer

26

変数を二つに分割し,片方だけをニューラルネットで変換することで�可逆なネットワークを実現する.

内部のニューラルネットは可逆でなくても良い.

27 of 60

3.3.4 Neural Spline Flow

27

Affine Coupling Layerで, Affine 変換の代わりに�Monotonic rational-quadratic transforms (単調で区分的な有理二次変換)�を用いる.

ややこしい上に本筋にはほとんど影響しないので詳細は省略.

28 of 60

3.4.1 Alignmentについて

28

テキストと音声を対応づける方法はモデルによって違う.

  • Attentionを使って対応させる

例: TransformerTTS, Tacotron2

  • Alignmentを使用する
    • 別の手法で生成したAlignmentを使う

例: FastSpeech

    • モデル内部で生成したAlignmentを使う(VITSはコレ)

例: Efficient-TTS, Glow-TTS

29 of 60

3.4.2 Monotonic Alignment Search

29

VITS(とGlow-TTS)はMonotonic Alignment Search(MAS)という手法を使う.

Monotonic Alignmentの特徴

  • 戻らない
  • 飛ばさない
  • 最後まで辿り着く

30 of 60

3.4.2 Monotonic Alignment Search

30

MASではKL Divergenceを最小にするアライメントを求める.

音声の時刻jがテキストのa(j)番目の音素に対応する場合,KL Divergenceは

と表される.

とおく

0で固定

31 of 60

3.4.2 Monotonic Alignment Search

31

まず,KL Divergence の累積和の最小値を動的計画法により求める.

32 of 60

3.4.2 Monotonic Alignment Search

32

次に,KL Divergence が最も小さくなるパターンを,逆向きに辿って求める.

33 of 60

3.5.1 GAN

33

並列構造のモデルで音声波形を直接生成するのは難しいため,�GANを用いる.モデル構造や誤差関数はHiFi-GANと同じ.

Feature Matching LossはDiscriminator内の各層が,RealとFakeで似た出力になるようにするための正則化である.

34 of 60

3.5.2 LSGAN

34

VITS(とHiFi-GAN)では,誤差関数をSigmoidCrossEntropyではなく二乗誤差(MSE)を使用している.MSEはSigmoidCrossEntropyに比べ勾配が急峻で,勾配消失問題を起こしにくいので安定した学習が期待できる.

35 of 60

3.6 全体の確率モデル

モデル分布のグラフィカルモデル

35

36 of 60

3.6 全体の確率モデル

近似分布のグラフィカルモデル

36

37 of 60

3.6 全体の確率モデル

モデル分布

近似分布

37

38 of 60

3.6 全体の確率モデル

誤差関数の導出

38

Reconstruction Loss

KL Divergence Loss

Duration Loss

39 of 60

4.

アーキテクチャ

39

40 of 60

4.1.1 TextEncoder

40

TextEncoderはGlow-TTSとほぼ同じ

  • 右図のpre-netは取り除かれている
  • Attention では relative positional embedding を使用
  • n_head=2, kernel_size=5, p_dropout=0.1

41 of 60

4.1.2 PriorFlow

41

  • 4層のAffine Coupling Layerを重ねた形
  • ニューラルネット部分は4層のWaveNet residual block
  • 体積保存な変換に制限することでlogdet=0にする

42 of 60

4.2 PosteriorEncoder

42

  • 16層のWaveNet residual block (dilation=1, kernel_size=5, channels=192)
  • 入力はlinear-scale, log-magnitudeのスペクトログラムで513 channels
  • 出力は潜在変数m, log(s) でそれぞれ192 channels

43 of 60

4.3 Decoder

43

HiFi-GAN(v1)のGeneratorと同様の構造になっている.ただし,入力はmel-specではなく潜在変数zになっている.

DecoderにはPosteriorEncoderの出力の時系列のうち一部分だけを入力する.

44 of 60

4.4 Discriminator

44

こちらもHiFi-GANと同じ構造.

45 of 60

4.5 Stochastic Duration Predictor

45

TTSの推論時にはAlignmentを自前で作る必要があるため,音素系列から音素継続長を予測させる必要がある.

Stochastic Duration Predictor では音素継続長を確率的に生成する.

46 of 60

4.5.1 音素長の確率推定

離散整数値である

そのままではニューラルネットで連続最適化することができない

1次元のスカラーである

高次元の分布に落とし込むことが難しい

variational data augmentation!

variational dequantization!

46

音素長を確率的に推定するのは以下の理由から一筋縄ではいかない.

47 of 60

4.5.2 Variational Dequantization & Data Augmentation

学習時

  • h_textと音素長d,ノイズεQ を入力としてPosterior Encoder(これもFlow)でu,νを生成
  • d - u と νを入力としてFlowでεDを生成

47

離散的な音素長をd,真の音素長をd-u ( u∈[0,1) )とする.

変なパラメータ をνとする.

εQ

εD

48 of 60

4.5.2 Variational Dequantization & Data Augmentation

推論時

  • ノイズεDを入力としてFlowの逆変換によりd-uとνを生成
  • d-uの小数点を切り上げてdとする.νは不要なので捨てる.

48

離散的な音素長をd,真の音素長をd-u ( u∈[0,1) )とする.

変なパラメータ をνとする.

εD

49 of 60

4.5.3 Stochastic Duration Predictorの確率モデル

モデル分布

近似分布

49

50 of 60

4.5.3 Stochastic Duration Predictorの確率モデル

誤差関数の導出

50

51 of 60

4.5.4 Stochastic Duration Predictorの内部構造

51

52 of 60

4.6 全体の設定

52

  • AdamW(β1= 0.8, β2=0.99) で最適化
  • Weight decay(λ=0.01) を適用
  • 学習率は2×10-4
  • SchedulerはExponentialLR(0.9991/8/epoch)を使用
  • バッチサイズは64(x4GPUs),GPUはNvidia V100 x4で学習
  • MultiSpeakerで学習させる場合は,TextEncoder以外の全てのモジュールに256channelsのembeddingを加える.(詳細は実装コード参照)

53 of 60

5.

まとめ

53

54 of 60

5.1 論文の総括

54

  • Glow-TTS,HiFi-GAN,VAEのいいとこ取りで性能向上した
  • 確率的な音素長推定を実現した

個人的な感想:

  • VAE, Flow, GANと三大生成系モデルが同時に入っているのは面白い
  • Flowを随所に使っていて,理論的にも実用的にも優れているのもポイント高い
  • Glow-TTSでは未完成だった声質変換タスクへの対応もできていてスゴイ
  • 理論は非常に難解だが,それ故に拡張性も高い

55 of 60

5.2 補足

55

MOSは元の音声と同じ値になっているが,CMOSでの相対比較ではわずかに元音声の方が好ましいという結果になった.

56 of 60

5.3 Future work

56

  • この論文ではVocoderを合体させることでEnd-to-EndなTTSを実現したが,�テキストの処理には問題が残っていることを指摘
    • 日本語のアクセントなどはphonemeになった時点で消えている
    • 英語でもテキスト→音素は外部のモジュールを使用している
  • 自己教師学習により言語表現を獲得させ,テキスト処理をなくしたい
    • Wav2Vec2.0やBERTなどとの関連も?

57 of 60

ご清聴ありがとうございました

57

58 of 60

参考文献

  • Kim, Jaehyeon, Jungil Kong, and Juhee Son. "Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech." arXiv preprint arXiv:2106.06103 (2021).
  • Kim, Jaehyeon, et al. "Glow-TTS: A Generative Flow for Text-to-Speech via Monotonic Alignment Search." Advances in Neural Information Processing Systems 33 (2020).
  • Kong, Jungil, Jaehyeon Kim, and Jaekyoung Bae. "HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesis." Advances in Neural Information Processing Systems 33 (2020).
  • Durkan, Conor, et al. "Neural spline flows." Advances in Neural Information Processing Systems 32 (2019): 7511-7522.
  • Dinh, Laurent, Jascha Sohl-Dickstein, and Samy Bengio. "Density estimation using real nvp." arXiv preprint arXiv:1605.08803 (2016).
  • Prenger, Ryan, Rafael Valle, and Bryan Catanzaro. "Waveglow: A flow-based generative network for speech synthesis." ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019.
  • Oord, Aaron, et al. "Parallel wavenet: Fast high-fidelity speech synthesis." International conference on machine learning. PMLR, 2018.
  • Pan, Zhaoqing, et al. "Recent progress on generative adversarial networks (GANs): A survey." IEEE Access 7 (2019): 36322-36333.

58

59 of 60

付録: 深層学習系TTS論文の変遷(重要そうな論文のみ列挙)

59

2018/09

2018/07

2018/03

2017/12

2017/10

2017/03

60 of 60

付録: 深層学習系TTS論文の変遷(重要そうな論文のみ列挙)

60

2020/12

2020/06

2020/05

2019/09

2019/05

EATS