[論文メモ] Generative Pre-training for Speech with Flow Matching

arxiv.org

MetaAI internship

TTSや音声強調等のダウンストリームタスクのパフォーマンスを向上させるFlow Matching生成モデルの事前学習方法の提案

wav2vecやHuBERT等のSSLモデルは特徴量抽出のための基盤モデルとしてよく利用される。
生成モデルはスピーチタスクにおける基盤モデルとして使えるのかを調査した。

よい生成モデルは他のスピーチタスクにも応用できるという考え。

提案手法名はSpeechFlow

手法

SpeechFlowという名前からわかるように最近ちょっと流行りのFlow Matchingがベースになる。

最適輸送のConditional Flow Matchingの目的関数は以下。

 \psi_t(x) = (1 - (1 - \sigma_{min})t)x + tx_1)


 x_0がガウシアンノイズ、 x_1が元のデータ、 tは時間で[0, 1]、 \sigma_{min}はハイパラでここでは1e-5、 v_tが学習対象のニューラルネット

このflow matchingモデルを事前学習して他のダウンストリームタスクに応用する。
この生成モデルの出力は x \in \mathcal{R}^{d \times L}の音響特徴(メルスペクトログラム)を採用する。 dはメルスペクトログラムの次元数、 Lはフレーム長。
学習時に使うデータはラベルのないただの発話データ。

wav2vecやHuBERTなどで使われていたマスク部分予測をここでも採用する。
モデルの入力としてノイズ x_0だけでなくマスクされたメルスペクトログラム x_{mask}も入力とした条件付き生成モデルとする。
よって目的関数は以下のようになる。

 x_{mask}は確率 p_{cond}で入力され、 1 - p_{cond}ですべてマスクされた情報のない x_{mask}が入力される。
入力メルスペクトログラムの n_{mask}がマスクされ、マスク箇所は最低 l_{mask}フレームマスクされる。
 x_{mask}は入力となる \psi_{t}(x_0)と周波数方向でconcatされ、モデルの次元に合うように線形変換される。
マスク箇所は0で埋められてマスクされていない箇所のみでlossをとる。
実験では n_{mask} \sim \mathcal{U}[70%, 100%]、 l_{mask} = 10をデフォルトに。

こうして出来上がったモデルの入力 x_{mask}をタスクに合わせたものに変更しfine tuningする。

 yはタスク毎に変化する。

音声強調:ノイズの乗った音声
音声分離:複数話者の混ざった音声
TTS:アライメントされた音素特徴

SpeechFlowの全体像が以下の図1

実験・結果

細かい設定等は論文参照。

音声強調の結果が表1。他手法と異なり音響特徴ベースにもかかわらず善戦。

音声分離の結果が表2。素のSpeechFlowでは少々厳しい。
ESTOIiはよいけどSI-SDRiは低く、調べるとSI-SDRiはメルスペクトログラムからwavを生成する時点で厳しい。
Upper-bound w/ clean Specは元のメルスペクトログラムを利用したものだが、それでもこの程度。
そこでinverse-Mel と phase estimationを導入してみたところ改善された。


zero-shot TTSの結果が表3。
VoiceBoxと同じくらいの精度。


マルチタスクの結果が表4。これまでの3タスクをシンプルに組み合わせた。
全体的には単一モデルのがよい。
ただ、1つのモデルで複数タスクを解くユニバーサルモデルを構築できる可能性は十分ありより多くの研究が必要。

事前学習のステップ数、lr、 x_{mask}の採用確率 p_{cond}について調査した結果が図2。
学習率は5e-5以上あれば良さそう。
 p_{cond}は80%程度必要で、 p_{cond}=0のただのFlow Machingは劣化。提案手法SpeechFlowが優れていることを示してる。

所感

Flow MatchingのMAE。
確かにあってもおかしくなかった。ほかのMAEと同じくシンプルで強力そう。
SSLへの利用が検討されるこの流れ、基盤モデルになっていきそうな雰囲気を感じる。