[論文メモ] MATCHA-TTS: A FAST TTS ARCHITECTURE WITH CONDITIONAL FLOW MATCHING

arxiv.org
github.com

デモページ
shivammehta25.github.io


flow matchingを用いたTTS、Matcha-TTSの提案。
Matcha-TTSの名前の由来はflow matching for TTSの聞こえがmatcha teaに似てるから。茶がかぶってる...

手法

図1がMatcha-TTSのアーキテクチャ全体像。
ほぼほぼGrad-TTSと同じアーキテクチャで一番の違いはflow matchingで音響特徴(メルスペクトログラム)を生成しているところ。

Grad-TTSはordinary differential equation (ODE)を使っているがMatcha-TTSはflow matchingを利用している。
flow matchingの詳細については以下の論文を参照。
arxiv.org

式の導出については省略し結論だけ書くと以下の式が目的関数になる。

 \mathcal{L}(\theta) = \mathbb{E}_{t, q(x_1), p(x_0)}||v_t(\psi_t (x_0))  - (x_1 - (1 - \sigma_{min}) x_0)||^2
 \psi_t(x) = (1 - (1 - \sigma_{min})t)x + tx_1)

最適輸送flow matchingの目的関数で、 x_0がガウシアンノイズ、 x_1が元のデータ、 tは時間で[0, 1]、 \sigma_{min}はハイパラでここでは1e-4としている。 \boldsymbol{v}_tが学習対象のニューラルネット
学習データからサンプル x_1を取り出して上記式にしたがって最適化するだけなので非常にシンプルで良い。

このflow matching(正確にはconditional flow matching, CFM)を用いてメルスペクトログラムを生成する。
なので x_1がメルスペクトログラムになる。また、ただCFMを適用するのではなく、平均音素特徴を条件とする。なので \boldsymbol{v}_t(\cdot| \boldsymbol{\mu})になる。
図1の左上が \boldsymbol{\mu}になる。これは学習中に獲得されるもので特別生成するわけではない。要するにend2endでの学習になる。

flow prediction networkはResidualブロックとtransformer(Conformer)ブロックを含んだU-Net。
durationに関しては教師データを用いず、Glow-TTS等と同じくMonotonic Alignment Searchで探索する。

実験結果

データセットはLJ Speech。
比較対象はGrad-TTS(GRAD)、FastSpeech2(FS2)、VITS、そしてGrad-TTSを最適輸送CFMで学習したGCFMの4つ。GCFMと本手法の差分はアーキテクチャぐらいになるはず。なのでCFMとODE-baseの比較というかんじ。
VITS以外は音響特徴を生成するモデルなのでvocoderを必要とする。vocoderはLJ Speechで学習済みのパブリックなHiFi-GANを利用。

ODE-baseな手法は品質が生成時のステップ数で変化するのでいくつかのステップで比較。なおすべてオイラー法で生成。

結果が表1。提案手法はMAT-n。
RTFはFS2に負けているものの、2ステップのMAT-2はかなり高速にも関わらず既存手法よりも低いWER。
MOSに関しては4ステップくらいからVITSに勝てる。
ステップ数を増やせば生成速度が遅くなるものの、品質が向上しているのも確認できる。


テキストの長さと生成時間のプロットが以下の図3。
テキストはGPT-2で生成。
全体として高速なMAT-nだが、MAT-2はそこそこ長いテキストならFS2よりも効率が良くなる。MAT-4も同じ感じ。十分高速と言えそう。

実験(自分)

データセットはJVS等やずんだもん。
サンプリングレートは24kHz。
vocoderは自作のVocGAN。
オイラー法による100ステップの生成結果。


GT


GTのメルスペクトログラムから生成


Matcha-TTS

なんか音素がおかしい...

所感

最近話題のflow matchingをGrad-TTSに適用してみたという感じ。

デモページでステップ数を変更しての生成結果の聞き比べができるが、低ステップ数でもそれなりの品質が得られてそう。
アーキテクチャがそこそこ軽量なのか生成速度も早い。
ただtransformerを含んでいるのでテキストが多くなると計算量が結構増えそうではある。そこそこ早いのはConformerの恩恵もある?

流行りのせいか同じ時期に似たようなVoiceFlowなる手法も提案されていた。
arxiv.org
VoiceFlowは \sigma_{min}=0としていて、これはこれまた似た時期に出た Rectified Flowという手法と同じらしい。
https://openreview.net/pdf?id=XVjTT1nw5zopenreview.net

こういった同じ時期に似たような手法が提案されるのは技術の発展・系譜的なものを感じる。