[生成AI][Python]Text2Musicを実装してみた
生成AIを使って、テキストから音楽を生成するコードを組んでみた
近年、AI技術の進歩により、機械で様々なものが簡単に作れるようになっています。
特にブームなのは画像生成(Stable Diffusion)、テキスト生成(Chat GPT)ですが、今回はテキストから音楽を生成するプログラムを作成しました。
使用ライブラリ
transformers: Hugging faceから学習済みモデルをダウンロードするライブラリ
scipy: 生成した音楽データを処理し、保存するライブラリ
コード
# ライブラリのインポート
import scipy
from transformers import pipeline, AutoProcessor, MusicgenForConditionalGeneration
# Hugging Faceからモデルをロード
processor = AutoProcessor.from_pretrained("facebook/musicgen-small")
model = MusicgenForConditionalGeneration.from_pretrained("facebook/musicgen-small")
# テキストから音楽を生成
prompt = "80s pop track with bassy drums and synth", "90s rock song with loud guitars and heavy drums"
inputs = processor(
text=[prompt],
padding=True,
return_tensors="pt",
)
audio_values = model.generate(**inputs, max_new_tokens=256)
# 生成した音楽を処理し、保存
sampling_rate = model.config.audio_encoder.sampling_rate
scipy.io.wavfile.write("musicgen_out.wav", rate=sampling_rate, data=audio_values[0, 0].numpy())
ライブラリのインポート
必要ライブラリをインポートしますHugging Faceからモデルをロード
今回はこちら(https://huggingface.co/facebook/musicgen-small)のモデルを使用して生成を行いますテキストから音楽を生成
プロンプトを指定して、テキストから音楽データを生成します生成した音楽を処理し、保存
モデルから生成されたデータを.wavファイルにして保存します
結果
ほんの10数行で音楽生成ができました。
驚きですね。
まとめ
次はもっと長い曲を生成する方法や、生成した音楽を変換するような手法を探してみようとおもいます。