[生成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())
  1. ライブラリのインポート
    必要ライブラリをインポートします

  2. Hugging Faceからモデルをロード
    今回はこちら(https://huggingface.co/facebook/musicgen-small)のモデルを使用して生成を行います

  3. テキストから音楽を生成
    プロンプトを指定して、テキストから音楽データを生成します

  4. 生成した音楽を処理し、保存
    モデルから生成されたデータを.wavファイルにして保存します

結果

ほんの10数行で音楽生成ができました。
驚きですね。

まとめ

次はもっと長い曲を生成する方法や、生成した音楽を変換するような手法を探してみようとおもいます。

この記事が気に入ったらサポートをしてみませんか?