ICLR2019で採択されたADVERSARIAL AUDIO SYNTHESISを読んだメモ的なもの
link : https://arxiv.org/abs/1802.04208
Demo.ipynbはColabratry上で動かすことをオススメします。
この研究は、GANを用いて人が認識しやすい音声を生成することを目的としたものです。
現状、ほとんどのGANは画像の生成で用いられていましたが、音声の生成では用いられていませんでした。
この研究では、既存のGANを音に適したものに作り替えて、それに加えて音の特徴を用いてSpecGANとWaveGANの2種類のGANを作りその性能を比較しています。
音声生成は、音楽制作や映画のSE音で実用的であると考えられています。
映画などの制作に携わっている音響監督の方達は、作品内で使用するSE音を選ぶ時、多数ある音の中からその場面に合う一つを見つけなければなりません。とても面倒臭い作業です。
そこで、音声生成があるとSE音を探したい場面の情報をインプットしただけで適した音を生成してくれるとその作業が楽になるのではないかと考えられます。
従来の音声生成には自己回帰トレーニングによるニューラルネットワークモデルがあげられるが、これは出力が出るたびにフィードバックをしなければならないので、とても時間がかかる方法です。
画像生成で使われているGANを音声生成で使用するには、スペクトログラムに変換して画像として扱うと簡単になると考えられます。
この論文では、2種類のGANの提案をしています。
1つ目はSpecGANと呼ばれるもので、これは入力のオーディオデータをスペクトログラムに直して扱うモデルです。
2つ目はWaveGANと呼ばれるもので、これは画像生成に使われているDCGANを音声生成に対応するように作り替えたものです。入力データを別の形に変換せずにそのまま使えるのが特徴です。
WaveGANは画像と音声の違いを見つけ、それらの違いを使い従来の画像の生成に用いていたGANを音声用に作りかえたものです。
上の画像は音声と画像を主成分分析した結果です。
WaveGANはDCGANを元にして作られています。
画像用のDCGANは画像が2次元データなので、2次元のデータを扱う構造をしているが、音声データを扱うためには1次元のデータを扱う構造に直す必要があります。
画像を生成する際、stride factorと呼ばれる空白を徐々に増やしていきその空白をすでに形成されているデータと照らし合わしながら埋めていきます。
学習方法はWGAN-GPと同じものを使っています。
また、WaveGANでは、本来のDCGANと違い、バッチ正規化を行っていません。
DCGANは画像生成する時に生成した画像にチェッカーボードと呼ばれるジャギのようなものが発生することが知られています。
音声の場合は、いずれかの音階が壊れることがあります。
それを防ぐために以下の図のようなイメージでディスクリミネータ側で生成されたデータをシャッフルしています。
生成されたデータを細かく区切り、いくつかの整数をランダムで用いて、例えば
のような作業を行います。
WaveGANでは[-2, 2]の範囲の整数を用いて行っています。
音声認識で用いられている音声のデータのほとんどはスペクトログラム表現に直されて使われています。
SpecGANで使用する音声をスペクトログラムに直す手順は、16msごとに8msずつ動かしていきフーリエ変換を行っています。
0 ~ 8kHzで等間隔に128の周波数ビンを得ています。
各ビンは平均0、分散1になるように正規化されています。
この論文では、定量的な評価とは別に人による評価を行っています。
その人による評価を容易にするために、Speech Commands Datasetに焦点を当てています。
Speech Commands Datasetは人間が0から9の数字を読み上げている音声データセットです。
このデータセットの他にも以下のデータセットで生成できることが確認されています。
以下の図は元のデータと生成された音声から生成されたスペクトログラムの結果です。
生成された音声を評価するために、定量的評価の方はInception Scoreを用いています。
Inception Scoreは、生成されたものが識別しやすいほどまたは生成されるものの種類が豊富であるほど高くなります。
以下の式に示すカルバック・ライブラー情報量を各データについて求めます。
その後、このカルバック・ライブラー情報量の平均を取り、expを取るとInception Scoreになります。
上記のInception Scoreは予期せず高くなってしまう場合が2パターン考えられます。
これらの状態になっているかどうかを判断するために以下の二つの値を取ります。
1000個の生成されたデータを取り、各点で他の生成された点と最も近い距離にある点とのユークリッド距離をとりその平均を取ったもの
この値を取ることにより、出力データが同じものになっていないかどうかを判断できます。
1000個の生成されたデータを取り、各点でトレーニングデータの中で最も近い点とのユークリッド距離をとりその平均を取ったもの
この値を取ることにより、出力データがトレーニングデータと同じになっていないかどうかを判断できます。
この論文の目標は人間が認識しやすい音を生成することなので、生成された音を実際に300人の人に評価してもらっています。
評価対象の人は英語ネイティブの人です。
以下の観点を1 ~ 5の5段階で評価しています。
上記の表はInception Scoreなどの評価の結果です。
これらのことより、この論文では目標が人が認識しやすい音声を生成することだったので、WaveGANの方が優れていると判断された。
Inception ScoreがSpecGANの方が高かった理由としては、Inception Scoreを出す際にいったんスペクトログラムに変換してから評価しているので、生成過程でInception Scoreを用いているSpecGANの方が高い結果が出たと思われる。