VITS
Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech
の紹介と解説
@kaffelun
1. 概要
2. モデル概説
3. モデルの詳細
4. アーキテクチャ
5. まとめ
論文の概要と結果について
モデルの全体像を俯瞰
技術の紹介と誤差関数の導出
各ニューラルネットの内部構造,設定など
まとめと今後の研究について
2
1.
概要
3
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の著者
1.2 性能評価(MOS)
5
TTSで評価したMOSは非常に高く,特にVCTKの方は頭一つ抜けており,本物と区別がつかなくなっている.実際のデモ音源も非常に鮮明.
LJ Speech: 英語,一人の女性,13100文(約24h)
VCTK: 英語,109人の男女,それぞれ約400文
1.3 性能評価(推論速度)
6
Glow-TTS + HiFi-GAN よりも速く,実時間の60倍以上の速度で実行できる.
ちなみにこの数値はGPUによる推論時の値とのこと.(githubのissueより)
Deterministic Duration Predictorの略
1.4 実際に学習させてみた結果
7
JVSコーパスの100人,各人130文の音声とテキストの組を使用.�400k itersまで学習.
学習結果: https://drive.google.com/drive/folders/1X061PLlof7o0hAjO5MiNbt0hJzM9De6v?usp=sharing
2.
モデル概観
8
2.1 学習時の流れ
誤差関数
9
2.1 学習時の流れ
Reconstruction Loss
Decoderの出力のmel-specと,元のmel-specの間のL1誤差
10
2.1 学習時の流れ
KL Divergence Loss
Flowの出力f(z)とProjectionの出力の分布N(μ,σ)の間のKL情報量
11
2.1 学習時の流れ
Duration Loss
Duration Predictorが入力の音声長の分布を変形して正規分布に落とし込めているかを測る誤差
12
➖
2.1 学習時の流れ
Adversarial Loss, Feature Matching Loss
Decoderの出力をDiscriminatorで評価した誤差
13
2.2 推論時の流れ
14
TTS
VC
sは元の話者ID
ŝは目標話者ID
3.
モデルの詳細
15
3.1 はじめに 〜ベイズの定理の使い方〜
ベイズの定理
16
データや標本など,既に観測されている確率変数をXとする.
潜在変数やパラメータで,まだ観測されていない確率変数をZとする.
尤度 (likelihood)
事前分布 (prior distribution)
証拠 (evidence) あるいは�周辺尤度(marginal likelihood)
事後分布 (posterior distribution)
3.2.1 VITSの Variational Inference
17
VITSのPosteriorEncoderとDecoderの組は,Conditional VAE(cVAE)になっている.
3.2.2 変分推論
18
X を生成したいものとする.このとき分布 p(X) を計算できれば X を生成できる.
p(X) を直接求めるのは難しいので潜在変数 Z を導入してみると,以下のようになる.
この積分は解析的に計算できないので,ここで事後分布 p(Z|X) に対し近似を使う.
3.2.2 変分推論
19
変分パラメータξを用いてp(Z|X)をq(Z;ξ)で近似すると,以下のようになる.
ℒ(x) はエビデンス下界(ELBO)と呼ばれる.
Xが与えられたときlog p(X)は固定なので,近似分布のKL Divergenceの最小化はELBOの最大化と等価になる.
3.2.3 VAE
20
VAEでは,以下のようにしてモデル分布pおよび近似確率分布qを定める.
上式におけるfがデコーダ,m,vがエンコーダと呼ばれていて,それぞれニューラルネットで構成されている.
3.2.3 VAE
21
VAEの誤差関数E(θ,φ)は次のようになる.
Reconstruction Loss
KL Divergence Loss
DecoderのWeightDecay
3.2.4 cVAE
22
cVAEは事前分布p(z)にcを条件付けることで直ちに導出できる.
Reconstruction Loss
KL Divergence Loss (& WeightDecay)
3.3.1 Normalizing Flow
利点:
欠点:
23
可逆な関数(ニューラルネット)を使って変換を行う手法
3.3.1 Normalizing Flow
24
数式で表すと以下のようになる.fがFlowで,入力がx,出力がyである.
3.3.2 音声合成における応用例
WaveGlow
MelSpectrogramなどの音響特徴量から音声波形を生成するボコーダモデルの一つ.
GlowというFlow構造を使用.
ParallelWaveNet
自己回帰構造のWaveNetで学習したモデルを,並列構造のモデルで蒸留する.
Inverse Autoregressive Flow (IAF)�というFlow構造を使用.
25
3.3.3 Affine Coupling Layer
26
変数を二つに分割し,片方だけをニューラルネットで変換することで�可逆なネットワークを実現する.
内部のニューラルネットは可逆でなくても良い.
3.3.4 Neural Spline Flow
27
Affine Coupling Layerで, Affine 変換の代わりに�Monotonic rational-quadratic transforms (単調で区分的な有理二次変換)�を用いる.
ややこしい上に本筋にはほとんど影響しないので詳細は省略.
3.4.1 Alignmentについて
28
テキストと音声を対応づける方法はモデルによって違う.
例: TransformerTTS, Tacotron2
例: FastSpeech
例: Efficient-TTS, Glow-TTS
3.4.2 Monotonic Alignment Search
29
VITS(とGlow-TTS)はMonotonic Alignment Search(MAS)という手法を使う.
Monotonic Alignmentの特徴
3.4.2 Monotonic Alignment Search
30
MASではKL Divergenceを最小にするアライメントを求める.
音声の時刻jがテキストのa(j)番目の音素に対応する場合,KL Divergenceは
と表される.
とおく
0で固定
3.4.2 Monotonic Alignment Search
31
まず,KL Divergence の累積和の最小値を動的計画法により求める.
3.4.2 Monotonic Alignment Search
32
次に,KL Divergence が最も小さくなるパターンを,逆向きに辿って求める.
3.5.1 GAN
33
並列構造のモデルで音声波形を直接生成するのは難しいため,�GANを用いる.モデル構造や誤差関数はHiFi-GANと同じ.
Feature Matching LossはDiscriminator内の各層が,RealとFakeで似た出力になるようにするための正則化である.
3.5.2 LSGAN
34
VITS(とHiFi-GAN)では,誤差関数をSigmoidCrossEntropyではなく二乗誤差(MSE)を使用している.MSEはSigmoidCrossEntropyに比べ勾配が急峻で,勾配消失問題を起こしにくいので安定した学習が期待できる.
3.6 全体の確率モデル
モデル分布のグラフィカルモデル
35
3.6 全体の確率モデル
近似分布のグラフィカルモデル
36
3.6 全体の確率モデル
モデル分布
近似分布
37
3.6 全体の確率モデル
誤差関数の導出
38
Reconstruction Loss
KL Divergence Loss
Duration Loss
4.
アーキテクチャ
39
4.1.1 TextEncoder
40
TextEncoderはGlow-TTSとほぼ同じ
4.1.2 PriorFlow
41
4.2 PosteriorEncoder
42
4.3 Decoder
43
HiFi-GAN(v1)のGeneratorと同様の構造になっている.ただし,入力はmel-specではなく潜在変数zになっている.
DecoderにはPosteriorEncoderの出力の時系列のうち一部分だけを入力する.
4.4 Discriminator
44
こちらもHiFi-GANと同じ構造.
4.5 Stochastic Duration Predictor
45
TTSの推論時にはAlignmentを自前で作る必要があるため,音素系列から音素継続長を予測させる必要がある.
Stochastic Duration Predictor では音素継続長を確率的に生成する.
4.5.1 音素長の確率推定
離散整数値である
そのままではニューラルネットで連続最適化することができない
1次元のスカラーである
高次元の分布に落とし込むことが難しい
variational data augmentation!
variational dequantization!
46
音素長を確率的に推定するのは以下の理由から一筋縄ではいかない.
4.5.2 Variational Dequantization & Data Augmentation
学習時
47
離散的な音素長をd,真の音素長をd-u ( u∈[0,1) )とする.
変なパラメータ をνとする.
εQ
εD
4.5.2 Variational Dequantization & Data Augmentation
推論時
48
離散的な音素長をd,真の音素長をd-u ( u∈[0,1) )とする.
変なパラメータ をνとする.
εD
4.5.3 Stochastic Duration Predictorの確率モデル
モデル分布
近似分布
49
4.5.3 Stochastic Duration Predictorの確率モデル
誤差関数の導出
50
4.5.4 Stochastic Duration Predictorの内部構造
51
4.6 全体の設定
52
5.
まとめ
53
5.1 論文の総括
54
個人的な感想:
5.2 補足
55
MOSは元の音声と同じ値になっているが,CMOSでの相対比較ではわずかに元音声の方が好ましいという結果になった.
5.3 Future work
56
ご清聴ありがとうございました
57
参考文献
58
付録: 深層学習系TTS論文の変遷(重要そうな論文のみ列挙)
59
2018/09
2018/07
2018/03
2017/12
2017/10
2017/03
付録: 深層学習系TTS論文の変遷(重要そうな論文のみ列挙)
60
2020/12
2020/06
2020/05
2019/09
2019/05