MusicGen入門:簡単サンプル・Gradioデモ・実用的設定まとめ

AI音楽

MusicGenは、数秒〜十数秒のフレーズをローカル環境で生成できる無料のAI音楽モデルです。Pythonから扱え、テキストの指示に対する音源をクイックに確認できます。商用利用はできませんが、曲の方向性を探したり、アイデアのヒントを得る用途に向いています。

この記事では、MusicGenを最短で動かし、「どんな音が出るのか」「どこまで使えるのか」を判断するためのポイントを解説します。

audiocraft/docs/MUSICGEN.md at main · facebookresearch/audiocraft · GitHub

MusicGenとは何か

MusicGenは、Metaの AudioCraft プロジェクトに含まれる短尺の楽曲生成モデルです。テキストを入力すると、メロディと伴奏を含む数秒〜十数秒の音を生成します。

AudioCraftは音声生成モデル群で、MusicGen(楽曲)、AudioGen(効果音)、MAGNeT(高速・短尺向け生成)などが含まれます。モデル群全体の説明やインストール手順は AudioCraft の導入記事を参照してください。

すぐ使える最小サンプル

以下は、MusicGen を最短で動かすための最小サンプルです。 ここでは facebook/musicgen-medium という「中サイズ・短尺生成向け」のモデルを使用します。

from audiocraft.models import MusicGen   # MusicGenモデル本体
import torchaudio                       # 音声保存用

# MusicGen(medium)モデルをロード
model = MusicGen.get_pretrained("facebook/musicgen-medium")

# 生成したい音楽のプロンプト
prompt = "A calm lo-fi beat with warm keys and soft drums."

# モデルから音声Tensorを生成(list[Tensor]で返る)
wav = model.generate([prompt])

# モデルのサンプリングレート(32000Hz)を取得
sr = model.sample_rate

# 1chTensorをCPUに移し、モデルのサンプリングレートで保存
torchaudio.save("musicgen.wav", wav[0].cpu(), sr)

print("musicgen.wav を生成しました。")

プロンプト指定は英語で行います。日本語プロンプトでの動作報告もありますが、公式では案内がなく、英語指定が無難です。

プロンプト指定に関する公式ドキュメント

GradioでWebアプリとして動かす

MusicGenはGradioで簡単にブラウザ上のデモを作れます。 プロンプトを試しながら音を確認したい場合に便利です。

import gradio as gr
from audiocraft.models import MusicGen

# MusicGen(medium)モデルをロード
model = MusicGen.get_pretrained("facebook/musicgen-medium")

# 音楽生成関数
def generate_music(prompt):
    wav = model.generate([prompt])
    sr = model.sample_rate
    return (sr, wav[0].cpu())

# Gradioインターフェース
gr.Interface(
    fn=generate_music,
    inputs=gr.Textbox(label="Music prompt"),
    outputs=gr.Audio(label="Generated Music"),
    title="MusicGen Demo"
).launch()

この構成は AudioCraft の標準APIだけを使った最小例で、モデルが読み込める環境であればそのまま動作します。

MusicGenには多機能な公式Gradioデモ(demos/musicgen_app.py)もありますが、利用するライブラリが多く、環境によって依存関係の差で起動できないケースがあります。まずは本記事の”確実に動く最小構成”で仕組みを押さえることをおすすめします。

MusicGenの仕様と、実用でよく使う設定

MusicGenは 32kHzステレオ固定 の音源を生成します。duration は「最大長の目安」で、指定した秒数どおりには揃わない場合があります。また出力によっては、冒頭や末尾をカットする後処理が別途必要となります。

よく使う生成オプション

duration(生成の最大長)
8〜15秒程度が、ノイズや構造崩れといった破綻が最も少ない長さです。30秒付近まで 生成することもできますが、破綻しやすいため素材として後で切り出す用途になります。

wav = model.generate([prompt], duration=12.0)

top_k / top_p(破綻と多様性の調整)
top_k を下げると破綻が出にくく、上げると展開は広がりますが破綻も増えやすくなります。

wav = model.generate([prompt], top_k=250, top_p=0.95)

cfg_coef(プロンプト忠実度)
3 前後が扱いやすく、4 を超えると破綻が増えることがあります。

wav = model.generate([prompt], cfg_coef=3.0)

音量をそろえたい場合の補足

複数の生成音を並べて扱う場合は、ピークNormalizeで揃えられます。

wav = wav / np.max(np.abs(wav)) * 0.99

FAQ

長い曲(1分以上)は作れますか?
MusicGenは短尺向けのモデルで、時間が長くなるほど構造が崩れやすくなります。 1分以上の楽曲制作には向きません。短い断片を試す用途が前提です。

どんな場面で役に立ちますか?
方向性を素早く確認したいときや、仮素材として短いフレーズを用意したい場面です。

高音質(44.1kHz / 48kHz)で出力できますか?
出力は32kHz固定です。編集上の必要に応じて後処理で変換します。

商用利用できますか?
モデル重みはCC-BY-NC 4.0のため、生成された音源を含め商用利用はできません。

まとめ

MusicGenは、ローカルで短い音楽フレーズを素早く試せる無料モデルです。本記事の最小構成だけで「どんな音が出るか」「どこまで使えるか」を短時間で確認できます。モデル特性上、長尺の制作には向かず、短い断片を使った方向性確認や仮素材づくりに位置づけるのが現実的です。

AI音楽を制作フローに組み込みたい場合、まずMusicGenで短尺の手触りをつかみ、必要に応じてMAGNeTやAudioGen、商用サービス(Sunoなど)と組み合わせると、最小の手間で判断と比較ができます。

タイトルとURLをコピーしました