aria tech blog

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

論文サーベイ:Singing Voice Conversion(歌声変換)

目次

本記事の概要

歌声変換(Singing Voice Conversion, SVC)に関する論文のサーベイを行ったので、内容をまとめておきます。

歌声変換とは、歌手Aの歌声音声を歌手Bの歌声音声へと変換するタスクを指します。
音声変換にとても良く似たタスクですが、対象とする音声が一般的な話し声の音声ではなく歌声の音声である点が特徴です。

歌声を扱うモデルが、歌声に含まれる「音程」の情報をどのように扱っているのか知りたかったので、2019~2021年(現在まで)の手法を網羅的に調査しました。
以下、発表時点での品質が良い手法、筋の良さそうな手法をまとめています。

Unsupervised Singing Voice Conversion

概要

arxivhttps://arxiv.org/abs/1904.06590
demo : https://enk100.github.io/Unsupervised_Singing_Voice_Conversion/

本手法では、歌声変換を行うための深層学習手法を提案しています。
提案しているアーキテクチャは、テキストや音程などの追加の情報を与えることなく、ある歌手の音声を別の話者の音声へと変換することを可能とします。
また、比較的小さなデータセットを用いた学習を行う必要があるため、逆翻訳(backtranslation)に基づく新たな学習データ増強スキームを提案しています。
MOS評価の結果、提案手法による変換は話者類似性や自然性において高い評価を獲得しました。

詳細

本手法で提案しているモデルのアーキテクチャです。

f:id:ariacat3366:20210331033507p:plain:w600
Encoder:音声波形を入力とし、特徴空間へと情報を圧縮するモデルです。
Decoder:Encoder から与えられる情報と話者埋め込みベクトルをもとに、目標話者の音声を生成するモデルです。
Domain confusion network:Encoder により圧縮された情報から、入力話者を推論するモデルです。 Encoder は、Domain confusion network を騙せるように学習を行います。

本手法では、2段階の学習プロセスを行います。

f:id:ariacat3366:20210331033512p:plain:w600

(a) 第一段階の学習では、入力として与える話者jの音声s^jを Encoder により特徴空間に圧縮し、そこから Decoder によりもう一度同一話者の音声\tilde{s}^jへと復元するという学習を行います。
ここで、 Decoder には 話者jの埋め込みベクトルv_jが同時に与えられます。

(b) 第一段階の学習だけでは、入力として与えられる話者は教師データの規模に左右されてしまします。そこで、第二段階の学習では、 mixup によるデータ増強手法を用いることで、多様な入力話者を生成し、学習に用いています。
本手法の mixup によるデータ増強では、3epochごとにオリジナルの話者を生成するプロセスを実行します(図の黒枠で囲まれている部分です)。話者jと話者j’のそれぞれの話者埋め込みベクトルv_jv_{j'}\alpha : 1 - \alpha(論文では\alpha = 0.2\)の比率でブレンドした新たな話者埋め込みベクトル[tex:uを作成し、その新たな話者埋め込みベクトルを用いて、話者jの音声から教師データに存在しない新たな話者の音声を生成します。
上記のプロセスにより教師データ外の話者のパラレルデータを作成することで、生成した新たな話者の音声を入力とし、元々の話者jの音声へと変換を行うという異なる話者間における音声変換の学習が可能となり、かつ入力に対する頑健性を高めることができます。

また本手法では、mixupの他に以下のアプローチによって教師データの増強を行っています。

  • 逆翻訳(backtranslation)に基づくデータ増強
    逆翻訳は、翻訳タスクで良くみられる手法で、言語Aの文章を言語Bへと翻訳するタスクを学習する際、学習中(もしくは学習済)モデルにより言語Bの文章を言語Aへと翻訳し、学習に使用する教師データを増やすというような手法です。

  • inversion
    音声波形は、波形を上下に反転させても知覚的には問題なく聞こえるということが知られています。本手法ではこの性質を利用し、wavに-1を掛けることでデータの水増しを行っています。

データセット

Smule DAMP Dataset : https://ccrma.stanford.edu/damp

  • 学習に用いた音声:男性話者5人×9音声
  • 評価に用いた音声:男性話者5人×1音声

PitchNet: Unsupervised Singing Voice Conversion with Pitch Adversarial Network

概要

arxivhttps://arxiv.org/abs/1912.01852
demo : https://tencent-ailab.github.io/pitch-net/

上記で紹介した「Unsupervised Singing Voice Conversion」を改良した手法です。

詳細

アーキテクチャや使用しているデータセットはUnsupervised Singing Voice Conversionとほぼ同じなので割愛します。ここでは、本手法の新規性であるPitchNet部分にフォーカスして解説しようと思います。

以下は、本手法が提案する音声変換のフローを表す図になります。

f:id:ariacat3366:20210421014327p:plain:w600
この手法の特徴的な箇所として、以下があります。

  • 入力音声からPitchNetを用いてPitch情報を推論
  • Encoderにより圧縮された特徴空間に対して、話者の識別を行うNetworkと、Pitch情報を推論するNetwork(PitchNet)を学習
    • Encoderはこれらの学習を阻害できるように学習を行います。これにより、Encoderは入力音声から、話者に関する情報とPitchに関する情報以外の情報を圧縮するようになります
  • Decoderは、Encoderから得られた情報に加えて、入力音声から推論したPitch情報と話者埋め込みベクトルを用いて音声を生成

データセット

NUS-48E

  • 学習に用いた音声:男性話者5人×4音声
  • 評価に用いた音声:男性話者1人×4音声

Unsupervised Cross-Domain Singing Voice Conversion

概要

arxivhttps://arxiv.org/abs/2008.028302
demo : https://singing-conversion.github.io/
Parallel WaveGANをベースとした、wav-to-wavの歌声変換手法を提案。

詳細

近年の研究で、歌声の変換には言語的情報と音楽的情報の両方が必要であることがわかってきています。
この手法では、言語的情報として、word2letterにより得られた情報を、音楽的情報として音の大きさとF0の情報を与えることで、変換の品質を向上させました。

f:id:ariacat3366:20210421020628p:plain:w600

予備実験において、生のF0を入力として与えた場合、生成される音声のピッチに一貫性のない揺れが生じることを確認しました。そのため、入力音声からCREPEという手法を用いて得られたPitch情報を元にSin波を合成し、波形データとしてPitch情報をモデルに与えるというアプローチを取っています。(数式についてはこの次に紹介する手法で取り扱っています)

CREPE
[1802.06182] CREPE: A Convolutional Representation for Pitch Estimation
CREPE Interactive Demo

ASRモデルにはJasperというWav2Letterの公開実装モデルを用いています。
FacebookのAI Researchチームによる論文なので、Facebook製の手法が多く採用されています)

Jasper
[1904.03288] Jasper: An End-to-End Convolutional Neural Acoustic Model [1609.03193] Wav2Letter: an End-to-End ConvNet-based Speech Recognition System

データセット

  • LJ
    single singer
    24 hours of audio recording.
  • LCSING
    single singer
    3 hours and 40 minutes, including some melodic singing without lyrics.
  • VCTK
    109 singers
    44 hours of audio recordings
  • NUS-48E
    six male singers and six female singers singing and reading of four songs per voice, 15 minutes per singer.

FastSVC: Fast Cross-Domain Singing Voice Conversion with Feature-wise Linear Modulation

概要

arxivhttps://arxiv.org/abs/2011.05731
demo : https://nobody996.github.io/FastSVC/
上記のUnsupervised Cross-Domain Singing Voice Conversionという手法では、3つの重い深層学習モデルを使用している(CREPE: f0 prediction, Jasper: wave-to-letter model, WaveNet based generator: vocoder)が、これは推論時間を非常に遅くする要因となっています。
また、学習手法が複雑であり、かつ時間がかかってしまいます。
提案手法であるFastSVCでは上記を改善し、軽量で、同様の品質を保ちつつ、CPU上でリアルタイムの4倍高速に変換が可能としています。

詳細

FastSVCのContributionとしては、以下が挙げられます。

  • cross domainの学習が可能
  • any-to-manyの歌声変換を実現
  • Conformerと呼ばれる、軽量なend-to-end ASR モデルと、FiLMと呼ばれるGANベースの生成モデルを採用することで高速な推論を実現
  • Multi-scale STFT lossとAdversarial lossの2つのLossのみで学習するため、シンプルかつ高速なLoss計算が可能

[2005.08100] Conformer: Convolution-augmented Transformer for Speech Recognition
[1709.07871] FiLM: Visual Reasoning with a General Conditioning Layer

f:id:ariacat3366:20210402135147p:plain:w600

  • loudness features
    波形のパワースペクトラムから算出される、音声のボリュームの特徴量
  • linguistic features
    ASRモデルから得られる言語特徴表現
    学習済のConformerのモデルから、CTC moduleとattention decoderを切り捨てた残りの部分で推論したアウトプットを利用する
  • sine-excitation signal
    Unsupervised Cross-Domain Singing Voice Conversionでも用いられていた手法で、入力音声から得られたPitch情報を元にSin波を合成し、波形としてPitch情報を表現するアプローチ。以下の数式により与えられる。
    f:id:ariacat3366:20210421020917p:plain:w400 f:id:ariacat3366:20210421134121p:plain:w400

データセット

  • LJ-Speech corpus
  • VCTK corpus
  • NUS-48E corpus

Datasets are randomly split into train-validation-test sets according to a 90%-5%-5% partition.

PPG-BASED SINGING VOICE CONVERSION WITH ADVERSARIAL REPRESENTATION LEARNING

概要

arxivhttps://arxiv.org/abs/2010.14804
demo : https://lzh1.github.io/singVC/
AutoEncoderベースの手法は、入力音声に含まれるノイズにより、品質が低下してしまうことが問題でした。 また、PitchNetは男性から男性への変換にしか対応していませんでした。
本手法では、上記の問題を解決する、end-to-endでの学習が可能なmany-to-manyのSVCモデルを提案しています。

詳細

本手法の特徴的な点として、PPG-to-Melのアプローチを取っているところがあります。

f:id:ariacat3366:20210331040227p:plain:w600

WaveNetベースやMelGANベースの手法が多いので、以外とPPG→MelSpectrogramでVocoderを用いて生成する手法は珍しいかもしれないです。
別途Vocoderを用意する必要はありますが、学習を別々に行える、タスクを分離できるというのはメリットかもしれません。

データセット

  • internal Chinese mandarin singing corpus
    32.7 hour audio data
    9 female singers and 7 male singers

Phonetic Posteriorgrams based Many-to-Many Singing Voice Conversion via Adversarial Training

概要

arxiv[2012.01837] Phonetic Posteriorgrams based Many-to-Many Singing Voice Conversion via Adversarial Training
demo : https://hhguo.github.io/DemoEASVC/

本論文では、end-to-endの敵対的歌声変換手法であるEA-SVC(End-to-end Adversarial Singing Voice Conversion)を提案しています。

EA-SVCでは、発生内容を表すPPG(phonetic posterior-gram、音素事後確率)、ピッチを表すF0、音色を表す話者埋め込みの3種類の特徴量から任意の歌声音声波形を直接生成することが可能です。 提案するモデルは、Generator G、Audio Generation Discriminator D_A、Feature Disentanglement Discriminator D_F の3つのモジュールから構成されています。 Generator G は入力される3種類の特徴量を並列にエンコードし、それらをconcatした物をデコードすることで目的の波形へと変換します。 さらに、Feature Disentanglement Discriminator D_F を適用し、Generator G によりエンコードされたPPGに残っているPitchとtimbrerの情報を除去することで、よりロバストで正確な歌声変換を実現することが可能となります。
また、提案手法では訓練を2段階に分けて行っており、これにより安定した効果的な敵対者訓練プロセスを維持することが可能となります。
実験より、提案モデルは品質と話者類似性の両方において従来のcascadeな畳み込みの手法とWaveNetベースのend-to-endの手法を凌駕していることが確認できました。 また客観分析では、提案する2段階の訓練により学習したモデルはより滑らかでシャープなフォルマントを生成し、高品質化な生成が可能になることが明らかになりました。

詳細

本手法に関しては、以下の解説記事でより詳細に解説をしているので、本記事では解説は行いません。

解説記事:https://aria3366.hatenablog.com/entry/2020/12/17/112800

サーベイのまとめ

2019年はAutoEncoderベースの手法が多かったように思います。Non-Parallelな教師データを用いた学習手法に関する注目度が上がったことが原因のようです。品質に関しては、非常に小さな学習データにもかかわらず、歌声の変換が出来ているように感じました。しかし、ピッチに関してはまだまだ変換が甘い箇所があったり、ノイズっぽい音が混じっていたので、完璧とは言えない品質ではありました。また、demoが全てMale→Maleなのも気になりました。

2020年以降は、PPGベースの手法が増えてきていました。AutoEncoderベースでは、ピッチに関する情報をうまく扱えないとわかってきたので、音韻の情報(PPG)とピッチの情報を別々に処理するアプローチが主流になったようです。 PPGベースの手法の場合、decoderが音声を生成する際にpitchの情報を外部から与える必要があるため、pitchが大きく異なる場合にも対応出来そうな感じがします。 実際、PPGベースの手法は、demoにおいて異性間の歌声音声が上手く変換出来ているように感じました。 また、PPGベースの手法では、音素認識部分の学習に歌声コーパス以外の教師データを使用することができるので、より学習の難易度が下がるというメリットもありそうです。

また最近では、FastSVCのような高速化を目指した手法もあるようです。 実用化に向けた研究も始まってきているようですね。

サーベイをしていて感じたのですが、2020年〜2021年にかけて、Neural Vocoderに関する手法が沢山発表されていました。今までだと、(Parallel) WaveNet, WaveGlow, WaveFlow, WaveRNN, (Parallel) WaveGAN, MelGAN, Multi-Band Melgan, LPCNetのような手法が使われていたと思うのですが、さらに進化してきているのでしょうか...Vocoderに関してもサーベイを行った方が良いかもしれないです。
*1*2*3*4*5*6*7*8

また、もう一つ感じたのが、中国の大学・企業の論文が非常に多いという点でした。
(VCも多いですが)SVCの分野における中国の大学・企業の論文の割合は、体感で8割以上はありそうでした。
日本発の論文ももっと増やして行きたいですね...。

参考文献

  1. Nachmani, Eliya, and Lior Wolf. "Unsupervised singing voice conversion." arXiv preprint arXiv:1904.06590 (2019).

  2. Deng, Chengqi & Yu, Chengzhu & Lu, Heng & Weng, Chao & Yu, Dong. "PitchNet: Unsupervised Singing Voice Conversion with Pitch Adversarial Network." arXiv preprint arXiv:1912.01852 (2019).

  3. Polyak, Adam, et al. "Unsupervised cross-domain singing voice conversion." arXiv preprint arXiv:2008.02830 (2020).

  4. Liu, Songxiang, et al. "FastSVC: Fast Cross-Domain Singing Voice Conversion with Feature-wise Linear Modulation." arXiv preprint arXiv:2011.05731 (2020).

  5. Li, Zhonghao, et al. "PPG-based singing voice conversion with adversarial representation learning." arXiv preprint arXiv:2010.14804 (2020).

  6. Guo, Haohan, et al. "Phonetic Posteriorgrams based Many-to-Many Singing Voice Conversion via Adversarial Training." arXiv preprint arXiv:2012.01837 (2020).

論文解説:Phonetic Posteriorgrams based Many-to-Many Singing Voice Conversion via Adversarial Training

目次

論文情報

arxiv[2012.01837] Phonetic Posteriorgrams based Many-to-Many Singing Voice Conversion via Adversarial Training
demo : https://hhguo.github.io/DemoEASVC/

概要

本論文では、end-to-endの敵対的歌声変換手法であるEA-SVC(End-to-end Adversarial Singing Voice Conversion)を提案しています。

EA-SVCでは、発生内容を表すPPG(phonetic posterior-gram、音素事後確率)、ピッチを表すF0、音色を表す話者埋め込みの3種類の特徴量から任意の歌声音声波形を直接生成することが可能です。 提案するモデルは、Generator G、Audio Generation Discriminator D_A、Feature Disentanglement Discriminator D_F の3つのモジュールから構成されています。 Generator G は入力される3種類の特徴量を並列にエンコードし、それらをconcatした物をデコードすることで目的の波形へと変換します。 さらに、Feature Disentanglement Discriminator D_F を適用し、Generator G によりエンコードされたPPGに残っているPitchとtimbrerの情報を除去することで、よりロバストで正確な歌声変換を実現することが可能となります。
また、提案手法では訓練を2段階に分けて行っており、これにより安定した効果的な敵対者訓練プロセスを維持することが可能となります。
実験より、提案モデルは品質と話者類似性の両方において従来のcascadeな畳み込みの手法とWaveNetベースのend-to-endの手法を凌駕していることが確認できました。 また客観分析では、提案する2段階の訓練により学習したモデルはより滑らかでシャープなフォルマントを生成し、高品質化な生成が可能になることが明らかになりました。

提案手法

本論文では、end-to-endの敵対的歌声変換手法であるEA-SVCを提案しています。
本論文のContributionsとして、以下のことが挙げられます。

  • 波形にPPG、F0、話者埋め込みをマッピングするために、MelGAN[2]をベースにしたジェネレータを設計しています。
    入力特徴量を波形に変換する際に、CNN-BLSTMベースのモジュールにより、PPGとF0シーケンスからそれぞれの特徴量を抽出し、concatしています。 また、ロバストで制御可能な音色表現を獲得するため、話者埋め込みは異なる音色・話者を表す訓練可能なベクトルの重み付け和として表現されます。

  • 2つの識別器がGenerator G の学習プロセスに追加されます。
    Audio Generation Discriminator D_A は、本物の音声と生成された偽の音声を分類することで、より良い品質の音声を生成できるようにGenerator G に制約を加えます。 Feature Disentanglement Discriminator D_FエンコードされたPPGの情報からピッチ情報と音色情報を推測するような学習を行い、Generator G はそれをさせないように学習をします。その結果、よりロバストで正確な変換品質が得られることが確認できました。

  • 上記学習プロセスを効率的かつ安定的に行うために、2段階の学習戦略を採用しています。
    提案手法では、まずmulti-resolution STFT(MR-STFT) Lossを用いて生成器を訓練し、その後モデルをより安定させるためにMR-STFT Lossと敵対的Lossの両方を用いてモデルを訓練します。

  • 手法の評価のために、主観試験と実験分析を実施しています。
    MOSによる評価の結果、提案手法の有効性が実証されました。 提案手法は従来のcascadeな畳み込みの手法やWaveNetベースのend-to-endの手法に比べて品質と話者類似度の両方において優れた性能を示したました。 客観分析では、提案する2段階の訓練により学習したモデルはより滑らかでシャープなフォルマントを生成し、高品質化な生成が可能になることが明らかになりました。 さらに、提案手法の有効性を検証するために、提案モデルを用いて音色やピッチの制御実験を行いました。

Generator

f:id:ariacat3366:20201215200836p:plain:w900
Generator Gアーキテクチャ
Generator G は、上記の概要図の左側と右側でそれぞれ別の役割を持っています。
図の左側のモジュールはEncoderとしての役割を担っています。入力としてPPG、F0、話者埋め込みベクトルのsequentialな情報を受け取り、並行して情報の圧縮を行います。

ここで、より良い話者埋め込み表現を獲得するため、GST-Tacotron[3]で提案された話者埋め込み手法にinspiredされた話者埋め込みのモジュールを提案しています。 以下が提案している話者埋め込みのモジュールを表す式となります。

f:id:ariacat3366:20201216130358p:plain:w600
ここで、S非線形変換がなされた入力話者ベクトルを、 E_{1:N} はtrainable weight vectorを表しています。
直接 S を用いるのではなく、S を用いて E_{1:N} のweightを学習することで、clusteringもしくはdisentanglementを促すことができるという主張です。(詳細に関しては自分もまだ理解出来ていません)

図の右側のモジュールはUpsamplerとしての役割を担っています。Encoderにより圧縮された特徴量から、音声波形を直接生成します。
Upsamplerモジュールの構造はMelGAN[2]に非常によく似ており、またLossに関してもMelGANと同じmulti-resolution STFT Loss Loss_{stft} を用いています。
以下はSTFT Lossの定義を示す式となります。

f:id:ariacat3366:20201216130634p:plain:w600

 L_{sc}はspectral convergence Loss、 L_{mag}はlog STFT magnitude Lossを表し、それぞれスペクトル領域での周波数の割合と大きさについての差分を計算するようなLossとなっています。
multi-resolution STFT Loss では、STFT Lossを複数の解像度で計算し、そのsumをとることで計算されます。論文では以下の表のパラメタを用いています。

f:id:ariacat3366:20201216130651p:plain:w600

後述する D_AD_F からのadversarial lossと上記をまとめると、 G に対するLossは以下のようになります。

f:id:ariacat3366:20201216130701p:plain:w600

Audio Generation Discriminator

f:id:ariacat3366:20201216125506p:plain:w600
Audio Generation Discriminator D_Aアーキテクチャ
Audio Generation Discriminator D_A は、入力された音声がオリジナルの音声なのか、Generator G により生成された音声なのかを識別するような学習を行います。D_A を騙せるように G の学習を行うことで、 G の生成する音声の品質を高めるのが狙いです。

D_A に対するLossは以下のようになります。

f:id:ariacat3366:20201216130411p:plain:w600

G に対しては、通常のAdversarial Lossに加えて、以下の式で定義されるFeature Mapping Loss L_{FM} を与えます。

f:id:ariacat3366:20201216130424p:plain:w600

L_{FM} はオリジナルの音声が入力された場合と G により生成された音声が入力された際に、 D_A のブロックiごとの出力が同じになるような制約を G に与えています。この制約により、 GD_A の各特徴空間レベルでオリジナルの音声に似ている音声を生成できるように促します。

最終的に D_A により与えられる G に対するLossは以下のようになります。

f:id:ariacat3366:20201216130434p:plain:w600

Feature Disentanglement Discriminator

f:id:ariacat3366:20201216125538p:plain:w600
Feature Disentanglement Discriminator D_Fアーキテクチャ
Feature Disentanglement Discriminator D_F は、敵対的学習によりGenerator G によりエンコードされたPPGからF0と話者性に関する情報を除去するためのモジュールです。
PPGはコンテンツ情報をよく表現する一方で、音程や話者性の情報を含んでしまうことが知られており、モデルがその情報に依存してしまうと情報の衝突が発生しノイズの原因となってしまいます。
D_F は、Generator G によりエンコードされたPPGから、同じくエンコードされたF0と話者埋め込み情報がconcatされた値を予測するように学習を行い、 G にはそれを妨げるように制約を与えます。

ここで、 D_F に対するLossは以下のようになります。

f:id:ariacat3366:20201216130448p:plain:w600

また、D_F を用いた G に対するLossは以下のようになります。

f:id:ariacat3366:20201216130504p:plain:w600

2段階の訓練

Generator G 、Audio Generation Discriminator D_A 、Feature Disentanglement Discriminator D_F の3つのモジュールを効率的に、安定して学習させるために、提案手法では学習を2つの段階に分けて行うアプローチを提案しています。

Stage 1では、 G のみを学習させます。Lossは Loss_{stft} のみを用います。
ここでの目的は、 G が学習により入力特徴量と音声波形間の正確で安定したマッピングを獲得することです。これにより、 G により安定した生成が行われることが保証されます。

Stage 2では、GD_AD_F の全てのモジュールを学習させます。Lossは全て用います。 ここでの目的は、Stage 1で学習した G のweightを、より最適な分布へと近づけることです。

実験

実験では、従来のcascadeアプローチの手法・WaveNetベースの手法と提案手法のMOS比較を行っています。
cascadeアプローチには、EA-SVCににたモデルを用意しています。違いとして、f0やspk_embを用いていないこと、生成対象がメルスペクトログラムであることが挙げられます。生成されたメルスペクトログラムは、学習済のMelGANを用いて音声波形へと変換します。
WaveNetベースのアプローチには、NVIDIAが以下のリポジトリで公開しているend-to-endの歌声変換モデルを用いています。
GitHub - NVIDIA/nv-wavenet: Reference implementation of real-time autoregressive wavenet inference

また、 D_AD_F の効果を検証するための D_AD_F の有無による生成音声の比較実験、2段階の訓練を行う事による生成音声の比較実験、生成音声の制御性検証のためのピッチコントロール・話者性のコントロール実験についても追加で行っています。

結果

以下は、作者が公開している本手法のデモ音声が聴けるサイトです。
demo : https://hhguo.github.io/DemoEASVC/

以下は従来のcascadeアプローチの手法・WaveNetベースの手法と提案手法のMOS比較の結果を示す表になります。

f:id:ariacat3366:20201216194015p:plain:w500
MOS比較の結果
ここで、C-SVCcascadeアプローチの手法を表しています。
提案手法のMOSが優れていることが確認出来ます。

以下は、 D_AD_F の有無による品質と話者類似性の比較実験の結果を示す表になります。

f:id:ariacat3366:20201216194616p:plain:w500
D_AD_F の有無による比較実験の結果
D_AD_F が品質に強く影響を与えていることが確認出来ます。

以下は2段階の訓練を行うことで、生成される音声のスペクトログラムにどのような差が生じるかの検証実験の結果を示す図になります。

f:id:ariacat3366:20201216195038p:plain:w600
2段階の訓練の検証実験の結果
ここで、 M_0M_0M_0 はそれぞれ以下のような設定で学習したものになります。

  • M_0:Stage2のみの学習、 GL_{adv}のみで学習。
  • M_1 :Stage2のみの学習、 G は全てのLoss(L_{adv}L_{stft})で学習
  • M_2 :Stage1+Stage2を段階的に学習、 G は全てのLoss(L_{adv}L_{stft})で学習

M_2 がもっとも明瞭で滑らかなスペクトログラムであることが確認出来ます。

以下は、話者性を逐次的に変化させて行った際のaveraged magnitude spectrogramを示した図になります。

f:id:ariacat3366:20201216200511p:plain:w600
また、以下は入力F0のピッチをシフトさせた際の生成音声のピッチを表す図になります。
f:id:ariacat3366:20201216200706p:plain:w400
それぞれの図より、提案手法の生成音声の制御性が確認出来ます。

所感

最近の音声変換手法はPPGを使うアプローチが頭ひとつ抜けて品質が良い印象があります。
また、MelGAN[2]は学習が安定すること、生成音声の品質が良いこと、推論が従来のNeuralVocoderと比較して早いことなどから個人的に好きな手法だったので、MelGANのアーキテクチャをベースにしたEA-SVCのモデルアーキテクチャはかなり良いなと思いました。

参考文献

  1. Guo, Haohan & Lu, Heng & Hu, Na & Zhang, Chunlei & Yang, Shan & Xie, Lei & Su, Dan & Yu, Dong. (2020). Phonetic Posteriorgrams based Many-to-Many Singing Voice Conversion via Adversarial Training.

  2. Kumar, Kundan & Kumar, Rithesh & Boissiere, Thibault & Gestin, Lucas & Teoh, Wei & Sotelo, José & Brebisson, Alexandre & Bengio, Y. & Courville, Aaron. (2019). MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis.

  3. Wang, Y., Stanton, D., Zhang, Y., Ryan, R., Battenberg, E., Shor, J., Xiao, Y., Jia, Y., Ren, F. & Saurous, R.A.. (2018). Style Tokens: Unsupervised Style Modeling, Control and Transfer in End-to-End Speech Synthesis. Proceedings of the 35th International Conference on Machine Learning, in PMLR 80:5180-5189

論文解説:Transfer Learning from Speech Synthesis to Voice Conversion with Non-Parallel Training Data

目次

論文情報

arxiv[2009.14399] Transfer Learning from Speech Synthesis to Voice Conversion with Non-Parallel Training Data
demo : https://arkhamimp.github.io/TTL-VC/

概要

本論文では、Text-to-Speech(TTS)タスクで学習したモデルをVoice Conversion(VC)タスクへと転用する新たな学習フレームワーク(TTS-VC transfer learning、以下TTL-VC)を提案しています。
提案手法では始めに、seq2seqのEncoder-Decoder型マルチ話者音声合成モデル(Tacotron2)を学習します。 TTSタスクを学習することで、TTS Encoderは入力テキストからロバストな言語表現を抽出し、TTS Decoderは目標話者の話者埋め込み、Attention Context Vector、Attention Recurrent Network Cellの出力を用いて、目標話者の音響特徴(MelSpectrogram)を生成するようになります。
ここで、TTSタスクを学習したEncoderは、入力テキストから話者に依存しない文脈情報であるContext Vectorへのマッピングを学習をしていると考えることができます。 提案手法では、このマッピングをEncoder-Decoder型音声変換モデルの潜在表現に対して制約として加えるというアプローチをしています。 このアプローチにより、Encoderが音声から話者性を排除した埋め込み表現を獲得するように促します。
また、提案手法ではDecoderは目標話者のEmbeddingを用いて学習するので、Non-Parallelな教師データを用いた学習・任意の話者への音声変換を行うことが可能となります。
実験では、提案手法により得られた音声変換モデルが、品質、自然さ、話者類似性において、異なる2つの音声変換ベースライン手法(PPGベース、VAEベース)よりも優れていることを示し、さらにTTSモデルと同等品質の音声を生成できることを示しました。

提案手法

本論文では、Text-to-Speechタスクで学習したモデルをVoice Conversionタスクへと転用する新たな学習フレームワークであるTTL-VCを提案しています。
TTL-VCでは、事前に学習したTTSモデルの重みをVCタスクを学習するモデルの初期値として用いることで、以下の点で恩恵を得ています。

  1. Encoderの学習時にContext Vector(文脈情報ベクトル)による制約を用いることで、Encoderが音声から話者性に関する情報を完全に排除した埋め込み表現を獲得することが可能となる。
  2. 比較的収集しやすいTTSコーパスを用いて(Non-Parallelなコーパスで)VCタスクを学習することができる。

以下は、既存のTTSベースの手法(TTSタスクの知識を用いてVCタスクを学習する手法)と提案手法の学習の条件や制約について比較をした表です。

f:id:ariacat3366:20201120172938p:plain:w1000
TTSベースの音声変換手法と提案手法の条件比較

[41]:Cotatron: Transcription-guided speech encoder for any-to-many voice conversion without parallel data
[42]:Bootstrapping non-parallel voice conver- sion from speaker-adaptive text-to-speech
[43]:Joint training framework for text-to-speech and voice conversion using multi-Source Tacotron and WaveNet
[44]:Voice transformer network: Sequence-to-sequence voice conversion using transformer with text-to-speech pretraining

TTL-VCでは、VCタスク向けの追加のデータ(音声のパラレルデータなど)を用意する必要がないという点が他の手法との大きな違いとなっています。

TTL-VC の概要

f:id:ariacat3366:20201120172931p:plain:w1000
Transformer-TTS(VC)の概要

本論文で提案しているTTL-VCの概要図です。
図の上半分はTTSタスクの事前学習の概要を表しており、下半分がVCタスクの学習の概要を表しています。

TTSタスクによる事前学習

TTL-VCでは、事前学習としてTacotron2を用いてTTSタスクを学習します。以下は、Tacotron2のアーキテクチャの概要図です。

f:id:ariacat3366:20201120172925p:plain:w600
Tacotron2の概要
Encoder_T は入力としてテキスト列 \mathbf{X}_T を受け取り、テキスト埋め込みベクトル \mathbf{O}_T を出力します。
f:id:ariacat3366:20201125033030p:plain:w400
ここで、EncoderのLocation-Sensitive Attentionから、Encoderによって埋め込まれたテキスト埋め込みベクトル \mathbf{O}_T と目標音響特徴 \mathbf{Y}_T 間のアラインメントを重み行列 \mathbf{W} として得ることができます。 テキスト埋め込みベクトル \mathbf{O}_T に重み行列 \mathbf{W} を掛け合わせることで、Context Vector \mathbf{H}_T を作成します。
f:id:ariacat3366:20201125033038p:plain:w400
Context Vector \mathbf{H}_T には、生成するMelSpectrogramの各フレームに対応した言語情報が埋め込まれていると考えることができます。
Decoderの入力は、上記により生成されたContext Vector \mathbf{H}_T と話者埋め込みベクトル z をconcatした物になります。
f:id:ariacat3366:20201125033046p:plain:w400
Loss_{Mel}は目標話者の音声から生成されたMelSpectrogram \mathbf{Y}_S と生成されたMelSpectrogram \hat{\mathbf{Y}}_S のMSEにより計算されます。
f:id:ariacat3366:20201125033055p:plain:w400

TTL-VC の学習

VCタスクの学習では、Encoder-Decoder型のモデルを用いて学習を行います。Decoderの重みの初期値として、事前に学習したTTSモデルのDecoderの重みを用います。
Encoder_S は入力として音響特徴列 \mathbf{Y}_S を受け取り、Context Vector \mathbf{H}_S を出力します。

f:id:ariacat3366:20201125040303p:plain:w400
ここで、生成するContext Vector \mathbf{H}_S が事前に学習したTTSモデルにより生成されたContext Vector \mathbf{H}_T に近付くように、以下のような制約 {Loss}_{Cont} を加えます。
f:id:ariacat3366:20201125040312p:plain:w400
{Loss}_{Cont}によりEncoderで話者性に関する情報が排除されると考えられるため、学習時に入力話者と目標話者を同一話者としても、Decoderが話者性を埋め込むような学習が促されると考えられます。
Decoderの入力は、TTSタスクの時と同様、Encoderにより生成されたContext Vector \mathbf{H}_S と話者埋め込みベクトル z がconcatされた物になります。
f:id:ariacat3366:20201125040321p:plain:w400
最終的なLossは、{Loss}_{Cont}{Loss}_{Mel}を足し合わせた物となります。
f:id:ariacat3366:20201125040329p:plain:w400

話者埋め込みベクトル z は事前に学習された話者埋め込みモデルにより獲得されます。
話者埋め込みモデルについてはGoogleが提案しているGE2Eと呼ばれる手法[2]を用いています。 以下は上記の話者埋め込みの手法についての解説のサイトです。
google.github.io

学習フローについて

論文の通りの学習では、以下のフローで学習を行います。

  1. Tacotron2の学習:TTL-VC Decoderの重み初期値 + Context Vectorの作成のため
  2. Decoder Adaptation Process:(4)式を用いてDecoderのみを学習
  3. TTL-VCの学習:Encoder, Decoderをend2endで学習

ですが、自分の環境では上記のフローでは学習が上手くいかなかったので、以下のフローで学習を行いました。(発生した現象や問題点の詳細・考察に関しては所感の項目に記載しています)

  1. Tacotron2の学習:TTL-VC Decoderの重み初期値 + Context Vectorの作成のため
  2. Encoderの事前学習:MelSpectrogram → Context Vector の変換を事前学習
  3. Decoderの学習:Context Vector → MelSpectrogram の変換を学習、この時Encoderの重みはfreezeさせる

ここで、Encoderの事前学習時に用いるContext Vectorは事前に学習したTacotron2を用いて事前に生成し、Decoderの学習時に用いるContext Vectorは直前に学習したDncoderを用いて生成しました。

実験

実験では、3つのベースライン手法と提案手法の品質比較を行っています。

以下は、ベースライン手法と提案手法の学習の条件や制約について比較をした表です。

f:id:ariacat3366:20201120172943p:plain:w1000
ベースライン手法と提案手法の条件比較表

ベースライン手法についての簡単な説明です。

MS-TTS

  • Malti-Speaker TTSの略で、実験ではTacotron2を学習モデルとして用いています。他のベースライン手法と異なり、MS-TTSはTTSタスクを学習し、テキストから生成された音声を生成音声として用います。
  • MS-TTSは、生成された音声の品質に関する比較評価のために用意されたベースライン手法です。

PPG-VC

  • PPG-VCのモデルは、ASR(Automatic Speech Recognition、音声認識)を行うEncoderと、音素列から音響特徴を復元するDecoderで構成されています。
  • EncoderはKaldi toolkitsを用いて、MFCCからPPG(Phonetic PosteriorGram、音素事後確率)と呼ばれる、フレーム毎の音素のベクトル確率表現を予測するように学習を行います。(フレームシフト:12.5 ms、MFCC:40次元)
  • Decoderの構造は、Tacotron2のデコーダとほぼ同じ構造で、PPGフレームを入力として受け取り、80次元のMelSpectrogramを予測するように学習を行います。
  • PPG-VCは、TTL-VCと似たEncoder、Decoderの構造をしているため、ベースライン手法として採用されています。また、PPGベースのVC手法は、近年のVCタスクにおいて最先端の性能を発揮することが知られています。

VAE-VC

  • VAE-VC はTTL-VCに非常によく似ていますが、潜在空間が平均と分散により表現される点、Loss_{Cont}が制約として与えられない点が大きな違いとなります。
  • VAE-VCのEncoderは、LSTM layerに続いて2つのFull Connected Layerが接続されており、それぞれ平均ベクトルとガウス確率分布の対数分散ベクトルを出力します。最終的なEncoderの出力はReparameterization Trickにより確率分布からサンプリングされます。
  • VAE-VCのDecoderはTacotron2やPPG-VCのDecoderと似ていますが、他の手法と異なり自己回帰構造を用いることなくフレームごとのマッピングを学習します。そのため、モデル内部にAttention Mechanismを持ちません。
  • TTL-VCとVAE-VCの最も大きな違いは、転移学習の有無にあります。VAE-VCは、転移学習によりTTSの知識伝達が得られるTTL-VCとの比較のために用意された手法です。

結果

以下は、作者が公開している本手法のデモ音声が聴けるサイトです。
demo : https://arkhamimp.github.io/TTL-VC/
品質の確認の際はデモを聞くことをお勧めします。

以下は実験の結果を示す図になります。

f:id:ariacat3366:20201120172948p:plain:w1000
図1. TTSベースの音声変換手法と提案手法の品質評価

f:id:ariacat3366:20201120172954p:plain:w1000
図2. ベースライン手法と提案手法の話者類似性評価

f:id:ariacat3366:20201120172957p:plain:w1000
図3. TTSベースの音声変換手法と提案手法のMOS評価

図1、図2は提案手法と各ベースライン手法の生成音声のどちらが高品質な音声を変換できているかというアンケートの比較結果です。オレンジが提案手法、青が比較対象となるベースライン手法となっています。
また、図3において、提案手法のMOSの値はMS-TTSとほぼ同等ということがわかります。
上記より、TTL-VCは既存のVCまた、MS-TTSはTTSタスクにおける手法なので、TTL-VCはTTSモデルと同等の品質の音声へと変換することが可能であると言うことが確認できました。

また、以下は手法ごとのMCDとRMSEに関する実験結果です。

f:id:ariacat3366:20201125014524p:plain:w500
図4. TTSベースの音声変換手法と提案手法のMCDとF_0のRMSE

ここで、MCDとRMSEの定義は以下の通りです。

f:id:ariacat3366:20201125014852p:plain
f:id:ariacat3366:20201125014900p:plain

MCD(mel-cepstrum distortion)は、変換の前後で音響特徴であるmel-cepstral coefficients (MCCs) がどれだけ変化したかを表す指標です。
F_o RMSE(root mean square errors of F_o)は、変換音声と目標音声のフレーム毎の F_o の差を表す指標です。(目標音声はDTWにより整形されています)
どちらも、値が小さければ小さいほど目標話者との解離が少なく、生成音声の分布がであるという指標となります。

所感

音声変換において、話者性を完全に排除した埋め込み表現を得ることは非常に難しく、現在も様々なアプローチによって検証がなされています。 この手法ではTacotron2の文章埋め込み情報をVCタスクへと使用するというアプローチを用いており、完全に話者性を排除でき、さらにDecoderにより音声を生成することがTTSタスクの事前学習によりある程度保証されるので、個人的にはとても良いアプローチだなと思いました。

逆に、この手法のWeekpointは以下の点かなと思いました。

  • Encoderを汎化させるために、大規模なTTSコーパスを用いた事前学習が必要。英語のコーパスであればlibrittsを用いれば良いので良いが、他の言語(特に日本語)での学習はコーパスを用意する必要があり、敷居が高い。

  • TTL-VCの詳細なアーキテクチャが記載されていないので、詳細な再現実装が難しい。

    • 自分が実装した際は、DecoderはTacotron2のDecoderからAttentionを抜き、本来Attentionから与えられるContext Vectorの代わりにEncoderにより生成されるContext Vectorをフレーム毎に入力する構造にし、EncoderはTacotron2のEncoderの入力サイズをテキスト埋め込みの次元数からメルスペクトログラムの次元数に変更した構造としましたが、これが正しい構造であるのかがわからないという問題があります。
  • TTL-VCの学習の際、Encoderの重みを全てfreezeしないと、話者埋め込みが全く機能しなくなってしまう問題。

    • 論文に記載がなかったのですが、自分の環境で学習を行った際、EncoderとDecoderを同時に学習させた場合、生成される音声が(話者埋め込みが何であれ)入力音声と全く同じになってしまうという現象が発生しました。
    • 上記の問題に関して、自分は「EncoderにMelSpectrogramのlossが伝播されてしまうと、話者性に関する情報を埋め込むようになってしまうのではないか?」という仮説を立て、Encoderの重みを完全にfreezeさせて学習を行った結果、上手く音声を生成できるようになりました。
  • Context Vectorにはイントネーションの情報は含まれないので、生成される音声のイントネーションと入力話者のイントネーションの解離が生じてしまう。

総じて、改善次第でとても有用性のある良いアプローチだなと思いました。

参考文献

  1. Zhang, Mingyang & Zhou, Yi & Zhao, Li & Li, Haizhou. (2020). Transfer Learning from Speech Synthesis to Voice Conversion with Non-Parallel Training Data.

  2. Wan, Li & Wang, Quan & Papir, Alan & Moreno, Ignacio. (2017). Generalized End-to-End Loss for Speaker Verification.

  3. S.-w. Park, D.-y. Kim, and M.-c. Joe, “Cotatron: Transcription-guided speech encoder for any-to-many voice conversion without parallel data,” arXiv preprint arXiv:2005.03295, 2020.

  4. H. Luong and J. Yamagishi, “Bootstrapping non-parallel voice conver- sion from speaker-adaptive text-to-speech,” in IEEE ASRU, 2019, pp. 200–207.

  5. M. Zhang, X. Wang, F. Fang, H. Li, and J. Yamagishi, “Joint training framework for text-to-speech and voice conversion using multi-Source Tacotron and WaveNet,” in Proc. INTERSPEECH, 2019, pp. 1298– 1302.

  6. W.-C. Huang, T. Hayashi, Y.-C. Wu, H. Kameoka, and T. Toda, “Voice transformer network: Sequence-to-sequence voice conversion using transformer with text-to-speech pretraining,” arXiv preprint arXiv:1912.06813, 2019.

論文解説:Voice Transformer Network: Sequence-to-Sequence Voice Conversion Using Transformer with Text-to-Speech Pretraining

目次

論文情報

arxiv[1912.06813] Voice Transformer Network: Sequence-to-Sequence Voice Conversion Using Transformer with Text-to-Speech Pretraining
demo : Voice Transformer Network: Sequence-to Sequence Voice Conversion using Transformer with Text-to-Speech Pretraining

概要

本手法では、TTS(text-to-speech)タスクによる事前学習を用いた、Transformerベースの1対1seq2seq音声変換モデルを提案しています。

音声変換タスクにおいて、RNNやCNNをベースとしたseq2seqモデルは多く提案されていますが、自然言語の分野で用いられることの多いTransformerをベースとした音声変換の手法は未だ提案されていません。
加えて、現状seq2seqモデルを音声変換タスクに用いること自体、学習に必要なデータ量が非常に多いことや変換された音声の品質が悪いことから、実用には程遠いと言えます。
本研究では、大規模かつ利用しやすいTTSコーパスを利用して学習を行ったTTSモデルから、音声変換タスクへと知識を伝達する学習手法を提案しています。
事前学習されたモデルパラメータを用いて初期化された音声変換モデルは、高忠実度で明瞭度の高い音声の隠れ表現を生成することが可能としています。
結果として、提案する学習手法がデータ効率の良い学習を促進し、明瞭度、自然性、類似性の点で既存のseq2seq音声変換モデルよりも優れていることを示しました。

提案手法

本手法では、TTSタスクから音声変換タスクへ転移学習を行う学習手法と、そのモデルであるVoice Transformer Networkを提案しています。

以下では、TTSの枠組みであるseq2seq TTSの簡単な解説を行った後、本手法の解説をします。

sequence-to-sequence TTS

seq2seqのTTSでは入力特徴列  { \boldsymbol{x}_{1:n} = (\boldsymbol{x}_1, ..., \boldsymbol{x}_n)} から、目標特徴列  {\boldsymbol{y}_{1:m} = (\boldsymbol{y}_1, ..., \boldsymbol{y}_m)} を生成します。
RNNやLSTMベースの手法では入力と出力の系列長が一致する必要がありましたが、seq2seqの場合は必ずしも両者の系列長が一致している必要はありません。
(i.e,  n \not= m

seq2seqのモデルの多くはエンコーダ・デコーダ構造となっており、近年の研究ではattention機構が組み込まれたモデルが提案されています。 エンコーダにより、入力として与えられた {\boldsymbol{x}_{1:n}} が隠れ表現 {\boldsymbol{h}_{1:n}} = (\boldsymbol{h}_1, ..., \boldsymbol{h}_n) にマップされます。 またデコーダは自己回帰的に\boldsymbol{y}_tを生成します。 \boldsymbol{h}_{1:n}の重み付きベクトル和がcontextベクトル\boldsymbol{c}_tとして計算されます。 ここで、重みは注意確率ベクトル\boldsymbol{a}_t = (a_{t}^{(1)}, ..., a_t^{(n)})として表現されます。 注意確率ベクトルのそれぞれの要素a_t^{(k)}は、隠れ表現 {\boldsymbol{h}_{k}}の時刻tにおける重要度を表していると考えることができます。 デコーダはcontextベクトル\boldsymbol{c}と時刻t-1までに生成された特徴列 \boldsymbol{y}_{1:t-1}を用いて、 {y_{t}}を生成します。 注意確率ベクトルaの計算、デコーダの生成にはデコーダの隠れ状態\boldsymbol{q}_{t-1}もインプットとして与えれられます。

以上の処理を定式化すると以下のようになります。

\boldsymbol{h}_{1:n} = Enc(\boldsymbol{x}_{1:n})

\boldsymbol{a}_t = attension(\boldsymbol{q}_{t-1}, \boldsymbol{h}_{1:n})

\boldsymbol{c}_t = \sum_{k=1}^n a_t^{(n)}\boldsymbol{h}_k

\boldsymbol{y}_t, \boldsymbol{q}_t = Dec(\boldsymbol{y}_{1:t-1}, \boldsymbol{q}_{t-1}, \boldsymbol{c}_t)

TTSと音声変換のタスクは(特にデコーダの処理内容が)似ているため、転移学習的なアプローチを行えないだろうか?というのが本研究のテーマとなります。

Transformer-based TTS

本手法では、自然言語処理の文脈で猛威を奮っているTransformer[3]をベースとしたモデルを用いています。
多くの方が解説記事を書いてくださっているため、ここではTransformer自体に関しての解説はしません。 自分が日本語の解説記事を読んでいた際は、こちらの方の記事がとても参考になりました。 deeplearning.hatenablog.com

以下では、本手法で提案しているVoice Transformer Networkと、そのベースモデルであるTransformer-TTSについて解説します。

f:id:ariacat3366:20201007115037p:plain:w350
Transformer-TTS(VC)の概要

上記はTransformer-TTSとVoice Transformer Networkの概要図です。

Transformer-TTSは、TransformerにTacotron2のアーキテクチャを結合したような構造となっています。
Transformerとの変更点として、エンコーダ側とデコーダ側にTacotron2由来のPre Netが追加されています。
また、TTSタスクの入力であるテキスト系列とVCタスクの入力であるスペクトログラムでは空間のスケールが異なるため、学習可能な重みを持つ位置埋め込み(Scaled Positional Encodings)を導入しています。
出力側では、音響特徴量を生成するための線形投影と、ストップトークンを予測するための線形投影のためのレイヤが追加されています。
また、最近年提案されているTTSモデルの多くで、5層のCNNで構成されるPost Netで残差を予測し、最終出力に足し合わせることで品質を高めるという手法を用いており、本手法においても同様のアーキテクチャを採用しています。

本手法ではこのアーキテクチャを用いてTTSタスクの学習を行い、転移学習として音声変換タスクを学習します。

学習について

本項では、本手法の学習について解説します。

f:id:ariacat3366:20201007114951p:plain:w500
学習の概要

上記はVoice Transformer Networkの一連の学習フローの概要図です。
学習で用いるデータセットについてですが、小規模のパラレル音声コーパス\boldsymbol{D}_{VC} = (\boldsymbol{S}_{src}, \boldsymbol{S}_{target})、そして大規模なTTSコーパス\boldsymbol{D}_{TTS} = (\boldsymbol{T}_{TTS}, \boldsymbol{S}_{TTS})がそれぞれ使用可能であるとします。
ここで、\boldsymbol{S}_{src}, \boldsymbol{S}_{target}はそれぞれソース、ターゲット話者の音声を指し、\boldsymbol{T}_{TTS}, \boldsymbol{S}_{TTS}はそれぞれTTSコーパスのテキストと音声を指します。
本手法では、\boldsymbol{D}_{TTS}を第一段階の事前学習に、\boldsymbol{D}_{VC}を第二段階の適応学習に用います。

Decoder pretraining

まず、\boldsymbol{D}_{TTS}を用いてTransformer-TTSを普通に学習します。
このフェーズで、音韻情報が押し込まれた隠れ特徴空間\boldsymbol{H}から音声を生成するデコーダ{Dec}_{TTS}^{S}が学習されます。

Encoder pretraining

次に、Decoder pretrainingで学習した{Dec}_{TTS}^{S}を用いて、エンコーダ{Enc}_{TTS}^{S}を学習します。 この時、{Dec}_{src}^{S}の重みはフリーズします。
{Enc}_{TTS}^{S}アーキテクチャですが、入力が音声\boldsymbol{S}_{TTS}となるため、Transformer-TTS(VC)の概要の図で示した[VC]のアーキテクチャを用います。
このフェーズで、{Enc}_{TTS}^{S}は音声の音韻情報のみを効果的に隠れ特徴空間\boldsymbol{H}へと押し込むように学習されます。

VC model training

最後に、Decoder pretrainingで学習した{Dec}_{TTS}^{S}と、Encoder pretrainingで学習した{Enc}_{TTS}^{S}の重みで{Dec}_{VC}^{S}{Enc}_{VC}^{S}初期化し、\boldsymbol{D}_{VC}を用いて学習を行います。
既に事前の学習で音声変換タスクに対して非常に適応しやすい重みを獲得しているため、スクラッチから学習を行う場合と比較して半分の時間で学習が収束するとしています。

実験

本論文では、転移学習の効果を比較するための実験と、ベースラインとの品質の比較をするための実験の2つの実験を行っています。

転移学習の効果を比較するための実験では、異なるサイズの教師データを用いて学習した場合の品質比較、またデコーダとエンコーダの事前学習を行わなかった場合の品質比較を行っています。
ここでの教師データというのはVC model trainingに用いるパラレルの音声データのことを指しており、事前学習では大規模なTTSコーパスを用いて学習していると考えられます。

ベースラインとの品質の比較をするための実験では、ATTS2S[5]というTacotronベースの手法との品質比較を行っています。
実験条件はATTS2Sとほぼ同様ですが、本手法では変換にメルスペクトログラムを用いています。(ATTS2SではWORLD特徴量を用いています)
比較では、生成された音声の自然性と話者一致性に関しての評価を比較しています。

結果

以下は、作者が公開している本手法のデモ音声が聴けるサイトです。
demo : Voice Transformer Network: Sequence-to Sequence Voice Conversion using Transformer with Text-to-Speech Pretraining
品質の確認の際はデモを聞くことをお勧めします。

以下は、転移学習の効果を比較するための実験の結果を示した表です。

f:id:ariacat3366:20201015184430p:plain:w700
実験1の結果

教師データが少ない場合でも、ベースラインであるATTS2Sよりも高い品質の音声が生成できていることがわかります。
また、エンコーダとデコーダの事前学習が最終的な品質に大きく影響を与えていることが確認できます。

また、以下はベースラインとの品質の比較をするための実験における、ベースライン手法であるATTS2Sと提案手法(VTN)の比較表です。

f:id:ariacat3366:20201020154348p:plain
実験2の結果

提案手法がベースラインに比べて高い自然性と話者一致性を示していることがわかります。 また、教師データのサイズが非常に小規模な場合(80)においても、非常に高い自然性と話者一致性を維持していることも確認できました。

所感

この論文が公開された当初はどうだったのかわからないですが、最近ではTTSで学習したモデルを音声変換のデコーダとして用いる、もしくは転移学習により音声変換タスクに利用するという手法がそこそこ提案されていて、流行を感じます。[4]
これらの手法は、音声変換のネックとなっていた「どのようにして音声から話者性を消して、新しい話者性に上書きするか」という問題に対して、事前にテキスト→音声で学習済みのモデルを用意してあげることで、エンコーダにテキスト情報(発話情報)を獲得させることを暗に強制するという解決をしており、個人的にもとても理にかなっているアプローチだなと思っています。
デモに関しても、非常に高品質な音声へと変換ができていると感じます。
元音声の抑揚、イントネーションの情報は失われてしまいますが、それが問題ないようであれば本手法のようなTTSのモデルをVCへと流用するアプローチはとても良いなと思いました。

参考文献

  1. Huang, Wen-Chin & Hayashi, Tomoki & Wu, Yi-Chiao & Kameoka, Hirokazu & Toda, Tomoki. (2019). Voice Transformer Network: Sequence-to-Sequence Voice Conversion Using Transformer with Text-to-Speech Pretraining.

  2. N.Li,S.Liu,Y.Liu,S.Zhao,andM.Liu,“NeuralSpeechSynthesis with Transformer Network,” in Proceedings of the AAAI Conference on Artificial Intelligence, vol. 33, 2019, pp. 6706–6713.

  3. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Proceedings of the 31st International Conference on Neural Information Processing Systems (NIPS'17). Curran Associates Inc., Red Hook, NY, USA, 6000–6010.

  4. Zhang, Mingyang & Zhou, Yi & Zhao, Li & Li, Haizhou. (2020). Transfer Learning from Speech Synthesis to Voice Conversion with Non-Parallel Training Data.

  5. K. Tanaka, H. Kameoka, T. Kaneko, and N. Hojo, “ATTS2S-VC: Sequence-to-sequence Voice Conversion with Attention and Con- text Preservation Mechanisms,” in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), May 2019, pp. 6805–6809.

論文解説: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.