本記事では、Stable Audio Open を Windows(CUDA/CPU)および macOS(MPS)環境で検証・運用する過程で遭遇した問題と、その対応策・教訓を体系的にまとめます。
🧩 主要な問題と対処法
導入関連
Python3.10環境がおすすめ
Stable-Audio-Open 0.19 では、必要とするライブラリが最新ではうまく動作しません。
PyTorchなどの相性もあり、Python3.10系の環境を構築することをおすすめします。
Flash Attention は無理に入れなくてもOK(CUDA環境)
- 実行時に Flash Attention に関する警告が出ますが、古めの CUDA が要求されるため実質的にインストール不可の場合も多いでしょう。
- 標準Attentionでも動作しますので無くても問題ありません。
- パフォーマンスを少しでも改善したい場合はオプションになり得ます。
生成時間関連
出力音声は最長でも約47秒
- モデル仕様により、1回の生成は最大約47秒に制限されます。
基本的には、この範囲で生成する利用方法が推奨されます。 - 環境音等、断続的な音声の場合は、出力後に外部でFFmpeg等でクロスフェード処理を追加し、滑らかに接続することで長尺の音楽も対応生成できます。
- 音楽など連続性が必要なものは本モデルでは難しいため、他のモデルを検討しましょう。
こちらは出力を繰り返しFFmpegのクロスフェード処理で5分まで延長したサンプルです。
焚き火をイメージし、”crackling campfire, wood burning”をプロンプトとして与えたもので、違和感はありません。
出力は必ず最大長で行われる
- seconds_start / seconds_end で時間を指定しても、末尾に無音部分が生じます。
モデルが必ず最大長(約47秒)を返す仕様となっているようです。 - ファイル出力前に出力結果の後半をカットして回避できます。
seconds=秒数、rate=サンプリングレートです。
output = output[:, :seconds * rate] - ファイル生成後に無音部分をトリミングしてもOK。
動作安定化関連
データ型不一致(float16 / float32)の予防
- mac等、環境によっては生成されたデータの型が異なる場合があります。
生成後に統一しておくことで、トリミングや音量調整などがやりやすくなります。ouput=output.to(torch.float32)
- 最終的なファイル保存時に必要に応じて形を変えると良いでしょう。
ループで生成を回すと処理が遅くなる(GPUキャッシュの問題?)
- 生成を繰り返すと速度が急激に低下する場合があります。
torch.cuda.empty_cache()とgc.collect()を定期的に実行すると回避できるようです。
生成される音量が大きすぎる
- 音のレンジの調整やノイズが混じった場合に、何気なく再生すると爆音となる場合も。
試行を繰り返す間は、ピーク正規化・音量調整で対応しましょう。output = output * 0.7
stepsは公式より多めがおすすめ
steps=100では品質が不安定で、steps=200で安定化しますが生成時間は倍になります。steps=50など小さな値で試し、プロンプトやパラメターが定まったらstepsを増加すると良いでしょう。
⚙️ macOS 安定動作のための工夫
Windows環境では安定して動作しましたが、macOS(Macbook Air M2)で試している間、初期は大きなノイズが乗る現象に悩まされました。
現在まで、下記のような対策を複数組み合わせて結果、安定して動作しています。 メモリ不足やネットワークの要因で動作が固まる場合もありました。どれがノイズの原因か、決定的な要因は不明ですが、ご参考まで。
| 設定 | 目的 | 効果 | コード例 |
|---|---|---|---|
| TOKENIZERS_PARALLELISM=false | fork警告防止 | プロセス競合防止 | os.environ["TOKENIZERS_PARALLELISM"] = "false" |
| MPSキャッシュクリア | 状態リセット | 安定性向上 | torch.mps.empty_cache() |
| メモリ解放徹底 | リーク防止 | 状態クリーン化 | del output, conditioning, negative_conditioning |
| negative_conditioning | ノイズ抑制 | 品質安定 | "low quality, distorted, noisy, muffled" |
| steps=200 | 品質向上 | 自然な生成 | 設定項目変更 |
| 生成後キャッシュクリア | メモリ圧迫防止 | 長時間安定 | torch.mps.empty_cache() |
ベンチマーク結果(Stable Audio Open)
手元の環境でのベンチマークを結果ご紹介します。
- 13th Gen i9-139400F / RTX4070(VRAM 12G)
- Macbook Air M2
プロンプトやパラメータを変化させながら試行する使い方を想定すると、結論としてはCUDA環境以外での実用的な運用は難しいと言えます。
速度比較
- Windowsの場合、RTX4070(CUDA) は CPUのみに対して 約15.5倍速
- Macの場合、Metal(MPS) は CPUのみに対して 約2.5倍速
- CUDA環境ならM2 の 約13.4倍速
条件
- 10秒音声 / 100 steps / dpmpp-3m-sde / seed=42
- Prompt: “ocean waves crashing on beach, seagulls in distance”
| 環境 | デバイス | Load Time | Gen Time | Per Step | Total | 備考 |
|---|---|---|---|---|---|---|
| Windows 11 | RTX 4070 (CUDA) | 10.11s | 42.66s | 0.427s | 52.77s | ✅ 実用的 |
| 〃 | CPU | 6.64s | 663.09s | 6.63s | 669.72s | 非実用的 |
| MacBook Air M2 | MPS | 22.91s | 573.35s | 5.73s | 596.26s | 約2.5倍速(CPU比) |
| 〃 | CPU | 23.20s | 1428.67s | 14.29s | 1451.87s | 非実用的 |
プロンプト内容やシード値でも生成時間はかなり変わりますので、あくまで目安とお考えください。



