はじめに
musicgen-songstarter-v0.2 は、テキストから音楽を生成することができる機械学習モデルです。このモデルを使うことで、音楽制作のアイデア出しや、既存の音楽サンプルをリミックスすることができます。
musicgen-songstarter-v0.2 は、Facebook の audiocraft ライブラリに含まれている MusicGen モデルの一つで、musicgen-stereo-melody-large
をベースにしています。このモデルは、音楽プロデューサーのために役立つ楽曲のアイデアを生成することを目的としており、32kHz のステレオ音声を出力します。
musicgen-songstarter-v0.2 は、以前のバージョンである musicgen-songstarter-v0.1 と比較して以下の点が改善されています。
- Splice で購入した、3倍の数の手動でキュレーションされたユニークなサンプルを使ってトレーニングされた
- トランスフォーマー言語モデルのサイズが medium から large に2倍に拡大された
このモデルは条件付き生成が可能で、テキストの説明からその内容に沿った音楽を生成したり、既存の音楽サンプルを入力として与えてそれに基づいた新しい音楽を生成したりすることができます。
準備
まず最初に、必要なライブラリをインストールします。
!pip install git+https://github.com/facebookresearch/audiocraft
!pip install torchvision==0.16.0
!pip install hf-transfer
次に、モデルをロードします。
from audiocraft.models import MusicGen
model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
テキストから音楽を生成する
musicgen-songstarter-v0.2 の主な機能は、テキストの説明から音楽を生成することです。以下のコードでは、10秒の音楽を3つ生成しています。
model.set_generation_params(duration=10) # 10秒の音楽を生成
descriptions = ['acoustic, guitar, melody, trap, d minor, 90 bpm'] * 3
wav = model.generate(descriptions) # 3つのサンプルを生成
# 生成した音楽を保存
for idx, one_wav in enumerate(wav):
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
- まず
set_generation_params
で生成する音楽の長さを指定 descriptions
に生成したい音楽の特徴をテキストで記述generate
メソッドで実際に音楽を生成audio_write
で生成した音楽をファイルに保存
既存の音楽サンプルをリミックスする
musicgen-songstarter-v0.2 はテキストから音楽を生成するだけでなく、既存の音楽サンプルを入力として新しい音楽を生成することもできます。
以下のコードでは、バッハのオルガンの旋律を使ってヒップホップ風のギターサンプルを生成しています。
melody_path = hf_hub_download("nateraw/musicgen-songstarter-v0.2", 'assets/bach.mp3')
melody, sr = torchaudio.load(melody_path)
descriptions = ['acoustic, guitar, melody, trap, d minor, 90 bpm'] * 3
wav = model.generate_with_chroma(descriptions, melody[None].expand(3, -1, -1), sr)
for idx, one_wav in enumerate(wav):
audio_write(f'{idx}_bach', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
hf_hub_download
でバッハの旋律のサンプルをダウンロードgenerate_with_chroma
メソッドに旋律とテキストの説明を渡して音楽を生成- 生成した音楽をファイルに保存
まとめ
musicgen-songstarter-v0.2を使うと、テキストの説明から音楽を生成したり、既存の音楽サンプルをリミックスしたりすることができます。
- テキストから音楽を生成するには
generate
メソッドを使う - 既存のサンプルをリミックスするには
generate_with_chroma
メソッドを使う - 生成した音楽は
audio_write
でファイルに保存できる
ぜひmusicgen-songstarter-v0.2を使って、音楽制作の新しいアイデアを見つけてみてください。
コメント