← ラボノート

MiniMax Music 3で作った17曲を採用しない理由

MiniMax Music 3とComfyUIをApple M1 Max上で動かし、17曲のインストBGMをローカル生成し、このバッチには私自身の概算で25時間超を使いました。

私はこのサイトとAI Maker Labチャンネルを所有・運営しているため、これは制作記録であり、独立したレビューではありません。

結論は、3部構成のStructured Captionを使った17曲でも私自身の採用基準を満たさなかったため、2回目は30秒のドラフトで1変数ずつ試してから長尺生成に進む、ということです。

ローカルで作った17曲のインストBGM

このバッチには、17曲のオリジナルインストBGMがあります。Instagramのリールまたはストーリー向けが5曲、YouTube動画向けが12曲です。64 GBのユニファイドメモリを搭載したApple M1 Maxで、MiniMax Music 3をComfyUIから実行しました。この環境では、fp16 DiT、pruned bf16 text encoder、DAV VAEを使いました。全曲に3部構成のStructured Caption、インスト用のVocal Details、時間指定付きのArrangementがあります。

ライブラリには、各曲の指定スタイル、BPM、キー、納品時間、用途を記録しました。これらは入力時の指定であり、生成音を分析して確認した値ではありません。MiniMaxのモデルカードは、テンポ、キー、楽器、構成を厳密な保証ではなく生成制御と説明しています。したがって、最後は耳で確認します。WAVマスターは44.1 kHz、16-bitのまま保持し、下のプレーヤーには同じ時間のMP3公開用コピーを使います。

私自身の判断では、この17曲はどれもチャンネルで採用できる水準ではありませんでした。この判断の対象は、このバッチと私の好みだけです。他モデルとの比較でも、MiniMax Music 3全体の品質評価でもありません。ライブラリの運用ルールでも、BGM単体ではなく実際のナレーションと重ねて試聴します。

17曲を実際に聴く

納品した17曲をMP3コピーで掲載します。各ファイルは記録済みの納品WAVから変換し、測定時間は台帳と完全に一致しました。下記のスタイル、BPM、キー、時間、用途は一次資料の記録です。BPMとキーは指定値なので、耳での確認が必要です。

MiniMax-Music3のライセンスは、公開コンテンツが機械生成であることを明確かつ目立つ形で開示するよう求めています。次の文はリポジトリが選んだ開示表現であり、ライセンス指定の定型文ではありません。Music generated with MiniMax-Music3

Instagram向けの5曲

ig-rock-launch — ポップロック/オルタナティブロック, 150 BPM, B♭ major · 38 s · 機能公開リール向け
ig-rock-pulse — エレクトロニック寄りのポップロック, 111 BPM, C minor · 38 s · 問題から修正までのモンタージュ向け
ig-jazzhop-groove — Rhodesジャズホップ, 86 BPM, A minor · 38 s · 制作工程リールとコードのタイムラプス向け
ig-boombap-head-nod — ジャジーなブーンバップ, 90 BPM, G minor · 38 s · 自信を持って見せるデモ解説向け
ig-jazz-swing-cafe — ピアノトリオの軽いスウィング, 118 BPM, B♭ major · 36 s · オフィス舞台裏と締めのリール向け

YouTube向けの12曲

yt-rock-opener — ポストグランジの編集用ギターBGM, 88 BPM, F♯ major · 1:04 · 動画冒頭とチャプター移行向け
yt-rock-momentum — インディーロックBGM, 91 BPM, F major · 2:12 · 制作シーケンス向け
yt-rock-anthem-outro — 明るくアンセミックなポップロックBGM, 143 BPM, A major · 2:17 · 結果パートと終盤CTA向け
yt-lofi-study — 学習ビートのチルホップ, 88 BPM, G minor · 1:46 · 長いトークとコーディングの主BGM向け
yt-jazzhop-sax-rain — サックスループのジャズホップ, 86 BPM, E♭ major · 2:30 · 内省的なエッセイパート向け
yt-jazzhop-rhodes — Rhodesジャズホップ, 86 BPM, A minor · 1:28 · 長尺の解説向け
yt-boombap-city-night — ジャジーなブーンバップ, 90 BPM, G minor · 1:43 · 編集とモンタージュ向け
yt-jazz-bossa — ボサノバ/スムーズジャズ, 133 BPM, D minor · 1:56 · カフェ場面と落ち着いた説明向け
yt-jazz-cool-trio — クールジャズのコンボBGM, 125 BPM, B♭ minor · 1:56 · 考えながら進める解説向け
yt-jazz-lounge-warm — ラウンジピアノBGM, 143 BPM, C major · 1:46 · 終盤と振り返りパート向け
yt-8bit-arcade-level — チップチューン/8bitアーケードのステージ曲, 118 BPM, C major · 1:15 · ゲームプレイのモンタージュと制作シーケンス向け
yt-8bit-arcade-night — チップチューン/8bitアーケードの夜のグルーヴ, 96 BPM, A minor · 55 s · 集中コーディングと深掘りパート向け

自己申告の25時間超をどこに使ったか

私自身の概算では、このバッチに25時間超を使いました。これは自己申告であり、マシンログから復元した合計時間ではありません。ここで測定済みなのは、このM1 Maxで生成した30秒ドラフト2本だけです。所要時間は40分46秒と38分44秒でした。このマシンでは、音声1秒あたりの実時間が約80秒でした。

測定コストはテスト順の重要性を示しますが、生産性の向上は証明しません。ローカル手順は30秒のドラフトから始めます。seedを固定し、テンポ、楽器構成、制作プロファイルなど、キャプションの1軸だけを変えます。次にキャプションを固定し、2〜3個のseedを変えて、演奏を耳で比較します。1つのseedを選んでから、目的時間に約10秒を足した上限で長尺生成します。生成が上限より早く終わる場合があるためです。

30秒ドラフトからキャプション比較、テイク比較、長尺生成、品質確認、納品へ進む6段階の反復ループ
1台のM1 Maxで測った2本の結果から、長尺生成を判断後に置く理由が分かります。

このループには、実際の却下経路があります。品質確認ではトゥルーピークとループの継ぎ目を調べ、不採用ならドラフトへ戻します。好みの判定とファイル完成は別のゲートです。再現可能な生成でも、チャンネルで使うという私の判断には届かない場合があります。

調査で確認した、使うべきワークフロー

調査で確認した流れは一続きです。キャプションを整え、1変数ずつ試し、目安を耳で確認し、継ぎ目を設計し、納品レベルを測ります。正しいキャプション構造だけでは、私が結果を採用する保証になりません。公式発表はStructured Captionを、感情、楽器、歌声、構成の時間変化を記述する仕組みと説明しています。このバッチから言えるのは、構造の準拠と個人の採用判断が別のゲートだということだけです。

3部構成のStructured Captionを書く

MiniMaxのモデルカードは、精密な制御に3部構成を推奨しています。3部はGlobal Metadata、Vocal Details、Arrangementです。Global Metadataにはジャンル、テンポ、キー、感情の流れ、利用場面、制作プロファイルを書きます。Vocal Detailsには主役の構成を書きます。インストBGMならInstrumental — no vocalsと明記し、主役の楽器を示します。Arrangementには、名前を付けた各セクションで楽器が入り、変化し、強まり、抜ける過程を書きます。

ローカル運用では、英語で約250〜450語を目安にします。約120語未満では自由連想が増え、約600語を超えると末尾を無視し始める傾向がありました。これはローカル観察です。一方、5,000 tokenの上限はモデルカードにある公式情報です。MiniMaxの公式プロンプトガイドは、2〜3個の主要楽器を正確に指定し、残りをモデルに任せるよう勧めています。ローカル手順では、単なる楽器リストではなく、各楽器に登場から退場までの役割を持たせます。

Global Metadata、Vocal Details、Arrangementの3ブロックに、含める内容と除外する内容を整理した図
形容詞を増やすより、各指示を担当するブロックへ分けることが重要です。

目安と実行可能な指示を分ける

指定したBPM、キー、楽器、構成は目安です。モデルカードは、これらを厳密な記号的保証ではなく生成制御としています。そのため、耳で一つずつ確認します。ローカル手順では、セクションタグが実行可能な構造指示です。対応タグは[Intro][Verse][Pre-Chorus][Chorus][Post-Chorus][Bridge][Instrumental][Solo][Outro]です。

インストBGMのローカル構成は、[Intro][Instrumental][Outro]です。Arrangementでもそのセクション名を使い、キャプションと構造を結びます。ローカル運用では、不要な[Chorus]が歌声を招きました。これは観察に基づく注意点であり、すべての生成結果を予告するものではありません。

ComfyUIのノードグラフを意図的に設定する

ComfyUIの公式チュートリアルは、max_durationを目標時間とし、約300秒まで対応すると説明しています。ただし、配布中のワークフローテンプレートには矛盾があります。実際のwidget値は60ですが、同じテンプレート内の注記はdefault 120と書いています。どちらかを無条件の公式初期値にはできません。また、end-of-audio tokenが出ると、上限より早く終わる場合があります。

チュートリアルによると、seedを固定すると同じ曲を再現でき、変更すると別テイクになります。ローカルスクリプトはcfg_scale 1.7とtop_k 50を使いました。ただし、公式チュートリアルとテンプレートは両widgetの意味を説明していません。ローカル初期値は記録できますが、公式の意味は追加できません。複数の設定を同時に変えるより、1変数テストの方が比較を解釈しやすくなります。

VAEのtiled decodeはメモリ使用量を減らします。一方、チュートリアルは、処理の遅れと小さな継ぎ目リスクを挙げています。高VRAM GPUでは、品質を優先して無効にするよう案内しています。このM1 Maxでは、tile 1536、overlap 64をローカルの省メモリ初期値にしました。Apple siliconではfp16 DiTとpruned bf16 encoderを使いました。ローカル記録では、CUDA向けのint8_convrotをMPSで使わないよう警告しています。

納品前にナレーション用BGMとループを設計する

ナレーション用BGMは、ミックス前から声の場所を空けます。ローカル指針では200 Hz〜4 kHzを疎にし、メロディックなフックを外し、感情の弧を平らに保ちます。ライザー、インパクト、ゲートスネアのフィルも避けます。ライブラリのルールでは、BGM単体ではなく実際のナレーションと重ねて試聴します。関連する話し言葉の構成は、英語・ポルトガル語・日本語で変わるリール台本の型で扱っています。

ループはcrossfadeより前にArrangementで設計します。キャプションの終点を開始時の状態へ戻します。その後、末尾と先頭をcrossfadeし、継ぎ目を2回続けて聴きます。両端の和声上の位置が違う場合、ローカル手順ではfadeを延ばさず、キャプションを直します。

納品前にトゥルーピークを確認する

17件のraw takeのうち15件が0 dBTPを超え、最大値は+1.130 dBTPでした。例外は、ちょうど0.000 dBTPのyt-rock-openerと、−0.310 dBTPのig-rock-launchです。納品時は16曲を−1.200 dBTPに減衰し、yt-boombap-city-nightだけを−1.400 dBTPにしました。この測定は17ファイルだけの結果です。MiniMax Music 3全体の性質ではありません。

ローカルのリリース用master指針は、integrated loudness約−14 LUFS、true peak −1 dBTP以下です。これは作業環境の指針であり、MiniMaxや配信先の公式要件ではありません。納品前に測定し、意図したlevel controlを適用し、結果を再確認します。

失敗原因についての私の見立てと次に変えること

私の見立ては限定的です。この工程はファイルを確認し、入力を保存しましたが、私の好みを判定するタイミングが遅すぎました。全captionに3部構成、インスト用Vocal Details、時間指定付きArrangementがありました。それでも私自身の判断では、生成曲は採用できる水準ではありませんでした。完成ファイルと、私が採用したBGMは別の結果です。

長く細かく指定したStructured Captionについての私の見立て

captionは長く、指定項目も多いものでした。たとえばig-rock-launchは6つの時間区間を指定し、riser、impact、gated-snare fill、crash-led transition、tom flourishを明示的に禁止しています。私はこの密度を次のテスト箇所と見ていますが、失敗原因として実証されたわけではありません。このバッチは、詳細なcaptionが一般に不採用曲を生むとは証明していません。

次は、captionの良し悪しとtakeの良し悪しを分けます。seedを固定すれば、同じ条件でcaptionの1変更を比べられます。captionを確定した後は、seedだけを変えて演奏を比較します。構造と再現性だけでは決められない採用判断を、最後は耳で行います。

2回目の試行:長尺生成の前に1変数ずつ試す

近いうちにもう一度試します。まず30秒のドラフトを1本作り、seedを固定してcaptionの1軸だけを変えます。そのcaptionを固定したら、2〜3個のseedを試して耳で選びます。その後だけ、選んだseedを目的時間プラス約10秒の長尺生成へ進めます。

2回目は私の意向であり、結果や日程の約束ではありません。目的は各比較を解釈できる形にすることです。次の17曲が私の採用基準を満たすとは仮定しません。

出典

30秒のドラフト1本に5行のキャプションチェックを適用する

  1. Global Metadataにジャンル、テンポ、キー、感情の流れ、利用場面、制作プロファイルを書く。
  2. Vocal Detailsを書くか、Instrumental — no vocalsと主役の楽器を書く。
  3. Arrangementの変化を、生成入力で使うsection tagへ結び付ける。
  4. 2〜3個の楽器を正確に指定し、それぞれに登場から退場までの役割を持たせる。
  5. 選んだseedを長尺生成する前に、指定した目安を耳で確認する。

あわせて読む