AIで音楽を生成するスタンドアロンWebアプリケーション
- Python 3.10以上
- pip
cd /home/animede/gm_song
git clone <repository_url> ace_step_standalone
# または既存のディレクトリを使用
cd ace_step_standalonepython -m venv .venv
source .venv/bin/activate # Linux/Mac
# Windows: .venv\Scripts\activatepip install -r requirements.txtcp .env.example .env
# .envファイルを編集して設定をカスタマイズcd /home/animede/gm_song/ace_step_standalone
source .venv/bin/activatepython main.pyまたは
./start.sh- ACE-Step 1.5 API Server が
localhost:8001で稼働していること - LLM API (作詞/タグ生成用)が利用可能であること
.env ファイルで設定を変更できます:
# ACE-Step API
ACE_STEP_API_URL=http://localhost:8001
# LLM API
OPENAI_BASE_URL=http://39.110.248.77:64650/v1
OPENAI_CHAT_MODEL=gemma3:latest
# サーバー
PORT=8888起動時にコマンドラインオプションで設定を上書きできます:
python main.py [オプション]| オプション | 説明 | 例 |
|---|---|---|
--host HOST |
アプリのホスト | --host 0.0.0.0 |
--port PORT |
アプリのポート | --port 9000 |
--ace-host HOST |
ACE-Step APIホスト | --ace-host 192.168.0.236 |
--ace-port PORT |
ACE-Step APIポート | --ace-port 8001 |
--ace-url URL |
ACE-Step API完全URL | --ace-url http://192.168.0.236:8001 |
--llm-host HOST |
LLM APIホスト | --llm-host 39.110.248.77 |
--llm-port PORT |
LLM APIポート | --llm-port 64650 |
--llm-url URL |
LLM API完全URL | --llm-url http://localhost:11434/v1 |
--llm-model MODEL |
LLMモデル名 | --llm-model gpt-4o |
--no-reload |
開発時のリロードを無効化 | --no-reload |
# デフォルト設定で起動
python main.py
# ACE-Step APIを別サーバーに接続
python main.py --ace-host 192.168.0.236 --ace-port 8001
# LLM APIを指定して起動
python main.py --llm-url http://localhost:11434/v1 --llm-model llama3
# 複数オプションを組み合わせ
python main.py --port 9000 --ace-url http://192.168.0.236:8001 --llm-host 39.110.248.77 --llm-port 64650優先順位: コマンドラインオプション > .envファイル > デフォルト値
ace_step_standalone/
├── main.py # FastAPIメインアプリ
├── config.py # 設定
├── requirements.txt # 依存パッケージ
├── .env # 環境変数
├── start.sh # 起動スクリプト
├── README.md # このファイル
├── docs/
│ ├── EASY_MUSIC_GUIDE.md # かんたん音楽生成ガイド
│ ├── ACE_STEP_1_5_STANDALONE_SPEC.md # 設計仕様書
│ ├── ACE_STEP_API_DOCUMENTATION.md # API詳細ドキュメント
│ └── ACE_STEP_AUDIO_TIPS.md # 音声パラメータTips
├── routers/
│ ├── generate.py # 音楽生成API
│ └── lyrics.py # 作詞/タグ生成API
├── services/
│ ├── ace_step_client.py # ACE-Step APIクライアント
│ └── llm_service.py # LLMサービス
├── static/
│ ├── style.css # スタイルシート
│ └── app.js # フロントエンドJS
└── templates/
└── index.html # メインページ
- テーマを入力: 曲のテーマやシナリオを自然言語で入力
- AI作詞: 「AI作詞」ボタンで歌詞を自動生成
- タグ生成: 「タグ生成」ボタンでジャンル・楽器タグを推奨
- パラメータ調整: BPM、調、長さ、STEP、CFG、SEEDなどを設定
- 音楽生成: 「音楽を生成」ボタンでAI音楽を生成
- 再生: 生成完了後、ビジュアライザー付きプレイヤーで再生
| パラメータ | 説明 | デフォルト | 範囲 |
|---|---|---|---|
| 長さ(秒) | 生成する音楽の長さ | 150 | 10-300 |
| BPM | テンポ | 120 | 30-300 |
| 調 | キースケール(34種類) | 自動 | C major〜B minor(#/b含む) |
| 拍子 | 拍子記号 | 4/4 | 2/2, 2/4, 3/4, 4/4, 6/8 等 |
| STEP | 推論ステップ数(多いほど高品質) | 60 | 1-200 |
| CFG | ガイダンススケール | 3.0 | 0.0-20.0 |
| SEED | 再現性のためのシード値 | ランダム | 任意の整数 |
Note: Turboモデル使用時はSTEPが自動的に8に調整されます
| エンドポイント | メソッド | 説明 |
|---|---|---|
/api/generate |
POST | 音楽生成タスク作成 |
/api/status/{task_id} |
GET | タスクステータス確認 |
/api/audio |
GET | 音声ファイルプロキシ(CORS対応) |
/api/models |
GET | ACE-Stepモデル情報取得 |
/api/stats |
GET | ACE-Step統計情報取得 |
/api/lyrics |
POST | AI作詞 |
/api/tags |
POST | タグ生成 |
/api/full_generate |
POST | 歌詞+タグ一括生成 |
/api/languages |
GET | サポート言語一覧 |
/api/key_scales |
GET | サポートキースケール一覧 |
/api/health |
GET | ヘルスチェック |
- AI作詞: LLMによる自動歌詞生成
- タグ生成: ジャンル・楽器タグの自動推奨
- ビジュアライザー: 再生中に音楽に合わせたカラフルなアニメーション表示
- 詳細設定: CFG、SEED等の詳細パラメータをアコーディオンで設定
- サーバー情報表示: フッターに現在のモデル・キュー状態を表示
本番環境でnginxを使用する場合の設定例:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 音声ストリーミング対応
proxy_buffering off;
proxy_read_timeout 300s;
# 音声ファイルサイズ上限
client_max_body_size 100M;
}
}Note: WebSocketは使用していないため、WS設定は不要です
- v1.1 (2026-02-06)
- 音楽パラメータ追加: STEP, CFG, SEED
- 長さ・BPMを入力ボックスに変更
- 調の選択肢を34キーに拡張(#/b対応)
- 拍子の選択肢を拡張
- ビジュアライザー機能追加
- 再生エリアを独立セクションに分離
- 音声プロキシAPI追加(CORS対応)
- サーバーモデル情報表示機能追加
- 歌詞エリアのリサイズ機能追加