Zenn
🎧

Stable Audio をローカルで動かしてみたら、想像以上に大変だった話

2025/02/20に公開

こんにちは!
KANNA の開発のお手伝いをしております、フリーランスエンジニアの len_prog です。

最近、Stable Audio という機械学習を用いた音楽生成モデルに興味を持ちました。
簡単なプロンプトを入力するだけで音楽を作成できるとのことで、ローカル環境で試してみることにしたのですが、セットアップには想像以上のハードルがありました。

今回は、その環境構築と試行錯誤の記録をまとめてみます。

実行環境とセットアップ

環境

  • MacBook Air M3 (2024)
  • Python 3.9
  • PyTorch (MPS)
  • Gradio
  • torchaudio
  • Hugging Face Hub

Stable Audio のリポジトリは、Stability AI の公式 GitHub からクローンできます。

git clone https://github.com/Stability-AI/stable-audio-tools.git
cd stable-audio-tools
pip install .

また、Hugging Face のトークンを取得し、ログインしておく必要があります。

huggingface-cli login

これで準備完了…かと思いきや、ここからが本番でした。

音楽生成が100% で止まる問題

初めて run_gradio.py を実行したとき、Gradio の GUI は正常に起動しました。

しかし、音楽を生成しようとすると…

100%|███████████████████████████████████████████████████████████| 100/100 [1:39:11<00:00, 59.51s/it]

100% になったのに、いつまで経っても処理が終わらない!?

「ロジックのどこかで詰まっている?」と思い、print() を大量に仕込んで調査しました。
結果、本当に時間がかかっていたのは 100% になるまでの「拡散ステップ」だったことが判明しました。

拡散ステップとは?

Stable Audio は、拡散モデル(Diffusion Model)を用いた音楽生成 AI です。
このモデルは、「最初に完全なホワイトノイズを生成し、それを徐々に消しながら音を作る」という手法を使用します。
この「ノイズを取り除く回数」が拡散ステップ(Diffusion Step)であり、
ステップ数が多いほど、よりクリアでノイズの少ない音楽が生成されます。

ただし、ステップ数が多すぎると処理時間が大幅に増えるため、音質と計算コストのバランスを取ることが重要です。

最初は「処理が止まっているのでは?」と思いましたが、
単純に計算リソースが足りず、ものすごく時間がかかっていただけ でした。
(最終的に、100%になった状態で諦めて寝たところ、6時間後くらいにはあっさり処理が終わっていました…。)

試行錯誤(音が単調すぎる問題)

以下のプロンプトを入力して 5 秒の音楽を生成してみました。

A retro 80s synthwave track with pulsing bass, driving drums, and evolving arpeggios.
Melodic synth lead with a catchy progression, gated reverb, and a rhythmic beat.

しかし、実際に出力された音はプロンプトからかけ離れた、単調すぎる音楽でした。

原因を探るため、各パラメータを調整しました。

改善前後のパラメータ

設定項目 変更前 変更後
CFG Scale(プロンプトの忠実度) 8 8
Steps(拡散ステップ数) 50 75
Sampler Type(生成方法) k-dpm-fast dpmpp-3m-sde
Sigma Min / Max(ノイズの影響度) 0.01 / 100 0.03 / 500

最終的な出力結果

試行錯誤の末、よりリズムのある音楽が生成できるようになりました。

まとめと学び

Stable Audio をローカルで動かしてみた結果、以下のことが分かりました。

  • 音楽生成 AI は非常に計算コストが高い

    • 100 ステップの処理に 1時間以上 かかる
    • Mac M3 の MPS では計算が遅すぎる
  • プロンプトの工夫 + パラメータ調整が必須

    • プロンプトにリズムや構成要素を明示することで単調さを回避できる
    • CFG Scale が高すぎると、単調な音になりやすい
    • サンプラーの違いで音の傾向が変わる

今回の検証でローカルで音楽生成を行うことは非現実的なのがわかったので、Google Colab で GPU を使って音楽生成を進めてみようと思っています。

また、最終的には任意のフレーズを生成してサンプリング素材を生成するサービスを作ってみたいので、そちらも進捗があれば記事にします!

もっとアルダグラムエンジニア組織を知りたい人は、ぜひ下記の情報をチェックしてみてください!

GitHubで編集を提案
アルダグラム Tech Blog

Discussion

ログインするとコメントできます