[論文メモ] DeID-VC: Speaker De-identification via Zero-shot Pseudo Voice Conversion
Interspeech 2022
架空の話者へのzero-shot Voice Conversion
音声を使ったサービスというのが増えてくると、音声のセキュリティやプライバシーの問題が出てくる(攻撃者によって音声が盗まれ音声認証等に利用される可能性等)。
こういったことを低減するために、発話の中身を変えず話者情報を削除・難読化したいというお気持ち。
手法
ベースはAutoVCで、そこに疑似話者を追加する。
AutoVC
AutoVCは主に3つのモジュールからなる。
1つ目がコンテンツエンコーダ でメルスペクトログラムを入力としコンテンツ特徴に埋め込む。
2つ目が話者エンコーダ で、メルスペクトログラムを入力して話者特徴を出力するD-Vectorをベースのもの。
3つ目はデコーダ でエンコーダによるコンテンツ特徴と話者特徴を元にターゲットのメルスペクトログラムを出力する。
目的関数は以下
- :メルスペクトログラム
- :をで埋め込んだコンテンツ特徴
- :話者aの発話を話者bに変換したメルスペクトログラム
- :をpost net でrefinementしたもの
AutoVCのパイプラインは以下の図1。
提案手法
提案手法名はDeID-VC(de-identificationのDeIDと思われ)。
一般的にVoice Conversion(VC)はコンテンツ情報と話者情報を分離することが重要とされる。
AutoVCではの出力部分を適切なサイズのボトルネックにすることでCとSに分離させている。
だが、適切なボトルネックサイズというのはデータセットに依存するためデータセットによっては分離がうまくいかない。
その結果Cに話者情報も残り、再構成lossについてもSを利用せずCからの生成になりVCとして機能しなくなる。
そこでCとSの分離を促すために以下の2つのloss追加する。
言ってしまうとVCした音声はそれぞれもととのなったCとSを保存していてほしいという制約。
ということで総合的なlossとパイプラインは以下。
ここまではAutoVCの改善で次は疑似話者生成について。
D-Vectorを用いてのVCなので実際発話を利用し、その話者に似せることになる。疑似話者のベクトルを作るにしても実際に存在しうる話者っぽくなってほしい。
そこで話者特徴を使ったVAEを学習する。
図3がパイプライン
VAEの目的関数は以下。
- :再構成loss
- :コサイン類似度
- :KLダイバージェンス
D-Vectorの出力である話者情報をを入出力としてVAEを学習する。そしてデコーダ部分を利用することでガウシアンから疑似話者ベクトルを生成できる。
実験・結果
データセットはWSJコーパス。VAEに関してはVoxCeleb1と2で学習しVCTKとWSJで評価。
DeID-VCの学習はAutoVC部分とVAE部分の2つに分けて行う。
評価指標はWord Error Rate (WER)、Equal Error Rate (EER)と30人によるMOS。
実験結果が表1。SxUのSとUはSeenとUnseen。PはPseudo Target。
VAEの再構成のloss。
所感
AutoVCにcycle consistency的なものの追加とVAEによる話者生成。
cycle consistency的なものは誰もやってこなかったのか?論文のメインの主張は疑似話者生成なので別によいが。
VAEで話者ベクトルを再構成するのは少々強引な気もする。理屈はわかるけどうーん。