はじめに
現在のChatGPTなどでは音声を直接利用できないので、
音声をマルチモーダル学習し、音声に対応したLLMを試してみたいと思います。
モチベーション
ある音源を聴かせて、Serumでの音の再現方法がわかったらいいなあと思ったからです。
音楽を作る際に音を再現するのが、知識がないと難しいからです。
手始めに音楽ジャンルを答えさせる
(コードは一部抜粋してるので、参照記事の方のコードを使ってください)
media_path = "/content/darkness-with-love..mp3"
# オーディオファイルのダウンロードと読み込み
audio, samplerate = sf.read(media_path)
inputs = processor(text=prompt, audios=[(audio, samplerate)], return_tensors='pt').to(device)
# 回答を生成
generate_ids = model.generate(
**inputs,
max_new_tokens=1000,
generation_config=generation_config,
)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
print(f'>>> 回答\n{response}')
使用した音源(僕がSunoAIを使って作ってもらった曲です)、ソウルミュージックです。
以下、出力です。
--- 音声処理 ---
>>> プロンプト
<|user|><|audio_1|>この音声の音楽ジャンルを教えてください<|end|><|assistant|>
>>> 回答
音楽ジャンルはポップです。
まあ微妙な回答
プロンプトを変えてみる
--- 音声処理 ---
>>> プロンプト
<|user|><|audio_1|>この音楽のジャンルを詳細に教えてください<|end|><|assistant|>
>>> 回答
この音楽はポップとロックの要素を含み、ポップなメロディーとロックのエネルギッシュなサウンドを融合させたものです。
んー、ソウル系とかジャズとか答えてほしい
次は和音分析をさせてみます。
小室進行(Am F G C)を判定できるか試してみます。
Logic Proのピアノで作った和音 を読み込ませています。
--- 音声処理 ---
>>> プロンプト
<|user|><|audio_1|>この音源のコード進行を詳細に答えてください<|end|><|assistant|>
>>> 回答
この音源のコード進行は、CメジャースケールのCメジャーです。
ヒントを与えてみる
--- 音声処理 ---
>>> プロンプト
<|user|><|audio_1|>この音源のコード進行を詳細に答えてください。ヒント;4つの和音です。<|end|><|assistant|>
>>> 回答
この音源のコード進行は、Cメジャー、Fメジャー、Gメジャー、Cメジャーです。
全然ダメだった。。。。
文字起こしとかに使うのが、一般的なようでした。。。
音楽の分析にはまだまだ程遠く、シンセサイザーの音を作らせるにはそういうように学習させないと無理ぽい
音楽専用LLM誰か作って。
参照
コードは以下を使いました