[論文メモ] ZERO-SHOT TEXT-TO-SPEECH SYNTHESIS CONDITIONED USING SELF-SUPERVISED SPEECH REPRESENTATION MODEL
NTT
ICASSP 2023
自己教師あり学習(SSL)による特徴を条件としたzero-shotのtext-to-speech(TTS)の提案
既存手法の多人数話者TTSでは少量データでのfine-tuningが必要で計算コストや時間がかかる。
既存のzero-shot TTSでは話者認識ベースのd-vectorやx-vectorを使う方法や同時にエンコーダを学習してその埋め込みを利用する2タイプがある。
話者認識ベースは未知の話者にロバストだが、リズムなどの話者重要な個性が反映できない。
同時にエンコーダを学習するタイプは学習データがTTS用で規模が比較的小さいので未知話者に弱い。
SSLモデルを使ってこれらの問題を解決したいというお気持ち。
手法
アーキテクチャ全体像は図1参照。
FastSpeech2のような自己回帰では無いTTSとSSLモデル、埋め込みモジュールの3つからなる。
他のzero-shot TTSと似た構造をしているが主な違いは埋め込みをx-vector等を使わずSSLモデルから取得しているところ
SSLモデル
発話から話者埋め込みを取得する。
発話をSSLモデルに入力して各レイヤーから中間特徴を取り出すことでフレームレベルの特徴ベクトルを取得する。
をレイヤーの特徴量の次元数、をレイヤー数、をフレーム数としての特徴量ベクトルを得る。
SSLモデルとしては主にwav2vecとHuBERTを利用する。
この特徴量は可変長なので次の埋め込みモジュールで固定長に変換する。
Embedding module
SSLモデルにより得られたフレームレベル特徴を固定長に変換する。
まずweighted-sumモジュールにより、各レイヤーに対応する重みをかけてsumするをすることでの特徴に集約する(各レイヤーの次元数は同じなのでsumできる)。
固定長にするために2種類の方法を試す。
- average pooling
- LSTM + soft-attention
average poolingはそのままでフレーム方向についてaverage poolingする。
LSTM + soft-attentionではLSTMに通したあとにattentionを行い集約する。
average poolingはすべてのフレームが同じ重みとして集約するが、attentionは重要なフレームに重みを付けての集約できるのでこちらのほうが有効そう。
Separate conditioning
自己回帰ではないTTSモデルにおいてduration predictorと他の音響predictorは基本的に独立している。
そこでconditionについても duration predictorと他のpredictorで分ける。
これによりduration predictor側ではリズム等の特徴を、他のpredictor側では音響特徴を捉えやすくなった。
また、リズム等の特徴が分離したので、リズムだけ他話者等も可能になる。
conditionを分離したアーキテクチャは図2参照。
実験・結果
データセットは社内製の1083話者の日本語のデータセット。話者は声優やアマチュア、ニュースキャスターなど様々。
サンプリングレートは22.05kHz。
vocoderはHiFI-GAN。
SSLモデル(wav2vec, HuBERT)はfairseqを利用して新しく学習。このときはCSJデータセットを利用。
評価指標は
- GTのdurationを使って生成したメルスペクトログラムでのmean absolute error(MAE)
- 音素のdurationのroot mean square error(RMSE)
data-parallelとnon-parallelは参照発話をテキストと対応する発話にするか否か。non-parallelだと同じ話者の異なる発話を参照にする。
比較する既存手法はx-vectorでのTTS。
SSLモデル、集約方法、アーキテクチャ毎、data-parallelとnon-parallelの実験結果。
総合的にはHuBERT + LSTM + separateが良さそう。
ただ、提案手法のほうが既存手法に比べparallelとnon-parallelとの差が大きいのは少々気になる。
non-parallelでの主観評価(MOS)
話者の類似性は提案手法のがかなり良さそう。
リズムの変更
x-vectorは反映できていないが、HuBERTは反映できてそう
weighted-sumの重みを可視化したのが図3
0番目(convの直後)の特徴に重みが集中している。つまりスペクトログラムに近いところから話者情報を取得しようとしている。
それに対して分離したアーキテクチャでは音響特徴のSpec.はcommonとほとんど同じ感じだがDur.はcommonと異なる。
Spec.とDur.で必要な情報が異なるのでアーキテクチャを分けるのは正解っぽい。
学習に使用する言語とモデルサイズによる違い。SSLはパブリックに利用可能なLibriSpeechで学習されたSSLモデルを利用。
CSJで学習したSSLを使ったのと比較しても大きな差は無いことから、SSLで利用する言語はなんでも良さそう。
図3でも音響特徴はスペクトログラムに近い浅いレイヤーに重みをおいていることからも言語依存は少なそう。
所感
SSLモデルを話者情報にしたモデルでそこまで感動的ではなかった。実験結果の比較がいくつかあったのは学びがあった。
HuBERTはMFCCを教師に使っていて音響情報は少なそうだがそれでも良いのか?
HuBERTを使ってるとはいえ、結局浅いレイヤーから特徴を抽出しているので目的関数はあまり関係無いのかもしれない(ContentVecでも同じことができそう)。HuBERTの最終層付近だけしか利用できないとかだと話は変わりそう。実験してほしい。
提案手法は既存手法に比べparallelとnon-parallelの差が大きかったのも気になる(表1)。
ここの差が出るということは、参照音声の話者ではない情報に大きく依存しているということなので安定性が少々低そう。