音频混合 / 混音:把旁白口播 + 背景音乐 + 音效混成一轨,BGM 自动循环补足并可闪避(旁白说话时自动压低 BGM 保证人声清晰)。当用户说 混音、音频混合、旁白加背景音乐、配音加BGM、人声和音乐混一起、加音效、音频叠加、BGM 压低、闪避、ducking、把配音和bgm合起来 时使用。基于 shared/scripts/audio_mix.py。与 audio-editing concat 区别:concat 是前后顺序拼接,本 SKILL 是同时叠加混音;与 video-editing bgm 区别:那个给视频配乐,本 SKILL 输出纯音频。
npx skills add https://github.com/ZJU-REAL/Easel --skill audio-mix
> 把多条音频同时叠加混成一轨,核心能力是闪避(ducking)——旁白说话时自动压低
> 背景音乐,人声清晰、音乐不抢。全部走 skills/shared/scripts/audio_mix.py,
> 不要手拼 amix/sidechaincompress。
> 前后顺序拼接(一段接一段)见 audio-editing concat;给视频配乐见 video-editing bgm;
> 降噪见 audio-denoise。
| 字段 | 必填 | 说明 |
|------|------|------|
| 旁白 | 否 | 口播/配音主轨(给了则输出时长跟它走,并触发闪避) |
| BGM | 否 | 背景音乐(自动循环补足到旁白长度) |
| 音效 | 否 | 一个或多个音效,可指定各自出现时间点 |
(三者至少给一个。最典型:"旁白 + BGM"。)
outputs/主题名/)脚本路径(相对项目根):skills/shared/scripts/audio_mix.py(mix -h 看参数)。
# 旁白 + BGM(默认自动闪避,BGM 循环补足到旁白长度)
python skills/shared/scripts/audio_mix.py mix \
--voice narration.mp3 --bgm music.mp3 --bgm-volume 0.25 \
-o outputs/主题名/final.mp3
# 关闭闪避(纯叠加)
python skills/shared/scripts/audio_mix.py mix --voice v.mp3 --bgm m.mp3 --no-duck -o out.mp3
# 旁白 + 定时音效(第 3.5s 一个叮,第 8s 一个 whoosh)
python skills/shared/scripts/audio_mix.py mix --voice v.mp3 \
--sfx ding.wav --sfx-at 3.5 --sfx whoosh.wav --sfx-at 8 -o out.mp3
--bgm-volume(默认 0.25)或确认闪避已开(默认开)。--no-duck 后手动压低 --bgm-volume。--bgm-loop-off。--sfx-volume(默认 0.9)。--no-duck。--sfx 与 --sfx-at 数量一致(或不给 --sfx-at 全部默认 0s)。normalize。outputs/主题名/。闪避用 ffmpeg sidechaincompress(以人声为控制信号压缩 BGM),是播客/口播视频保证人声清晰的
标准做法;多轨叠加用 amix。把 sidechain 接线与循环对齐封装成确定性脚本。
Take zju-real/audio-mix from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.