音がデータの一形態として、そしてコンテンツを消費する手段として、どれほどアクセスしやすく民主的なのかを初めて実感したのは、マレーシアにいたときだった。運転手の携帯から聞こえてきた旋律が、母が見ていた動画から流れていた旋律と同じだった。ただ、ナレーションの言語と中身が違っていた。音、あるいは口承的なコミュニケーションには、テキストや画像だけでは届きにくい、はるかに広い社会階層に届く何かがある。テキストや画像は教育や訓練を必要としがちだ。私は高等教育を受けているが、視覚芸術を語るときに人々が使うさまざまな -ism を自在に扱えるわけではない。その点、音はかなり民主的で、かなりアクセスしやすい。
そして音は、非常に多くの内容と重なりを運んでいる。データ表現として見ても、その複雑さはテキストや画像の何倍にもなり、そこがとても面白い。私はただ、こう思っている。とにかくマルチモーダルで渡してほしい。できるだけ多くの種類のデータと、できるだけ多くのデータで遊びたい。だからチームのアーティストに、RAVE モデルの訓練をドラム 1 パックに絞ってほしいと言われたとき、技術的な観点からは、アーティストに一色だけで絵を描けと言っているように感じられて、かなり不可解だった。ただ、感情の側から見れば、それがどこから来るのかは理解できる。サンプルサイズ 1 は特別で固有だし、その 1 つのサンプルが、芸術や文化、さらには社会的世界を作るうえで、とても具体的で自然な単位になる。一方で私の側から見ると、ドラム A のデータストリームもドラム B のデータストリームも同じで、A == B である。これは別の場所で見た、あの似た懸念でもある:
OpenAI の Jukebox プロジェクトが示唆していることには引っかかる。ジャンルやアーティストの情報でデータを条件づけながら、非常に大規模なデータセット(120万曲)で一種の「普遍的な」音楽をモデル化する、ということだ。どうして一つひとつの音楽作品が、(あらゆる文脈で、あらゆる聴き手にとって)他のすべての作品と意味の上で等価だと見なせるのだろうか。
幸い、私は GPU にアクセスできたので、選ぶ必要はなかった。Google Vertex AI にカスタム訓練ジョブを投げて、たくさんの訓練を並列で走らせればいいと思っていた(最大限がんばったが、ずっと失敗した ZZZ)……。結局、その月の CoLab の無料 GPU 時間をすべて使い切り、9000 エポック訓練したモデルを一つ、ローカルの 3070 で 20000 エポック回したモデルをもう一つ得た。そして white-throated kingfisher がマレーのドラムみたいに聞こえたとき、私はこうなった。OMO、これは深層学習を使えば、数週間や数か月ではなく、数時間でどんな楽器でもデジタル化できるということでは????
GPU 時間を使い切った後の CoLab notebook での CPU 訓練速度と、軽く 5 倍は速い自分のローカル訓練速度を比べると、GPU-rich か GPU-poor かは本当に現実の差なのだと感じる。
RAVE Timbre Transfer to Neutone
パッケージに最初から入っている雑な実装以外には前処理をまったくしていないし、推論用の入力データには背景ノイズもあるので、まだ変なデジタル信号は出ている。それでも、無料の Nvidia T4 上で 1000 エポック、わずか 229 秒の Rebana と Rentak の音から訓練したモデルの結果がこれだ。以前の ドラムデータ 2 時間、13 時間かけて 39 エポック回した訓練 と比べると、本当に頭がおかしい。229 秒、検証データ 1 点、誤差最小化だけで、ドラムの細かなニュアンスと表現をどうしてここまで学べるのか!?A.I. の進歩の軌跡は、人間の尺度では考えられない。
この学習の意義は下で ChatGPT に説明してもらう。
音色とは?
音色は、音の「質」や「音色感」と呼ばれることが多く、異なる楽器や声が同じ高さ・同じ音量を出していても、それらを区別できるようにするものだ。本質的には、ある音を認識可能にし、他の音と違うものにしている固有の性格や質感である。
音色転送とは?
ニューラル音声合成の文脈では、音色転送は、音高やリズムなどの要素を保ちながら、音の音色的な特徴を変える処理を指す。
RAVE モデル訓練をすると何が起きるのか、あるいは機械はどうやってこれほど少ないデータで楽器を再現することを学んだのか?
本質的には、特定の種類のドラムでモデルを訓練することで、そのドラムに合わせた仮想楽器を作っていることになる。モデルは訓練中にそのドラムの特徴と細かなニュアンスを学び、音色転送や音生成に使うときには、学習した知識を適用して入力音をそのドラムのスタイルへ変換する。これにより、仮想楽器を作るプロセスはかなり単純になる。望む音を得るために、音高や音量などのパラメータを手で対応付ける必要がないからだ。代わりに、訓練済みモデルがドラムの学習済み特徴にもとづいて変換を処理してくれる。
音色転送はオーディオ処理で使われる技術で、ある音声信号の特徴を変え、別の音に近づける。私が扱ってきた RAVE モデルのようなニューラル音声合成の文脈では、入力音の音色的特徴を、特定の種類のドラムのような目標音に似るよう変換することを意味する。
私が使ってきた RAVE モデルの場合、訓練中に一連のドラム音の音色的特徴を学ぶ。この学習過程では、与えられた訓練データからドラム音の微細な特徴とニュアンスを捉える。その後、モデルはこの学習済み情報を使って、入力音の音色を訓練対象のドラムに似せて変換する。
比較的少量の訓練データでも、RAVE のようなニューラルネットワークモデルは汎化し、音源の本質的な特徴を捉えることを学べる。入力音の学習済み特徴を表す潜在空間を操作することで、可能な変化すべてのデータを明示的に録音しなくても、音高、音量、その他の音色属性など、出力音のさまざまな側面を制御できる。
つまり、音高、音量、その他のパラメータのあらゆる変化ごとに別々のサンプルを録音しなくても、訓練済みモデルの潜在空間を操作することで似た効果を得られる。大量の手作業の録音や処理なしに幅広い音の変化を探索できるため、プロセスはより効率的で柔軟になる。
すべての音を作るためのチュートリアル
結局のところ、カスタム訓練ジョブを送れなかったのは、GPU リソース全般の不足を示しているのかもしれない。あまりにも多くの人が、あまりにも多くのカスタム訓練ジョブを、常に、しかも多くのリージョンにまたがって投げているため、本当の障害に近い容量問題になっていて、専用サーバーの方がずっと運が良いのでは!?訓練中にも、コードを読まなかったせいで不要な苦痛を何時間も味わった。ドキュメントのどこにも、そういうフラグが必須だとは書かれていない……。なので、興味のある人向けに、ちょっとしたハウツー動画を作る時間を見つけたい。
これは「世界にもっと新しくてデジタルな音を!」のために。
PubPub の erniesg.pubpub.org/pub/r4a1ex9r で初出。