2023年01月04日
高速無限音楽波形生成 musika
![]() | Tweet |
![]() |
Musika! Fast Infinite Waveform Music GenerationGenerate infinite music in an instant with Musika!
— Marco Pasini (@marco_ppasini) August 19, 2022
In our #ISMIR2022 paper we show how Musika generates coherent infinite audio much faster than real-time on CPU!
Try Musika now: https://t.co/z5zWmSaVI5
Demo samples: https://t.co/Rhowl1MvIx
Paper: https://t.co/RehF7BwFNj
🧵👇 pic.twitter.com/Szcscu88Sp
Marco Pasini, Jan Schluter Johannes Kepler Universitat Linz
arXiv preprint arXiv:2208.08706 (2022).
musikaでは、スペクトログラムの大きさと位相の反転表現をAdversarialオートエンコーダで学習し、この表現に基づいてGANを特定の音楽ドメインで学習します。
任意の長さの抜粋系列を並列に生成する事が出来、間を通して様式的に音楽の一貫性を保つ事が出来ます。
本研究では、非自己回帰型音声生成システムの現在の欠点を考慮し、音声を条件付きで高速に生成するGANシステムmusika を提案します。
3 METHOD波形x
潜在ベクトルc
時間圧縮率rtime
オートエンコーダモデルを使用して、エンコードされた潜在ベクトルから元の波形の再構成を取得します。
次にGANを使用して分布p(c)をモデル化する事を目指します。
ジェネレータGが任意の長さの潜在ベクトルのシーケンスを生成するための条件として使用される潜在座標系を使用します。
さらに、人間の入力によって生成プロセスをガイドできるように、さまざまな調整信号でgeneratorを調整します。
潜在ベクトルの生成されたシーケンスは、以前に学習されたデコーダーで波形に反転されます。
3.2 LATENT COORDINATE SYSTEM潜在座標系を使用してgeneratorを調整します。これはもともと無限幅の風景画像を生成するために導入されました。
時間的にコヒーレントな系列を生成するために、
2 * seq_len座標ベクトルのシーケンスw12をランダムにトリミングし、それを2つのシーケンスw1、w2に分割します。
2つのパッチを連結し、結果として生成された長さ2seq_lenをdiscriminatorに追加します。
これにより、generatorは、潜在座標のシーケンスを、生成された潜在ベクトルのシーケンスと整列させる事が出来ます。
discriminatorは、潜在座標の隣接シーケンスが潜在ベクトルの隣接シーケンスになる必要がある事をgeneratorに強制的に学習させます。
潜在ベクトルは、一時的に連結でき、生成されたパッチの境界にアーティファクトの無い一貫した最終出力が得られます。
...................
...................
githubの方からColab ノートブックを利用出来るので、そちらを使えば簡単です。
...環境はcondaを使う事が一番でしょうか? conda自体の設定が面倒なんですが...
Musika_Finetune では学習データが必要ですが、これはmp3で良いです。
musika_encode.pyでそれらをエンコードしたら、
musika_train.pyでモデルをfine-tuningします。
その時から既に、GRADIO INTERFACE での、web UI にアクセス出来ます。
そこには、こんな事が書いてあります。
デモの方では Music Genre to Generate ジャンルを選べますが、こちらでfine-tuneするとジャンルを選べません。
これはジャンル毎に別モデルになっているからであり、base_modelつまり学習元モデルを選択しているだけだからです。
musika_train.py の実行には、少ない学習データ、少ないepochでも非常に時間がかかると思います。
どこでこれを調整出来るかと思ってソースコードの方をよく読みましたが...
parse_train.py
...................
musikaのfine tuneでは少数データでもスタイルの模倣が出来るようなのは間違いないですが
学習に非常に時間がかかるため、どこを学習しているのか理解するか試行を重ねるだけでも時間がかかりそうです。
...................
githubの方からColab ノートブックを利用出来るので、そちらを使えば簡単です。
...環境はcondaを使う事が一番でしょうか? conda自体の設定が面倒なんですが...
Musika_Finetune では学習データが必要ですが、これはmp3で良いです。
musika_encode.pyでそれらをエンコードしたら、
musika_train.pyでモデルをfine-tuningします。
その時から既に、GRADIO INTERFACE での、web UI にアクセス出来ます。
そこには、こんな事が書いてあります。
The generator used for this demo is updated after every epoch during training!
デモの方では Music Genre to Generate ジャンルを選べますが、こちらでfine-tuneするとジャンルを選べません。
これはジャンル毎に別モデルになっているからであり、base_modelつまり学習元モデルを選択しているだけだからです。
musika_train.py の実行には、少ない学習データ、少ないepochでも非常に時間がかかると思います。
どこでこれを調整出来るかと思ってソースコードの方をよく読みましたが...
parse_train.py
parser.add_argument(このtotsamples の数がそうだったようです。
"--totsamples",
type=int,
default=300000,
help="Max samples chosen per epoch",
)
...................
musikaのfine tuneでは少数データでもスタイルの模倣が出来るようなのは間違いないですが
学習に非常に時間がかかるため、どこを学習しているのか理解するか試行を重ねるだけでも時間がかかりそうです。