論文解説: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では入力特徴列 から、目標特徴列 を生成します。
RNNやLSTMベースの手法では入力と出力の系列長が一致する必要がありましたが、seq2seqの場合は必ずしも両者の系列長が一致している必要はありません。
(i.e, )
seq2seqのモデルの多くはエンコーダ・デコーダ構造となっており、近年の研究ではattention機構が組み込まれたモデルが提案されています。 エンコーダにより、入力として与えられた が隠れ表現 にマップされます。 またデコーダは自己回帰的にを生成します。 の重み付きベクトル和がcontextベクトルとして計算されます。 ここで、重みは注意確率ベクトルとして表現されます。 注意確率ベクトルのそれぞれの要素は、隠れ表現 の時刻tにおける重要度を表していると考えることができます。 デコーダはcontextベクトルと時刻t-1までに生成された特徴列を用いて、を生成します。 注意確率ベクトルの計算、デコーダの生成にはデコーダの隠れ状態もインプットとして与えれられます。
以上の処理を定式化すると以下のようになります。
TTSと音声変換のタスクは(特にデコーダの処理内容が)似ているため、転移学習的なアプローチを行えないだろうか?というのが本研究のテーマとなります。
Transformer-based TTS
本手法では、自然言語処理の文脈で猛威を奮っているTransformer[3]をベースとしたモデルを用いています。
多くの方が解説記事を書いてくださっているため、ここではTransformer自体に関しての解説はしません。
自分が日本語の解説記事を読んでいた際は、こちらの方の記事がとても参考になりました。
deeplearning.hatenablog.com
以下では、本手法で提案しているVoice Transformer Networkと、そのベースモデルであるTransformer-TTSについて解説します。
上記はTransformer-TTSとVoice Transformer Networkの概要図です。
Transformer-TTSは、TransformerにTacotron2のアーキテクチャを結合したような構造となっています。
Transformerとの変更点として、エンコーダ側とデコーダ側にTacotron2由来のPre Netが追加されています。
また、TTSタスクの入力であるテキスト系列とVCタスクの入力であるスペクトログラムでは空間のスケールが異なるため、学習可能な重みを持つ位置埋め込み(Scaled Positional Encodings)を導入しています。
出力側では、音響特徴量を生成するための線形投影と、ストップトークンを予測するための線形投影のためのレイヤが追加されています。
また、最近年提案されているTTSモデルの多くで、5層のCNNで構成されるPost Netで残差を予測し、最終出力に足し合わせることで品質を高めるという手法を用いており、本手法においても同様のアーキテクチャを採用しています。
本手法ではこのアーキテクチャを用いてTTSタスクの学習を行い、転移学習として音声変換タスクを学習します。
学習について
本項では、本手法の学習について解説します。
上記はVoice Transformer Networkの一連の学習フローの概要図です。
学習で用いるデータセットについてですが、小規模のパラレル音声コーパス、そして大規模なTTSコーパスがそれぞれ使用可能であるとします。
ここで、はそれぞれソース、ターゲット話者の音声を指し、はそれぞれTTSコーパスのテキストと音声を指します。
本手法では、を第一段階の事前学習に、を第二段階の適応学習に用います。
Decoder pretraining
まず、を用いてTransformer-TTSを普通に学習します。
このフェーズで、音韻情報が押し込まれた隠れ特徴空間から音声を生成するデコーダが学習されます。
Encoder pretraining
次に、Decoder pretrainingで学習したを用いて、エンコーダを学習します。
この時、の重みはフリーズします。
のアーキテクチャですが、入力が音声となるため、Transformer-TTS(VC)の概要の図で示した[VC]のアーキテクチャを用います。
このフェーズで、は音声の音韻情報のみを効果的に隠れ特徴空間へと押し込むように学習されます。
VC model training
最後に、Decoder pretrainingで学習したと、Encoder pretrainingで学習したの重みでと初期化し、を用いて学習を行います。
既に事前の学習で音声変換タスクに対して非常に適応しやすい重みを獲得しているため、スクラッチから学習を行う場合と比較して半分の時間で学習が収束するとしています。
実験
本論文では、転移学習の効果を比較するための実験と、ベースラインとの品質の比較をするための実験の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
品質の確認の際はデモを聞くことをお勧めします。
以下は、転移学習の効果を比較するための実験の結果を示した表です。
教師データが少ない場合でも、ベースラインであるATTS2Sよりも高い品質の音声が生成できていることがわかります。
また、エンコーダとデコーダの事前学習が最終的な品質に大きく影響を与えていることが確認できます。
また、以下はベースラインとの品質の比較をするための実験における、ベースライン手法であるATTS2Sと提案手法(VTN)の比較表です。
提案手法がベースラインに比べて高い自然性と話者一致性を示していることがわかります。 また、教師データのサイズが非常に小規模な場合(80)においても、非常に高い自然性と話者一致性を維持していることも確認できました。
所感
この論文が公開された当初はどうだったのかわからないですが、最近ではTTSで学習したモデルを音声変換のデコーダとして用いる、もしくは転移学習により音声変換タスクに利用するという手法がそこそこ提案されていて、流行を感じます。[4]
これらの手法は、音声変換のネックとなっていた「どのようにして音声から話者性を消して、新しい話者性に上書きするか」という問題に対して、事前にテキスト→音声で学習済みのモデルを用意してあげることで、エンコーダにテキスト情報(発話情報)を獲得させることを暗に強制するという解決をしており、個人的にもとても理にかなっているアプローチだなと思っています。
デモに関しても、非常に高品質な音声へと変換ができていると感じます。
元音声の抑揚、イントネーションの情報は失われてしまいますが、それが問題ないようであれば本手法のようなTTSのモデルをVCへと流用するアプローチはとても良いなと思いました。