(論文読み)Jukebox: A Generative Model for Music Prafulla(VQ-VAEを用いた音楽サンプリング)

#はじめに

　VQ-VAE（変分自己符号化器）を活用して、歌声が入っている音楽のサンプリング（≒音楽を生成する）が可能なモデルの紹介がされていました。自身の勉強のために本論文を訳しましたので、その内容をまとめました。
　実装に関してもGithubで公開されておりましたので、試しているところです。次回簡単にでもまとめたいです。

　**訳し方が適切でない表現がありましたら、ご指摘頂けると幸甚です。**

>Jukebox: A Generative Model for Music Prafulla
https://arxiv.org/abs/2005.00341



##Abstract

　歌声を音楽を生成するモデルJukeboxを紹介します。本研究では、**マルチスケールVQ-VAE**を用いることで、**忠実に再現された多様な楽曲を数分単位までのコヒーレンス（≒高い再現度）で生成できることを示した。**また、アーティストやジャンルに条件を設定することで、音楽やボーカルのスタイルをコントロールすることができ、歌詞を揃えないことで歌唱をよりコントロールしやすくすることができました。

##1.Introduction


　著者らのモデルによって、高度な楽曲を生成することができます。ロック、ヒップホップ、ジャズなど様々なジャンルの音楽があります。それらはメロディ、リズム、長音域の作曲を捉えることができ様々な楽器のための音色、そして音楽と一緒に生成される歌手のスタイルや声質また、既存の曲があります。

　著者らのアプローチは、**階層的なVQ-VAEアーキテクチャ(Razavi et al., 2019)を使用しています。音声を離散空間に圧縮し、圧縮レベルを上げながら、音楽情報の最大量を保持するように設計された損失関数を用いています。** この圧縮空間上で最大尤度推定を用いて訓練された自己回帰的スパーストランスフォーマー(Child et al., 2019; Vaswani et al., 2017)を使用しています。また、圧縮の各レベルで失われた情報を再現するために自己回帰的アップサンプラーを訓練しています。

　**既存の楽曲の新たな補完も可能です**。著者らのアプローチでは、生成プロセスに影響を与えることができます。トップ先行とコンディショナル先行を入れ替えることで、歌い手に何を歌うべきかを伝えるために歌詞を条件としたり、作曲を制御するためにMIDIを条件とすることができます。 

##2.Background

　音楽を連続波形$x∈[-1,1]^T$で表現し、サンプル数Tは音声の持続時間とサンプリングレートの積であり、一般的には16kHzから48kHzの範囲であると考えます。CDオーディオにおいて十分な品質は、**16bitの精度で保存された44.1kHzのサンプルが一般的です**。

　**画像の生成に比べて音楽の学習・生成は非常に計算量が多く必要です**。例えば、16ビットのビットレートにおいて4分間の音声であれば1千万の入力長さになります。一方、高画質のRGB画像であれば24ビットにおいて3百万の入力量になります。
　
　この課題を解決するために**VQ-VAEを用いて元の音楽を低次元空間に変換します。**
　埋め込みベクトルを符号化するエンコーダ$E(x)$と、コードブック$C={\bf e_k}^K_{k=1}$からの埋め込みベクトルを量子化するボトルネックと、埋め込みベクトルをデコードして入力空間に戻すデコーダ$D(e)$から構成されています。

　学習する際の目的関数は下記です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/3fd966e5-ef21-30db-b937-c924169a1de2.png)

1.$L_{recons}$は再構成誤差と呼ばれる値です。
2.$L_{codebook}$は埋め込みベクトルをエンコーダベクトルに近づける値を示します。
3.$L_{commit}$はエンコーダベクトルに埋め込みベクトルに近づける値を示します。

なお、$sg$はstop gradientの略称で、勾配を計算しないことを示します。ここでは、単一のエンコーダとデコーダを訓練します。潜在シーケンス$h$をシーケンス長が減少する多値表現$[h(1),...,h(L)]$に分割し、それぞれが独自のコードブック$C(l)$を学習しています。 彼らは非オートレグレッシブ・エンコーダ／デコーダを使用し、単純な平均二乗損失を用いてすべてのレベルを共同で学習しています。



###(補足)VQ-VAEについて

　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/8981028f-1f78-aa50-822c-1fb62cfe2dec.png)

 Vector Quantization Variational AutoEncoderとよばれるアルゴリズムになります。**VAE特有の課題であるposterior collapse*の問題を解決するために、Vector Quantizationを導入することで解決を図りました。**

　Quantizeとは、量子化を意味する言葉です。Vector Quantizationとは、アナログ信号などの連続量を**整数などの離散値及び離散潜在空間として近似的に表現することを言います。**
　この時の潜在空間を以下で表現します(コードブックと呼びます）。

```math
e = [e_1,e_2,....e_K] \in\mathbb{R}^{D×K}
```

　この空間のサイズは$K$であり、各点$e_i$はさらに$D$次元実ベクトルで表現されます。この空間自体もあとで同時に学習します。

　*posterior collapseと呼ばれる現象は、PixelCNNのような強いDecoderを使うときに潜在変数を無視した生成が行われてしまう現象のことです。

 学習のポイントとして、ただのオートエンコーダであれば以下のように損失関数を定義します。$E(x)$はエンコーダ関数、$Q(x)$は量子化関数、$D(x)$はデコーダ関数とします。

```math
L = ||x - D(Q(E(x)))||^2
L = log p(x|D(Q(E(x))))
```

**VQ-VAEではこれに下記の$e$の更新要素を加えます。**

```math
L = ||sg[Q(E(x))] - E(x)||^2 +\beta ||Q(E(x))-sg[E(x)]||^2
```
$\beta$はハイパーパラメータであり、0.1～2の値であれば良いようです。

参考資料
>深層生成モデルを巡る旅(2): VAE
https://qiita.com/shionhonda/items/e2cf9fe93ae1034dd771


##3.Music VQ-VAE

　階層型VQ-VAEを画像へ適用した結果(下記リンク)に触発されて著者らは同じ技術を音楽へ適用することを考えました。

>Generating Diverse High-Fidelity Images with VQ-VAE-2
https://arxiv.org/abs/1906.00446

　まず、3つのVQ-VAEモデルを訓練させます。各3つの階層において入力される音楽はベクトル$h_t$へ分類・エンコードされます。そして、最もコードブックベクトル$e_{z_t}$に近いように量子化されます。コード$z_t$は離散表現の音声を学習します。デコーダはコードブックベクトルのシーケンスを受け取り、音楽を再構築します。

**図1**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/ec79c292-016f-f364-0a1c-135b16f902a6.png)


###3.1.Random restarts for embeddings

　VQ-VAEは、**コードブックの崩壊**に悩まされることが課題です。コードブックの崩壊とは、コードブック内の他の埋め込みベクトルが使用されていない間に、全てのエンコーディングが単一または少数の埋め込みベクトルにマップされるため、ボトルネックの情報容量が減少してしまう現象です。これを防ぐためにランダムに再起動させます。

　コードブックベクトルの平均使用量がしきい値を下回った時に、現在のバッチにおけるエンコーダ出力の1つをランダムにリセットします。これにより、コードブック内のすべてのベクトルが使用されていることを保証できるため、コードブックの崩壊を軽減するために学習する勾配を保つことが可能になります。

###3.2.Separated Autoencoders

 階層型VQ-VAEを音楽に使用する場合、ボトルネックとなっている最上位レベルはほとんど利用されませんでした。モデルがボトルネックとなっていない下位レベルにすべての情報を渡すため、完全な崩壊がみられる場合がありました。　
　各レベルに格納された情報量を最大化するために、著者らはホップ長を変化させた別々のオートエンコーダーを訓練させました。各レベルの離散符号は、異なる圧縮レベルでの入力の独立した符号化として扱うことができるようになりました。

###3.3.Spectral Loss
 サンプルレベルの再構成ロスを扱う場合は、モデルは低周波のみを再構成するように学習します。中高周波域を捕捉するためには、次のように定義されるスペクトル損失を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/bee57d4a-6979-34ad-c482-b7c65830bc71.png)

これは、モデルが学習がより困難である位相に注意を払うことなくスペクトル成分を一致させるようにできます。

##4. Music Priors and Upsamplers
　VQ-VAEを学習した後、事前確率$p(z)$を学習する必要があります。この事前確率は以下のように分解できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/30ddfdf0-2836-4b2f-dcda-2b3cbeab6eb7.png)

これらはそれぞれ、VQ-VAEによって生成された離散トークン空間における自己回帰的なモデル化問題となります。

###4.1.Artist, Genre, and Timing Conditioning

　著者らの生成モデルは、**訓練中に条件付け信号を追加することでより制御しやすくすることができます。**最初のモデルでは、楽曲にアーティストラベルとジャンルラベルを与えています。これには2つの利点があります。第一に、オーディオ予測のエントロピーを低減するので、モデルは特定のスタイルでより良い品質を達成することができます。第二に、生成時に任意に選択したスタイルで生成するようにモデルを操ることができます。
　 
さらに、学習時に各セグメントにタイミング信号を付加しています。この信号には曲の全体的な持続時間、特定のサンプルの開始時間、曲のどのくらいの割合が経過したかが含まれています。これによりモデルは全体の構造に依存する音楽パターンを学習することができます。


###4.2. Lyrics Conditioning

　上記の条件付きモデルは、多様なジャンルや芸術的スタイルの歌を生成することができます。しかし、それらのモデルによって生成された歌声は、多くは説得力のあるメロディーで歌われます。**しかし、ほとんどが片言に聞こえる言葉で構成されているため、認識可能な英単語を生成することはできませんでした。**

　従って、歌詞付き生成モデルを制御できるようにするために、各音楽セグメントに対応する歌詞に条件付けすることで、より多くのコンテキストを提供し、音楽と同時に歌声を生成することを可能にしました。



###4.3. Decoder Pretraining

　歌詞モデルを訓練するために必要な計算量を減らすために、著者らは事前に訓練された無条件トップレベルプライオをデコーダとして使用し、モデル手術を使用して歌詞エンコーダを導入しました。
　このように、初期化時にモデルは事前に訓練されたデコーダと同じように振る舞いますが、エンコーダの状態とパラメータに関して勾配が残っています。これにより、モデルがエンコーダの使用を学習することができるのです。

###4.4Decoder Pretraining
###Ancestral sampling

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/b3bef280-442d-3085-18f3-37cd8695eac1.png)

　各モデルは、ジャンル、アーティスト、タイミング、歌詞などの条件付け情報を取り、アップサンプラモデルも上位レベルのコードを条件としています。音楽を生成するには、条件付け情報を利用してVQ-VAEコードを上から下へサンプリングして制御し、その後、VQ-VAEデコーダで下層のコードをオーディオに変換します。


###Windowed sampling

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/dcff1332-ee22-c042-89ea-658b503ee048.png)

　モデルのコンテクスト長（この図では 12）よりも長い音楽を生成するために、前のコードのウィンドウの重なりをコンテクストとし、各レベルでコンティニュエーションを繰り返しサンプリングします。オーバーラップ量はハイパーパラメータであり、図はホップ長 3 で 75%のオーバーラップの例を示しています。


###Primed sampling:
 既存のオーディオ信号をVQ-VAEコードに変換し、各レベルの後続コードをサンプリングすることで、既存のオーディオ信号の連続性を生成することができます。

##5.Experiments

###5.1. Dataset

　著者らは**120万曲（うち60万曲は英語）の新しいデータセットをスクレイピングし、**歌詞とLyricWiki（LyricWiki）からのメタデータとペアにしました。メタデータには、アーティスト、アルバム、ジャンル、リリース年、各曲に関連する共通のムードやプレイリストのキーワードが含まれています。
　32bit、44.1kHzの生音声を用いてトレーニングを行い、右チャンネルと左チャンネルをランダムにダウンミックスしてモノチャンネルの音声を生成することでデータの増強を行っています。

###5.2. Training Details

　音楽用VQ-VAEでは、**44kHzの音声を8倍、32倍、128倍の3段階のボトルネックを用いて、それぞれのレベルで2048のコードブックサイズで次元的に圧縮しています。**VQ-VAEは200万個のパラメータを持っており、256個のV100上の9秒間の音声クリップを3日間学習しました。

　アップサンプラは10億個のパラメータを持ち、128個のV100で2週間、トップレベルの事前学習は50億個のパラメータを持ち、512個のV100で4週間学習します。学習率0.00015、重み減衰0.002のAdamを使用しています。歌詞の条件付けには、事前処理を再利用し、小さなエンコーダーを追加した後、512台のV100で2週間学習しました。

###5.3.Samples

　著者らは、サンプル品質を向上させながら一連のモデルを学習しました。**最初のモデルは、22 kHzのVQ-VAEコードと比較的小さな優先順位のモデルを使用してMAESTROデータセットで学習しました。**これにより、ピアノとバイオリンを含む高忠実度のクラシック音楽サンプルを生成できることがわかりました。
　次に、ジャンルとアーティストのラベルを持つ、より大規模で多様な楽曲のデータセットを収集しました。この新しいデータセットに同じモデルを適用したところ、クラシック音楽以外の多様なサンプルを生成することができ、1分以上の音楽性とコヒーレンスを実証しました。
　

###Coherence
　トップレベルの前処理のコンテキストの長さ（約24秒）を通して、サンプルは音楽的に非常に首尾一貫した状態を保つことを確認しました。また、ウィンドウをスライドさせてより長いサンプルを生成しても、同じようなハーモニクスとテクスチャを維持していることがわかりました。
　

###Musicality

　サンプルは頻繁に表れる音楽的なハーモニーを模倣し、歌詞は通常、非常に自然な方法で設定されています。メロディの最高音や最長音は、人間の歌手が強調する言葉と一致することが多く、歌詞はフレーズのプロソディをキャプチャする方法でほぼ常にレンダリングされています。 

###Novel styles

　著者らは、アーティストとは関係のない珍しいジャンルの楽曲を生成しています。一般的には、アーティストと同じ声を使いながら、新しい歌のスタイルに一般化するのはかなり難しいことが想定されます。しかし、カントリー歌手のアラン・ジャクソンとヒップホップやパンクなどの変わったジャンルを混ぜてみても、カントリースタイルから離れたサンプルにはならない結果となりました。

###Novel riffs
　Jukeboxのもう一つの有用な展開として不完全なアイデアを録音することで、様々なコンティニュエーションを探ることができるということです。著者らはミュージシャンによる斬新なリフの録音をキュレーションし、サンプリング中にモデルをプライム化しました。
　サンプル6はエルトン・ジョンの曲ではあまり使われていない音楽スタイルから始まります。サンプル6は、エルトン・ジョンの曲ではあまり使われていない音楽スタイルで始まりますが、モデルはこの曲をさらに発展させていきます。



###5.4. VQ-VAE Ablations

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567823/1d5e90aa-4b3d-8b05-71d9-c8443ae298d0.png)

　**上図は異なるVQ-VAEからの再構成の比較を示しており、x軸は時間、y軸は周波数です。**左から右の列にかけて、ホップ長が8、32、128のボトムレベル、ミドルレベル、トップレベルの再構成となっています。それぞれMelのスペクトルグラムとして可視化されています。
　3行目ではスペクトルロスを除去し、中間レベルとトップレベルで高周波情報を失っていることがわかります。4行目では別個のオートエンコーダー（図1）の代わりに、階層型VQ-VAE（Razaviら、2019）を使用しています。
　最後に5行目はVQ-VAEに匹敵する一定のビットレートでオーディオをエンコードするOpusコーデックを使用したベースラインを示しています。また、高い周波数をキャプチャすることができなかったため、最高レベルの圧縮では顕著なアーチファクトを追加しています。


##6.Related Work

###Generative models for music:
　記号音楽の生成モデルの歴史は半世紀以上前にさかのぼります。初期のアプローチとしては、ルールベースシステム（Moorer, 1972）、カオスと自己相似性（Pressing, 1988）、セルラーオートマトン（Beyls, 1989）、連結合成（Jehan, 2005）、制約計画法（Anders & Mi-randa, 2011）など、さまざまなアプローチがあります。
　より最近のデータ駆動型アプローチとしては、ギブスサンプリングを使用してバッハの合唱曲のスタイルで音符を生成するDeepBach(Hadjeres et al.,2017)およびCoconet(Huang et al.,2017)、生成的なアドリブを使用するMidiNet(Yang et al.,2017)およびMuseGAN(Dong et al.,2018)などが挙げられます。

　また、WaveNetスタイルのオートエンコーダーを用いたNSynth(Engel et al., 2017)、Mel2Mel(Kim et al., 2019)、Wave2Midi2Wave(Hawthorne et al., 2019)などのように、記号的な音楽情報に基づいて音楽を合成するためのアプローチも数多く存在しています。


###Sample-level generation of audio:

　近年、様々な音声生成モデルが発表されています。WaveNet (Oord et al., 2016) は、コンテクストの長さを指数関数的に増加させるために、拡張された畳み込みの系列を使用することが可能になります。そして、生波形の自己回帰的なサンプルバイサンプルの確率的モデリングを行います。これにより、無次元的にあるいは音響的特徴やスペックプログラムに条件付けをすることで、リアルなオーディオを生成することができます。

　Parallel WaveNet (Oord et al., 2018)は、これを改良したもので代わりにロジスティックス分布、連続確率分布の混合物を使用し、事前に学習した自己回帰モデルから並列フィードフォワードネットワークを学習する確率密度分布を実行することで、再現度の高いオーディオの高速サンプリングを可能にしています。 

　WaveGlow（Prengerら、2019）は、並列サンプルレベルのオーディオ合成のためのフローベースのモデルであり、これは、素直な最尤推定で訓練することができ、したがって、知識の蒸留に必要な２段階の訓練プロセスに有利です。

###VQ-VAE
　Oordら(2017)は、非常に長い文脈入力をベクトル量子化を用いて、より長い長さの離散潜在符号化にダウンサンプリングするアプローチであるVQ-VAEを導入しました。その結果、高品質な画像と音声の生成と音素の教師なし表現の学習が可能であることを示しました。
　Razaviら(2019)は、画像に対して離散的な繰り返し表現の階層を導入することで上記のモデルを拡張し、得られたモデルが、受容野の小さい下位階層ではテクスチャのような局所的な特徴を捕捉しながら、高レベルの意味論を最大の受容野を持つ離散符号の最上位階層に分離する学習が可能であることを示しました。

###Speech synthesis
　自然な人間の音声を生成するためには、言語的特徴の理解・音のマッピングや表現の操縦性が必要となります。多くのテキスト音声合成(TTS)システムは、高度に設計された特徴(Klatt, 1980)、慎重に調整されたサウンドセグメント(Hunt & Black, 1996)、統計的パラメトリックモデリング(Zen et al., 2009)、および(Arık et al., 2017)で述べられているような十数種類の複雑なパイプラインに依存しています。

　Deep Voice3 (Ping et al., 2018)、Tacotron 2 (Shen et al., 2018)、およびChar2Wav (Sotelo et al., 2017)のような最近の作品は、シーケンス間のアーキテクチャを使用して音声合成をエンドツーエンドで学習します(Sutskeveret al., 2014)。設計空間は広大となりますが、一般的に典型的なアプローチはテキスト表現、音声特徴、および最終的な生波形を構築するための双方向エンコーダ、デコーダ、およびボコーダで構成されています。


##7.Future work

　著者らのアプローチは、一貫した長尺の音楽サンプルを生成する能力において前進させることができました。しかし、今後の作業にはいくつかの方向性があることを認識しています。
　偉大な音楽の生成は、すべての時間スケールにわたって高品質でなければなりません。現在のモデルは、ミドルレンジのタイムスケールに強いと著者らは考えています。モデルは、興味深い多様なハーモニー、リズム、楽器、声で、局所的に非常に良い音のサンプルを生成することがよくあります。

　著者らは、生成されたメロディーやリズムが、特定の歌詞に非常によく合っていることに感銘を受けました。しかし、サンプルは長い時間スケールで一貫していますが、従来の大きな音楽の構造（繰り返しのコーラスや問答形式のメロディなど）を持っていないことがわかります。また、小さな音階では、音声のノイズやスクラッチ感が聞こえることもあります。

　また、現在のモデルでは、**1分間のトップレベルのトークンを生成するのに約1時間かかります。 **アップサンプリングの処理は、サンプルを順次処理していくため、非常に時間がかかります。現在、1分間のトップレベルトークンをアップサンプリングするのに約8時間かかっています。


##8.Conclusion
　Jukeboxは、様々なスタイルやアーティストを模倣した音楽を生成するモデルです。Jukeboxでは、特定のアーティストやジャンルの楽曲を条件とし、サンプルの歌詞を指定することができます。著者らは、階層型VQ-VAEを訓練し、音楽を効果的にトークンに圧縮するために必要な詳細をレイアウトしました。
　これまでの研究では、20〜30秒台の生のオーディオ音楽を生成していた。しかし著者らのモデルでは、数分単位の長さの楽曲を生成することが可能であり、認識可能な歌声の自然な響きを持つ楽曲を生成することができるようになりました。

　

#おわりに

　実装をする中で論文の理解に誤りがあれば修正したいと思います。