aria tech blog

深層学習に関する調べものなどをまとめます

論文解説:AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss

目次

論文情報

arxiv[1905.05879] AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss

demo : AutoVC Demo https://github.com/auspicious3000/autovc

概要

非並列データを用いた多対多の声質変換において、Zero-Shotの音声変換を可能とする手法を提案。

声質変換分野では、近年はGANが用いられることが多いが、GANの訓練は一般的に難しく、また生成された音声が知覚的に良い品質であることが保証されない。 別のアプローチであるCVAEなどの手法は、学習はシンプルだがGANのような分布一致性を持たない。

本論文では、慎重に設計されたボトルネックを持つAuto Encoderを用いた声質変換手法を提案する。 提案手法であるAUTOVCは、非並列データを用いた多対多の音声変換において最先端の成果を達成し、さらにゼロショット音声変換を世界で初めて実現した。

提案手法

学習について

f:id:ariacat3366:20200928161648p:plain:w400
図1 [1 : figure 1]

図1において、 Zは話者の音韻情報と韻律情報を持つcontent distributionsからサンプリングされたランダム過程であり、 Uは話者集団からサンプリングされた話者のIdentityを持つランダム変数だと定義しています。 Xは音声分布からサンプリングされたランダム過程であり、 Z Uにより特徴付けられているものであるとしています。

 E_cはContent Encoderを、 DはDecoderを指し、 E_sは事前学習済の話者埋め込み用モデルを指します。本論文では、参考文献[2]の手法を用いて事前学習されたモデルを用いて、256次元の話者ベクトルを出力しています。

 C E_cによってエンコードされたコンテンツ情報(発話情報)を持つランダム過程であり、 S E_sによってエンコードされた話者埋め込みベクトルを指します。

実装では、 Xにはスペクトログラムが使用されています。

学習時は、入力話者と目標話者を同じにして学習を行います。一方で、変換を行う際は目標話者から生成した話者ベクトルを Dの入力として与えることで変換を行います。ここで、 E_sの表現力が十分である場合、未知の話者が目標話者(もしくは入力話者)に現れた場合でも埋め込み話者ベクトルの情報からZeroshotでの変換を行うことが可能となることを期待する、としています。

モデル

f:id:ariacat3366:20200930181835p:plain:w500
図2 [1 : figure 3]
モデルの詳細です。(a)がContent Encoder(E_c)、(b)がStyle Encoder(E_s)、(c)がDecoder(D)、(d)が Spectrogram Inverter(音声復元モデル)です。

詳細に関しては図や実装を見ればわかるので割愛します。

Loss

学習の目的関数は以下の式の通りです。

f:id:ariacat3366:20200930180147p:plain:w400 f:id:ariacat3366:20200928165852p:plain:w400
図3 [1 : fomura (4)(5)(6)]
ここで、 L_{recon}は self-reconstruction errorのことで、D(E(X)) XのMSEをとっています。 self-reconstruction errorは音声がちゃんと再構成されるような制約を与えるためのlossです。

また、 L_{content}はcontent code reconstruction errorのことで、 E(D(E(X))) E(X)のl1 normをとることで算出されています。content code reconstruction errorは変換された音声の話者性が保たれているような制約を与えるためのlossです。

なぜ学習がうまくいくのか?

f:id:ariacat3366:20200928162551p:plain
図4 [1 : figure 2]
図4では、なぜこれだけの制約で学習がうまくいくのかを概念的に説明しています。簡単な説明に留めますが、慎重にボトルネックの次元数を設定することで、後に E_sから入力される話者性に関する情報が消えて、発話内容(content)だけがうまく獲得される、という趣旨の主張です。

実験

実験では、VCTKコーパス(44時間の発話、男女合わせて109人の話者)を用いて学習を行いました。

また、「話者埋め込みモデルはあくまでもZeroshot(教師データにない話者を入力、もしくは目標話者とする変換)に適用するために用いるのであり、品質には影響を与えない」ということを証明するために、one-hotベクトル表現による話者ベクトルを入力した場合の学習の比較も行なっています。

結果

こちらのサイトでデモが公開されています。

音声変換の結果に関しては実際に聞いてみて判断するのが最もわかりやすいと思います。著者も

We strongly encourage readers to listen to the demos.

とのことです。

以下は、論文中で行われた実験におけるMOSとsimilarity scoreの値の比較表です。(MOS:平均オピニオン評点(mean opinion score, MOS)は品質に関して、similarityは話者性に関しての評価)

f:id:ariacat3366:20200930183114p:plain:w800
図5 [1 : figure 4, 5]
図5の左2つのグラフは、既存手法であるStarGANと提案手法との比較です。異性間での変換において、既存手法よりもMOSが高いのが目立ちます。(M:Male, F:Female)また、全体を通してMOSの値が3を超えており、品質に関して安定して良い音声を作れていることがわかります。

また、図5の右2つのグラフは未知の話者と学習データにある話者の品質の差を比較しています。unseenの女性に関しては変換が難しそうですが、これは女性が男性に比べて声色の分布が広いことが起因するのでしょうか。

所感

正直この手法で、なぜ話者性が変換出来ているのかがわかりませんでした。

本当に変換がうまくいくのか試すために、著者の方が公開している実装を元に再現実装を行ない、手元の日本語話者データを用いて再現実験を行ないました。 実装で公開されている話者埋め込みモデルが日本語話者にうまく適用出来なかったようなので、話者埋め込みに関してはone-hot表現を用いました。(論文中でも述べられていましたが、埋め込みモデルはZero-Shotの変換のために用いており、one-hotを用いても品質に差は生じないそうです)

実装は公開出来ないのですが、結果として女性→女性の変換において、デモと同等の品質での変換が確認出来ました。男性を用いた変換はあまりうまくいかなかったのですが、これは用意したデータの偏りの影響であると考えられるため、日本語話者の学習においてもデモと同等の変換結果が得られたと結論付けました。

参考文献

  1. Kaizhi Qian, Xuesong Yang, Mark Hasegawa-Johnson, University of Illinois Yang Zhang, Shiyu Chang, MIT-IBM Watson AI Lab,IBM Research, AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss, International Conference on Machine Learning. 2019.

  2. Wan, L., Wang, Q., Papir, A., and Moreno, I. L., Generalized end-to-end loss for speaker verification. In 2018 IEEE In- ternational Conference on Acoustics, Speech and Signal Processing (ICASSP), pp. 4879–4883. IEEE, 2018.