HeartMuLa 3B vs ACE-Step 1.5 徹底比較:ローカルAI音楽生成、歌詞はどこまで再現できるか
自宅サーバー(RTX 4070 Ti 12GB)でHeartMuLa 3BとACE-Step 1.5を実機比較。歌詞再現度をWhisperXで定量評価し、12GB VRAM環境で踏んだ導入の罠も記録しました。
こんにちは。梅雨が明けると、街のあちこちから夏らしい曲が聞こえてくるようになりますね。今回はその「曲」を、自宅の GPU に作らせた話です。
歌詞をきっちり歌わせたいなら HeartMuLa 3B、雰囲気重視のインストなら ACE-Step 1.5。自宅の RTX 4070 Ti(VRAMVRAMグラフィックボードに載っている、GPU 専用の高速なメモリ。詳しく → 12GB、VRAM は GPU 専用のメモリ)で両方を動かして比べた、私の結論です。同じ歌詞・同じタグを両方に渡して曲を作り、WhisperX(音声を文字に起こすツール)で「意図した歌詞をどれだけ歌えているか」を数字にしました。歌詞のある6ジャンルの平均では HeartMuLa がやや優勢(0.545 対 0.464)でした。
ただ、どちらも素直には動いてくれませんでした。それぞれ別の種類の罠があったので、そこも含めて書いておきます。
目次
- Sunoは知ってるけど、ローカルでどこまでやれるのか気になった
- HeartMuLa 3Bを12GB VRAMで動かすまでの罠
- ACE-Step 1.5、UIの標準操作だとバッチ生成が頻繁に落ちる
- 8ジャンルで聴き比べる
- WhisperXで歌詞の一致率を数値化してみた
- 注意点
- まとめ:どっちを使うべきか
- この記事を書いた人
Sunoは知ってるけど、ローカルでどこまでやれるのか気になった
AI で音楽を作るといえば、まず名前が挙がるのは Suno です。ただ、クラウドのサービス頼みだと「アカウントがある間しか使えない」「無料枠だと作れる曲数に限りがある」という不安がどうしてもついて回ります。うちには RTX 4070 Ti(VRAM 12GB)を積んだ AI サーバー(AI の計算を任せている自宅の PC)があり、ComfyUI や Qwen3-TTS など、普段からローカルで AI を回しています。それなら音楽もローカルでどこまでやれるのか、実機で確かめることにしました。
候補は2つです。
- ACE-Step 1.5 — うちで既に動かした実績がある、定番のローカル音楽生成モデル
- HeartMuLa 3B — 2026年1月に登場した新顔。Apache 2.0 ライセンスで、歌詞の制御力に定評があるという触れ込み
聴き比べの感想だけで終わらせず、WhisperX の文字起こしで歌詞の正確さを数字にしました。あわせて、「動かすまでに何が起きたか」も残しておきます。12GB の GPU で同じことを試す人が最初に引っかかるのは、たぶんここです。
HeartMuLa 3Bを12GB VRAMで動かすまでの罠
HeartMuLa はコマンドで動かす専用のツールで、ボタンを押して使う画面(Gradio UI のようなもの)は付いていません。python examples/run_music_generation.py を都度実行する軽い作りです。導入は Python 3.10 の仮想環境を用意して pip install -e . するだけと簡単でしたが、実際に曲を作ろうとすると、立て続けに3つの壁にぶつかりました。
1つ目は VRAM 不足です。既定の cfg_scale(Classifier-Free Guidance の強さ。指示にどれだけ忠実に寄せるかの度合い)は1.5ですが、1.0以外の値だと内部で一度に処理する量(バッチサイズ)が2倍になる作りでした。3B モデルと音声コーデックを読み込むだけで12GB の枠をほぼ使い切ってしまうため、KV キャッシュ(生成中の途中結果を置いておく作業領域)を確保する段階で CUDA out of memory が出ました。--cfg_scale 1.0 に下げてバッチを1本にすることで解決しましたが、これは指示への寄せ方の強さを犠牲にする妥協でもあります。
2つ目は、モデルの読み込み時に見つけたことです。--max_audio_length_ms(作る曲の長さの指定)を短くしても、VRAM の使用量は変わりませんでした。中身を追うと、KV キャッシュの大きさはコード側で max_seq_len=8192 に固定されていて、指定した曲の長さとは関係がなかったんですよね。
3つ目は音声を保存するときのエラーです。新しい torchaudio は保存の仕組みとして torchcodec を要求しますが、これが実機の CUDA ビルドとバージョンが噛み合わず、libnvrtc.so.13が見つからない というエラーで読み込みに失敗しました。torchaudio の save() は諦め、soundfile ライブラリ経由で wav を保存するようにコードを一部書き換えて回避しています。
この3つを越えてしまえば、あとは安定して動きます。1曲(90秒)を作るのにかかった時間は、モデルの読み込み込みで約1分前後でした。
ACE-Step 1.5、UIの標準操作だとバッチ生成が頻繁に落ちる
ACE-Step は自宅で動かした実績があったので、導入自体は問題ありませんでした。引っかかったのは使い方のほうです。Gradio UI の「Custom」モードで普通に生成すると、歌詞付きの曲でほぼ毎回こんなエラーが出ました。
RuntimeError: stack expects each tensor to be equal size, but got [18570, 64] at entry 0 and [20160, 64] at entry 1
UI の既定は「1回で2サンプルを同時に作る」設定になっています。ところが歌詞ありの曲だと、言語モデルが「ここで終わり」の合図を出すタイミングが2サンプルで微妙にずれます。長さが揃わない2本をそのまま1つにまとめようとして、内部で落ちる。設計上の穴です。UI にはこの同時生成数を1に減らす操作が見当たらなかったため、Gradio の内部 API(画面の裏で動いている呼び出し口)を直接叩いてバッチサイズを1に固定し、安定させました。
インストの曲では起きにくく、歌詞付きの曲で高い確率で再現しました。ACE-Step を標準の UI で使っていて謎の RuntimeError に出会ったら、まずバッチサイズを疑ってみてください。
8ジャンルで聴き比べる
やり方は単純で、同じ歌詞・同じスタイルタグを両方のモデルに渡して作らせました。ジャンルは J-POP、Rock、Lo-Fi Hip-hop、Ambient、Rap、アニソン、ユーロビート、沖縄イメージの8つです。プレビュー用に、それぞれ冒頭25秒を切り出しています。
J-POP(日本語歌詞・女性ボーカル)
- HeartMuLa:
- ACE-Step:
日本語の歌詞をどれだけ思いどおりに歌わせられるかは、今回いちばん差が出たところでした。
Rock(英語歌詞・男性ボーカル)
- HeartMuLa:
- ACE-Step:
Lo-Fi Hip-hop(インスト)
- HeartMuLa:
- ACE-Step:
Ambient / Healing(インスト)
- HeartMuLa:
- ACE-Step:
Rap(英語・男性ラップ)
- HeartMuLa:
- ACE-Step:
アニソン(日本語歌詞・女性ボーカル)
- HeartMuLa:
- ACE-Step:
ユーロビート(英語歌詞・男性ボーカル)
- HeartMuLa:
- ACE-Step:
実はここが、今回いちばんの「事故」が起きたジャンルです。後で数字でも触れますが、ACE-Step 側は歌詞がほぼ消えていました。
沖縄イメージ(三線・琉球音階)
- HeartMuLa:
- ACE-Step:
三線という、西洋の学習データには少なそうな楽器と琉球音階をどう再現するのか。ここは気になっていたジャンルです。
WhisperXで歌詞の一致率を数値化してみた
聴いた印象だけだと好みが入りすぎるので、作った音声を WhisperX(large-v3)で文字に起こし、意図した歌詞とどれだけ一致するかを機械的に計算しました。インストの2曲(Lo-Fi Hip-hop、Ambient)は歌詞が無いので外し、歌詞のある6ジャンルで比べています。
| 曲 | HeartMuLa | ACE-Step |
|---|---|---|
| J-POP | 0.488 | 0.289 |
| Rock | 0.776 | 0.839 |
| Rap | 0.563 | 0.653 |
| アニソン | 0.435 | 0.441 |
| ユーロビート | 0.425 | 0.000 |
| 沖縄イメージ | 0.583 | 0.563 |
| 平均 | 0.545 | 0.464 |
平均だけ見ると HeartMuLa の勝ちに見えますが、内訳はそう単純ではありません。英語の Rock と Rap では、むしろ ACE-Step のほうが高い点でした。同じフレーズを繰り返すコーラスの多い曲なら、ACE-Step も安定して歌詞を再現できる、という推測が成り立ちます。
大きく差が開いたのは、日本語の J-POP とユーロビートです。特にユーロビートの ACE-Step 側は、WhisperX の「どこに歌声があるか」を探す仕組みが「歌声が見つからない」と判断するほど歌詞が消えていて、実質インストになっていました。HeartMuLa では、こうした「歌詞ごと消える」事故には出会っていません。
まとめると、HeartMuLa は歌詞から外れる事故が少なく安定、ACE-Step は当たれば高精度だが、ときどき歌詞ごと飛ぶ。対照的な結果になりました。
注意点
この点数には、WhisperX 自体の文字起こしの精度も混ざっています。モデルの歌のうまさだけを純粋に測れているわけではないので、あくまで「大まかな傾向をつかむための目安」として見てください。また、各ジャンル1回ずつ作っただけの比較です。シード(生成の出発点になる乱数)を変えて何回か試せば、点数は多少上下する可能性があります。
まとめ:どっちを使うべきか
RTX 4070 Ti(12GB)クラスの環境で両方を動かした実感として、使い分けはこうなります。
- 歌詞を正確に歌わせたい場面(Vlog の主題歌、歌詞のメッセージ性が強い用途)なら HeartMuLa 3B。ただし既定の設定のままでは動かないので、
cfg_scale=1.0にする、soundfileで保存する、といった一手間が前提です。 - ジャンルの雰囲気やグルーヴ重視で、インスト中心なら ACE-Step 1.5。既に自宅で運用実績があって枯れている分、UI で手軽に使える点は今も有利です。ただしバッチ生成時の stack エラーには気をつけてください。
どちらもクラウドの課金なしで、ローカルの GPU 1枚で動く選択肢として十分実用的でした。Suno の代わりを探しているなら、両方を試して用途に合うほうを選ぶのが良さそうです。
出典: HeartMuLa 公式GitHub / ACE-Step 1.5(自宅サーバー既存運用) 検証日・環境: 2026年7月、自宅AIサーバー(RTX 4070 Ti・VRAM 12GB、Ubuntu 24.04)
この記事を書いた人
HW系エンジニアとして20年以上、10,000件を超える顧客訪問と2,000件を超える単独ソリューション実績。AIツールを使った個人開発やIoT農園など、Raspberry Piを使ったオートメーション化なども実践中です!エンジニア専門結婚相談所も運営中、ClaudeCodeで解決できない心の課題も解決いたします!
関連記事
RTX 4070 Tiで72秒の紹介動画を自作:クラウド代は声の約3円だけ
RTX 4070 Ti(VRAM 12GB)の自宅 PC で、複製した自分の声と MiniMax H3・WhisperX・ACE-Step・Remotion を順に回し、72秒の紹介動画を作った実践記録。工程ごとの所要時間と費用(クラウド代は声の約3円)、字幕を誤字ゼロにする方法、書き出しが止まる罠、映像が暗いなど一発出しで残った課題まで。
Gemma 4 MTP drafter を今すぐ入れるべきか? RTX 4070 Ti 12GB でつまずいた3つのポイントと結論
RTX 4070 Ti 12GBでGemma 4 MTP drafterを実測。ドラフター0.14GB、ただし最速はvLLMの162.7 tok/s。導入判断を正直にまとめます。
RTX 4070 Ti 自宅サーバーに Qwen3-TTS を入れた実録 — API変更で3回詰まった話
自宅の RTX 4070 Ti に Qwen3-TTS をデプロイした記録。クラス名・メソッド名・戻り値の形式が全部変わっていて3回詰まった。同じ罠に落ちる人が減るよう全部書く。
Qwen3.5:4b 24問テスト——thinkingをOFFにしたらスコアが21%上がった話
Qwen3.5:4bをOllama上でベンチマーク。thinkingモードが原因で9問が空回答になった。think:falseに切り替えたらスコアが194/240(80.8%)に回復。RTX 4070 Tiで101.5 tok/s出る4Bモデルの実力を24問で徹底検証。
関連AIツール
META-MARK × AI
ローカルAIを動かすGPU、ちゃんと選べていますか?
VRAM・性能・コスパをMetaScoreで数値化。AIアプリ別の推奨ハードウェア要件も確認できます。
PR広告:GPU・キャリアまわりのサービス