[論文メモ] Noise-robust voice conversion with domain adversarial training

arxiv.org
dhqadg.github.io

Auto Encoder(AE)タイプのVoice Conversion(VC)できれいな音声とノイズの乗った音声をDomain adversarial trainingを使って同じ空間に写像することでノイズ耐性をつける。

事前知識

Domain adversarial training (DAT)について。
DATはドメインに対して不変な特徴量を得るための手法。
ドメインに不変にしたい特徴量からドメインを識別するためのヘッド(Domain Classifier)を追加して学習を行う。
ターゲットの特徴量とDomain Classifierの間にはGradient reversal layer(GRL)が挟まれていて、GRLはforward時は恒等写像でbackward時は勾配を反転する。
このGRLによりDomain Classifierはドメインを識別できるよう最適化し、特徴量部分は勾配が逆転しているのでドメインが識別できないよう最適化され、結果的にドメイン不変な特徴量が得られる。
DATの構造を図2に示す。
f:id:Ninhydrin:20220201090548p:plain

手法

一般的なVCと同じで、話者エンコーダとコンテンツエンコーダを学習し、それらの特徴をデコーダに入力して目的のスペクトログラムを得る。

speech recognitionやspeaker verificationではメインタスクのlossを最小化しつつ、途中で枝分かれしたドメインlossを最大化する。
しかし、これらはメインタスクの正解ラベルがあるからで、本手法は教師なしの前提で行いたい。

既存のText to Speech (TTS)タスクでのnoise augmentation(NA)やdomain adversarial training(DAT)とは以下の観点で異なる。
1) TTSは入力がテキスト、出力がスペクトログラム、それに対してVCは入出力ともにスペクトログラム
2) 既存手法ではNAやDATをノイズ不変な話者埋め込みを抽出するために利用していたが、本手法では話者埋め込みとコンテンツ埋め込みを抽出する
3) ノイズ不変な特徴を得るために本手法ではドメイン用のClassifierのみを利用(既存手法ではタスクとドメイン、2つのClassifierを利用する)
4) 音声に色々なノイズをランダムなSNRで加えることでより堅牢に


学習に使う音声データセット \{x_i, d_i\}^N_{i=1}とする。 x_i d_iはそれぞれ i番目の音声データとドメインラベル。
ドメインラベルはノイズに関してで d_i=0はきれいな音声、 d_i=1はノイズがある音声とする。あくまでノイズの有無で詳しいノイズラベル(街の音やカフェの音など)は使わない。

提案手法のフレームワークを図3に示す。
f:id:Ninhydrin:20220131094803p:plain

話者エンコーダを f_{\varphi}、コンテンツエンコーダを f_{\phi}とし、それぞれのdomain classifierをf_{\varphi d} f_{\phi d}とする。デコーダ f_{\theta}は話者埋め込み z_s = f_{\varphi}(x)とコンテンツ埋め込み z_c = f_{\phi}(x)を受け取りスペクトログラム \hat{x}を出力する。なお \phi, \varphi, \phi d, \varphi d, \thetaは各ネットワークのパラメータ。

 z_s z_cのところでDATの勾配反転(GRLを挟む)を行う。

lossはL_{Recon}, L_{KL}, L_{DAT_{z_s}}, L_{DAT_{z_c}}の4つ。
 L_{Recon}は再構成lossで、入力 xと、 xから作った話者埋め込みとコンテンツ埋め込みを入力としたデコーダの出力 \hat{x}とのL1 loss。
 L_{KL}はコンテンツ埋め込みを標準正規分布に近づけるためのKL-divergence loss。
 L_{DAT_{z_s}} L_{DAT_{z_c}}はdomain classifier loss。domain labelをノイズの有無とし、各埋め込みへの勾配を反転することで埋め込み特徴からノイズの有無を識別できなくする。これによりノイズに関わらず同じ空間に埋め込むことができ特徴がノイズ不変になる。

トータルのlossは以下の式。 \alpha, \beta, \gamma, \tauは重みのハイパラ。
f:id:Ninhydrin:20220131101122p:plain

実験・結果

例によって省略。
CSTR-VCTKの多人数話者データとCHiME4のノイズデータを利用。
評価指標はMel-cepstral distortion(MCD)とWord error rate(WER)。
f:id:Ninhydrin:20220201093910p:plain

ソース音声、ターゲット音声について4つのシナリオを実験
SC-TC:ソース・ターゲットともにノイズなし
SC-TN:ソースはノイズなし、ターゲットはノイズあり
SN-TC:ソースはノイズあり、ターゲットはノイズなし
SN-TN:ソース・ターゲットともにノイズあり

VAEDC-CN-C、VAEDS-CN-C、VAED-CN-Cが提案手法で、他は既存手法。
f:id:Ninhydrin:20220201094418p:plain

所感

data augmentation + DATは良さそう。
デモがあるので聞いてみたが正直良くわからない(ノイズが結構厳しい?)。
最近の音声系論文はデモありのものが多いの偉い。
DAT自体は勾配を逆転するGRLを実装するだけなのでコストは少ない。
この論文ではノイズドメインに対してのDATだったが、VCタスクで他にも利用価値がありそう。
良いアイディアを与えてくれた論文だった。