[論文メモ] DISENTANGLING CONTENT AND FINE-GRAINED PROSODY INFORMATION VIA HYBRID ASR BOTTLENECK FEATURES FOR VOICE CONVERSION

arxiv.org
thuhcsi.github.io

ICASSP 2022

Cross Entropy(CE) lossとConnectionist Temporal Classification(CTC) lossそれぞれで学習した音声認識モデルの特徴量を使ったany-to-oneのVoice Conversion(VC)モデルの提案。

CElossで学習した音声認識モデルの特徴量を使うと音色が劣化し、CTClossで学習した音声認識モデルの特徴量を使うと自然性が劣化する。
そこで2つの特徴を利用したハイブリッドなモデルを構築する。

手法

全体図は以下の図2参照。5つのモジュールからなる。
f:id:Ninhydrin:20220401091429p:plain


音声認識はconformerベースのものを利用。transformerとCNNを合わせたモデルで最近のSOTAらしい。
同じアーキテクチャの2つモデルをCE lossとCTC lossそれぞれで学習し、中間から抽出した256次元の特徴を利用する。
図2の左、CE-BNFsとCTC-BNFsがそれ。BNFはBottleneck featureの略。


VCモデルとしては2つのエンコーダと1つのデコーダからなる。
2つのエンコーダはコンテンツ用と韻律用でコンテンツエンコーダはCTC-BNFsを、韻律エンコーダはCE-BNFsを受け取り特徴量に埋め込まれる。
そして得られた2つの埋め込み特徴はconcatされデコーダに入力される。図の \oplusはconcatらしい(紛らわしい)。

韻律エンコーダはConv1dとGroupNormを含むBLSTMを使った構造。
韻律埋め込みはInstance Normしたり、コンテンツ埋め込みに比べ次元を非常に小さくしたりして情報を制限する。
f:id:Ninhydrin:20220401093102p:plain
 F_{prosody}が韻律埋め込みで INがInstance Norm、 E_{prosody}が韻律エンコーダ、 BNF_{ce}がCE-BNFs。
この韻律埋め込みはProsody Predictor、Adversarial Content Predictor、デコーダの3つに使われる。

Prosody Predictor  P_{prosody}は韻律埋め込みからエネルギー \hat{E}、ピッチ \hat Pを予測し、正解のエネルギー Eとピッチ PとのL1 lossをとる。 L_{prosody}は韻律関係の最終的なloss。 \lambda_*はハイパラ。
f:id:Ninhydrin:20220401093602p:plain

Adversarial Content Predictorはコンテンツ埋め込みと韻律埋め込みの情報がかぶらないようにするためのもの。
図2の通りContent Predictorの前にgradient reversal layer(GRL)をおく。
GRLはバックプロパゲーション時に勾配を反転させる層。
Content Predictorは韻律埋め込みからコンテンツ埋め込みを予測するように学習をする(L1 loss)。
通常なら韻律埋め込みがContent Predictorがコンテンツ埋め込みを予測しやすくなる方向への勾配を韻律エンコーダに流すはずだが、GRLで勾配が反転するのでContent Predictorがコンテンツ埋め込みを予測できなくなるような方向へ韻律エンコーダは学習する。
これにより韻律埋め込みとコンテンツ埋め込みの情報のオーバーラップを減らせる。
f:id:Ninhydrin:20220401094540p:plain

一番の目的であるVCのlossは再構成loss。デコーダで生成したメルスペクトログラム \hat Sと正解のメルスペクトログラム SとのL1 loss。
f:id:Ninhydrin:20220401094645p:plain

最終的なlossは以下。
f:id:Ninhydrin:20220401094755p:plain

実験結果

音声認識モデルは3000時間のMandarin コーパスで学習。
ボコーダとしてHiFiGANを利用。

ABXテスト。AとBは異なる手法での生成、Xは本物。

利用する特徴量の比較。BNFはネットワークの途中の特徴、PPGは最終層の特徴。
f:id:Ninhydrin:20220401094822p:plain

提案手法だとCTC-BNFsと同程度のSimilarityでありつつ自然性も高い。
f:id:Ninhydrin:20220401095144p:plain
f:id:Ninhydrin:20220401095830p:plain

あとは論文とデモ参照。

所感

異なる目的関数で学習したものを利用するを最近見かける気がする。
StyleGAN-XLはDiscriminatorとしてResNetとViTを利用していたが、この手法では異なるlossの特徴量を利用している。
少々泥臭い感じがしなくも無いが、精度を高めるためには有効そう。
音声認識に関してもConvNet以外のアーキテクチャでlossを取るとかやってもいいかもしれない。
こういうのを見ていると、異なるlossで学習して得られる特徴量の特徴を考えることの重要性を強く感じる。