-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Survey & Experiment #1
Comments
主だった情報・論文はこの辺りです。1.(2016年)が初出ですが、その後、そこまで進展していない模様。
Music style transferで評価が高いのは、2018年にFacebook AI Researchが出したこちらのようです。 流し読みですが、この論文では、「Neural Style Transferは使わん」的なことが書いてあり、multi-domain wavenet autoencoderという手法が採用されています。 |
A Universal Music Translation Networkの実装例を見つけました。 また、こちらのGoogle Brainのものも面白そうです。手法はVEAです。実装例あり。 |
安田さん情報です。 |
http://createwith.ai/ |
https://github.com/andabi/deep-voice-conversion |
Neural Translation of Musical StyleJazzとClassicのStyle変換、実装も公開されている |
Neural Audio Synthesis of Musical Notes with WaveNet AutoencodersWaveNetを使ったフルートとかオルガンの音の合成。2017なので古めかも。データセットあり。 |
進め方A Universal Music Translation Networkの実装を目標とする
|
Nsynthから脱線してmodels 配下の Melody RNNとMusic VAE, drums rnn が組み込まれてる magenta studioで遊んでみたんですけど、組み合わせるとこちらもこちらで面白いですね それっぽいメロディーを大量生成して、そのメロディーに対してドラムをつけれる。 学習データに例えば東方の主旋律とベースライン突っ込めば、なんとなく東方っぽいメロディを無限生成できるかも? |
nsynthのcolabで、巨大なデータセットを使った学習済みモデルを使った生成を試してみたんですが、NSynthの中身はwavenet autoencoderで生成にすごい時間かかります。 |
↑の論文はICRL 2019にAcceptされてます。 |
A Universal Music Translation Networkは実装みつからず。また学習にかなりの時間がかかる32 V100 GPU x 数日。 |
@yurfuwa さんのmagenta studioを組み合わせて使うと面白そう。 |
どちらにせよ現状では自前データでの学習がオリジナリティを出すために必要そうなので、見えているNEXTアクションとしては
|
早速試してみました。ピアノ音源のmidiを変換 |
ピアノ音源なのに複数音源の原曲っぽくなった |
五月雨になってしまいましたが、例えば大量の単音源のmidiから、その曲っぽさを magenta studioでつくり、Gansynthで複数音源に拡張してオーケストラmidiつくる、とかできるんじゃないかなと |
Piqcyでも紹介されてる そもそもの信号処理とDTMの知識midiとかが不足していて論文や実装がよく理解出来ない…だれかおすすめの書籍がwebサイトあれば教えてー |
NSynth Datasetのフォーマットを調査したノートをコミットしました。 結果としては、1つ1つのデータが4秒の中でMIDIの1音階(pitch)に制限して作ることがわかり、市販の音源を1音階のみ取り出して構成するのは容易ではないことが想定されます。オリジナルまたは別のデータセットを用意する場合は大きな課題になりそうです。 |
とGANSynthのペーパーに書いてあり、別のElectronicまたはSyntheticで再現させるのは出来るはず。 |
何ら貢献できずすみません。深夜や早朝に、この中に登場した論文を読んで追いかけていたのですが、@yasudakn さんのご解説で少しイメージがつきました。ご指摘の新たなデータセット作成について、骨が折れる作業になりそうですね。 |
ちょっとでも良いんで調べてわかった事は共有してもらえると進んでる感でて助かります。 |
信号処理とDTMは、次の資料が必要な情報がまとまっていて参考になりました。 上の演習資料のスペクトル分析は簡素過ぎてよく分からないんで、別で補う必要あると思います。ここら辺とかで |
midiは、最低限の音階メタデータのようなもので、マークアップに近いものですよね。wavやaviなどの信号処理とは根本的に原理が異なりますし、最低限FFTなどの習熟が必要などより高度な印象をうけます。 |
ちなみに |
@yurfuwa さんの2つ上のコメントと同語反復で、本件関連性が薄いかもしれませんが、MIDIで思い出しましたので記載しておきます。20年ほど前に高校でバンドを組んでいたときに、打ち込み用のデータファイルを作成していました。メーカーの独自規格もあったりするのですが、当時のベーシックな規格だと、16のチャンネル(楽器)を割り当てることができて、指定できる楽器は128種類で、音量は128段階、そして4分音符=480の長さに分解して、数字を打ち込んでいった記憶があります。 |
FreeのMidi音源いくつか見つけました。Magentaで学習させてみます。 Dataset Jazz |
|
instrumentsを換えて学習するコード例はこちらです。 |
magentaに、ビートルズのアルバム1つ分の曲を学習させて、生成してみました。 うーん、言われてみるとビートルズっぽいかなあ・・もう少し学習データ増やさないとダメかもです。 |
やってみたいこと:口笛をiphoneで録音して、それをアプリに投げたら、曲生成してくれる |
Wavからmidiに変換するのは難しいという話。ツールもあるみたいですが、Windows。。 |
http://www.interaction-ipsj.org/proceedings/2016/data/pdf/16INT012.pdf 調波成分と打音成分の分解はlibrosa.hpss使うと行けるかもしれません このあと、メロディの音源(ボーカルとか)をmidiにすると、綺麗に学習出来るかも とりあえず、前処理めんどい。。 |
今、学習するなら電気グルーヴの曲が良さそう😆 |
#1 (comment) 2019-03-13_125709_02_gansynth.zip 各パート(ドラムとかベースとか)を曲生成してもらって、それをスタイル変換かけて |
ピエール滝・・・ |
gansynthの学習でelectroのみは楽器に偏りが多く(分散が小さく)GANの学習がうまく進んでいないのかもしれません。 |
飲み込みに少し時間がかかっていて遅れをとってるのですが、モデルの学習ってどんな感じでされてますか、、 |
midi作成モデルの方ではスピッツなどの曲で学習させてるはずで、 |
ありがとうございます。 |
NSynthのデータセットに、何らかの範囲を絞った(サイケデリック、ブルース、みたいな)ジャンルの楽曲のデータを新しい楽器としてつけ加えてまとめてgansynthを学習させてみたら、そういう曲調の音を合成できるのかなぁなんて思ったりもしたんですが、nsynthと同じ形式に変換するのめんどくさそうですね。。 |
それぞれのモデルで何ができるか理解するのに時間がかかっていたのですが、色々触ってみて、現状の私なりの見解や感想をまとめてみます。 gansynth
MusicVAE
|
すいません、ここ正直あやしいです。シーケンス単位が1小節16分音符かも? |
colabの使い方がやっと分かってきてようやくgansynth_train.pyを動かそうとしてみたところだったんですが、下のようなjsonのdecodeのエラーが出ました。datasetとmagentaのコードをdriveにそのままコピーして動かそうとしてみたのですが、何か手順を飛ばしてしまったりしていそうですかね、、(同じようなエラーが出た方はいらっしゃいませんか) |
@ta9ryuWalrus --hparamsのJSON文字列のパースエラーのような気がします。以下は例です。
|
Nsynth super |
gansynthの学習させるコード置いておきました。 |
以下のウェブサイトで比較的高品質のMIDIをダウンロードできました。 取り急ぎ、以下の作業を実施しました。 @hadusam MusicVAEは、シーケンスは、2小節または、4小節、16小節単位みたいです。Configで単位がいくつか定義されています。(https://github.com/tensorflow/magenta/blob/master/magenta/models/music_vae/configs.py) @yasudakn gansynthで学習できる形式は、nsynthと同じ形式のみですよね。MelodyRNNや、MusicVaeと同じ形式、または、これらをnsynth形式に変換して学習できるなら良いのですが・・ |
MusicVAEですが、 下が実際のnootebookのコードなんですが、magentaにmidi_to_sequence_protoちゅー便利関数がいるようです。
また、16BARもためしてみましたが2BARより精度かなり落ちますね。皆さんお察しのようにが苦渋済みモデルだとあまりかっちょよい補完にはならなかったです。曲と曲の相性はあまり加味してくれないので、そこは人間がDJ的に選ぶ必要がありますね。あくまで間を補完してくれるだけなので。 どちらかというと、クロスフェードの代替として、サビよりも最後のメロディと頭のメロディを学習して、フェードを補完生成させるのが現実的なユースケースと思いました。 |
あと、midiをいれてMusicVAEがうまく生成してくれない場合は、midiトラックが一つだけか確認したほうが良いですね。自分はコードでの前処理ではないですが SMF track separatorを使って、midiに含まれているトラックをばらして主旋律だけぶちこみました。 |
MusicVAEいくつか生成してためしたりパラメータいじったり 左端Aのmidi、右端Bのmidiで、中間は生成時指定のstep、temperatureはおそらく0.5なんですが、潜在でよしなに生成というより中間表現を徐々にフェードして加えていくような形なので、メロとサビのギャップとかはstepさげたり、入力するmidiのメロディのフレーズの対応関係まで学習されるわけではないので入力側のデータと前処理に依存しまくるんじゃないかと予想 |
@yurfuwa ありがとうございます!以下記事を参考に米津玄師Midiのトラック数みてみたら2トラックでした。これがMusicVAEの入力がエラーになった理由みたいです。入力を1トラックにしたら、自分で米津玄師データセットで学習したVEAモデルで、2楽曲のInterporateを生成できました。(学習はローカルのGPUでやっています。)サビのみ抽出しなくても、サビに分割してくれました。 |
曲のスタイル変換という観点からは、@ta9ryuWalrusさんが言っている方法が一番筋がよさそうです。
|
@yurfuwa @yushinna 長期構造は苦手のようで、 DL輪読会 はポスターまたは口頭発表でのスライドの参考までに melody mixerみてると、mnistのVAEで簡易な潜在空間上で数字が変化していくの思い出します。 https://magenta.tensorflow.org/music-transformer |
The text was updated successfully, but these errors were encountered: