关于 acestep
acestep 是通过 RunPod 无服务器端点调用 ACE-Step 1.5 生成音乐的命令行技能,适用于视频制作者和音乐创作者。它支持提示词与歌词生成、音乐参数控制、场景预设、风格迁移和音轨分离。
主要功能
- 01根据提示词和歌词生成音乐
- 02设置时长、BPM 和调性
- 03使用视频场景预设
- 04迁移参考音频的风格
- 05分离人声与乐器音轨
- 06固定随机种子以便迭代
适用场景
- 01为视频场景制作背景音乐
- 02生成带段落结构的歌词歌曲
- 03根据参考音频制作风格变体
- 04从混音中提取乐器音轨
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ calesthio/ openmontage --skill acestep安装后在 Claude Code 中输入/acestep确认已加载。
详细介绍
ACE-Step 1.5 音乐生成
通过 tools/music_gen.py 生成开源音乐(MIT 许可证)。在 RunPod 无服务器环境中运行。
需要在 .env 中设置 RUNPOD_API_KEY 和 RUNPOD_ACESTEP_ENDPOINT_ID(运行 --setup 创建端点)。
快速参考
# Basic generation
python tools/music_gen.py --prompt "Upbeat tech corporate" --duration 60 --output bg.mp3
# With musical control
python tools/music_gen.py --prompt "Calm ambient piano" --duration 30 --bpm 72 --key "D Major" --output ambient.mp3
# Scene presets (video production)
python tools/music_gen.py --preset corporate-bg --duration 60 --output bg.mp3
python tools/music_gen.py --preset tension --duration 20 --output problem.mp3
python tools/music_gen.py --preset cta --brand digital-samba --duration 15 --output cta.mp3
# Vocals with lyrics
python tools/music_gen.py --prompt "Indie pop jingle" --lyrics "[verse]\nBuild it better\nShip it faster" --duration 30 --output jingle.mp3
# Cover / style transfer
python tools/music_gen.py --cover --reference theme.mp3 --prompt "Jazz piano version" --duration 60 --output jazz_cover.mp3
# Stem extraction
python tools/music_gen.py --extract vocals --input mixed.mp3 --output vocals.mp3
# List presets
python tools/music_gen.py --list-presets
逐步创作歌曲
1. 纯音乐背景曲(最简单)
python tools/music_gen.py --prompt "Upbeat indie rock, driving drums, jangly guitar" --duration 60 --bpm 120 --key "G Major" --output track.mp3
2. 带人声和歌词的歌曲
将歌词写入临时文件,或直接内联传入。使用结构标签控制歌曲段落。
# Write lyrics to a file first (recommended for longer songs)
cat > /tmp/lyrics.txt << 'LYRICS'
[Verse 1]
Walking through the morning light
Coffee in my hand feels right
Another day to build and dream
Nothing's ever what it seems
[Chorus - anthemic]
WE KEEP MOVING FORWARD
Through the noise and doubt
We keep moving forward
That's what it's about
[Verse 2]
Screens are glowing late at night
Shipping code until it's right
The deadline's close but so are we
Almost there, just wait and see
[Chorus - bigger]
WE KEEP MOVING FORWARD
Through the noise and doubt
We keep moving forward
That's what it's about
[Outro - fade]
(Moving forward...)
LYRICS
# Generate the song
python tools/music_gen.py \
--prompt "Upbeat indie rock anthem, male vocal, driving drums, electric guitar, studio polish" \
--lyrics "$(cat /tmp/lyrics.txt)" \
--duration 60 \
--bpm 128 \
--key "G Major" \
--output my_song.mp3
3. 使用视频背景预设
python tools/music_gen.py --preset tension --duration 20 --output problem_scene.mp3
获得良好效果的关键提示
- Caption = 整体风格(流派、乐器、情绪、制作质量)
- 歌词 = 时间结构(主歌/副歌的流动、人声演绎)
- 歌词中的大写字母 = 高人声强度
- 括号 = 背景人声:“We rise (together)”
- 每行保持 6-10 个音节,让节奏自然
- 不要在 Caption 中描述旋律——描述声音和感觉
- 迭代提示词或歌词时,使用
--seed固定随机性
场景预设
| 预设 | BPM | 调性 | 用途 |
|---|---|---|---|
corporate-bg | 110 | C 大调 | 专业背景、演示文稿 |
upbeat-tech | 128 | G 大调 | 产品发布、技术演示 |
ambient | 72 | D 大调 | 概览幻灯片、反思性内容 |
dramatic | 90 | D 小调 | 揭晓、公告 |
tension | 85 | A 小调 | 问题陈述、挑战 |
hopeful | 120 | C 大调 | 解决方案揭晓、问题解决 |
cta | 135 | E 大调 | 行动号召、收尾氛围 |
lofi | 85 | F 大调 | 屏幕录制、编码演示 |
任务类型
text2music(默认)
根据文本提示词和可选歌词生成音乐。
cover
根据参考音频进行风格迁移。使用 --cover-strength(0.0-1.0)控制混合程度:
- 0.2 — 宽松的风格启发(创作自由度更高)
- 0.5 — 平衡的风格迁移
- 0.7 — 接近原始结构(默认)
- 1.0 — 最大程度忠于来源
extract
分离音轨——从混合音频中提取单独的音轨。
音轨:vocals、drums、bass、guitar、piano、keyboard、strings、brass、woodwinds、other
repaint(未来功能)
在保留其余音频的同时,重新生成现有音频中的特定时间片段。
lego(未来功能,需要基础模型)
在现有音频语境中生成单独的乐器音轨。
complete(未来功能,需要基础模型)
通过添加指定乐器,扩展未完成的乐曲。
提示词工程
Caption 编写——分层描述维度
通过叠加多个描述维度来编写 Caption,而不是只用单个词描述。
可包含的维度:
- 流派/风格:流行、摇滚、爵士、电子、lo-fi、synthwave、管弦乐
- 情绪/氛围:忧郁、欣喜若狂、梦幻、怀旧、亲密、紧张
- 乐器:原声吉他、合成器铺底音色、808 鼓、弦乐、铜管、钢琴
- 音色:温暖、清脆、空灵、有冲击力、丰润、精致、未经修饰
- 年代:“80 年代合成器流行乐”、“现代独立音乐”、“古典浪漫主义”
- 制作:lo-fi、录音室精修、现场录音、电影感
- 人声:气声、浑厚、假声、沙哑、口语演绎(或“纯音乐”)
好:“缓慢忧郁的钢琴叙事曲,配以亲密感十足的女声;温暖的弦乐逐渐铺陈,最终进入强劲的副歌;录音室精修制作” 差:“悲伤的歌曲”
关键原则
- 具体胜过模糊——描述乐器、情绪和制作风格
- 避免矛盾——不要同时要求“古典弦乐”和“硬核金属”
- 重复能强化优先级——重复重要元素以突出强调
- 简短的 Caption = 更多创作自由——详细的 Caption 会限制模型
- 使用元数据参数设置 BPM/调性——不要在 Caption 中写“120 BPM”,而要使用
--bpm 120
歌词格式
结构标签(用于歌词,而非字幕):
[Intro]
[Verse]
[Chorus]
[Bridge]
[Outro]
[Instrumental]
[Guitar Solo]
[Build]
[Drop]
[Breakdown]
人声控制(加在行或段落前):
[raspy vocal]
[whispered]
[falsetto]
[powerful belting]
[harmonies]
[ad-lib]
能量指示:
- 大写 = 高强度(“WE RISE ABOVE”)
- 括号 = 背景人声(“We rise (together)”)
- 每段中的每行保持 6–10 个音节,以保持自然节奏
示例 — 科技产品广告歌:
[Verse]
Build it better, ship it faster
Every feature tells a story
[Chorus - anthemic]
THIS IS YOUR PLATFORM
Your vision, your stage
Digital Samba, every page
[Outro - fade]
(Build it better...)
视频制作集成
不同场景类型的音乐
| 场景 | 预设 | 时长 | 备注 |
|---|---|---|---|
| 标题 | dramatic 或 ambient | 3-5s | 简短,用于营造氛围 |
| 问题 | tension | 10-15s | 黑暗、令人不安 |
| 解决方案 | hopeful | 10-15s | 释然、乐观 |
| 演示 | lofi 或 corporate-bg | 30-120s | 不喧宾夺主,与演示时长相匹配 |
| 数据 | upbeat-tech | 8-12s | 营造可信度 |
| CTA | cta | 5-10s | 能量拉满,节奏明快 |
| 片尾字幕 | ambient | 5-10s | 轻柔淡出 |
时间安排工作流
- 先规划场景时长(根据配音脚本)
- 生成匹配的音乐:
--duration <scene_seconds> - 音乐时长精准(与请求时长相差不超过 0.1s)
- 如果背景音乐需要贯穿多个场景:生成一条长音轨
与配音结合
在 Remotion 中,背景音乐的音量应混合至 10-20%:
<Audio src={staticFile('voiceover.mp3')} volume={1} />
<Audio src={staticFile('bg-music.mp3')} volume={0.15} />
旁白下方的音乐:使用器乐预设(corporate-bg、ambient、lofi)。
以音乐为主的场景(标题、CTA):可以使用更高音量或人声曲目。
品牌一致性
使用 --brand <name> 从 brands/<name>/brand.json 加载提示信息。
使用 --cover --reference brand_theme.mp3 创建品牌声音标识的变体。
若要让项目中的声音保持一致:固定种子(--seed 42),仅更改时长或提示词。
技术细节
- 输出:48kHz MP3/WAV/FLAC
- 时长范围:10-600 秒
- BPM 范围:30-300
- 推理:在 GPU 上约需 2-3 秒(turbo,8 步),在 Mac MPS 上约需 40-60 秒
- Turbo 模型:8 步,无需 CFG,速度快且质量好
- Shift 参数:建议 turbo 使用 3.0(可提升质量)
不应使用 ACE-Step 的场景
- 声音克隆 — 请改用 Qwen3-TTS 或 ElevenLabs
- 音效 — 请使用 ElevenLabs SFX(
tools/sfx.py) - 语音/旁白 — 请使用配音工具,而非音乐生成工具
- 从视频中提取分轨 — 先使用 FFmpeg 提取音频,再使用
--extract