音频素材生成与获取技能,用于为视频项目准备旁白、背景音乐和音效,并输出供 Remotion 做时序同步的时长数据。
用途 该技能负责三类音频素材:旁白(VO)、背景音乐(BGM)和音效(SFX)。旁白通过 Edge TTS 生成,BGM 与 SFX 从 Freesound 检索下载。最终生成 durations.json,用于 Remotion 中的镜头时长计算、音频层定位和旁白同步。
主要能力
- 旁白批量生成:解析 {project_dir}/manifests/script.md 中所有 [VO_XXX] 标记及其文本,逐段调用 Edge TTS,按配置的音色与语速生成,保存为 {project_dir}/raws/audio/vo/VO_XXX.wav。
- 音色选择:default 别名映射到 zh-CN-XiaoxiaoNeural,也可直接传入任意有效的 edge-tts voice ID;完整列表与建议见 references/edge-tts.md。
- 语速调整:默认语音可能偏慢,建议使用 1.2 更自然。语速范围 0.5 至 2.0,旁白推荐 1.0-1.3,情感/戏剧性内容推荐 0.8-1.0。
- 语速与 storyboard pacing 对应:slow 用 1.0(放慢,营造沉浸感与情感重量);medium 用 1.2(默认自然叙述);fast 用 1.3(加快,营造紧迫感与兴奋感);pause 为呼吸段,无旁白,不生成 TTS。若 storyboard 未指定 pacing,默认 medium(1.2)。pacing 为逐镜头值,同一视频不同 VO 段可有不同语速。应用 pacing 语速后,时长提取必须反映该语速下的实际播放长度。
- 时长提取:为时序同步提取音频时长,此步骤为强制步骤。输出 durations.json,格式为 VO_XXX 到毫秒整数的映射,例如 {"VO_001": 3450, "VO_002": 2800}。所有值必须为毫秒整数,script.md 中每个 [VO_XXX] 都必须有对应条目,时长反映配置语速下的实际音频长度,任何音频修改后都必须重新提取。
- durations.json 与视听关系:durations.json 格式本身不变,但 Builder 的 timing.ts 模块会结合 storyboard 的 audio_visual_relation 字段与 durations 计算实际音频起始帧。sync 表示音频与视觉镜头同帧开始;lead-visual 表示视觉略早于音频(音频偏移为正);lead-audio 表示音频略早于视觉切换(音频偏移为负);counterpoint 表示音频时序同步但视觉内容有意不匹配。timing.ts 中的 audioOffsetFrames 函数读取这些值应用帧级偏移,Audio agent 无需为此修改 durations.json,由 Builder 下游处理。
- BGM 检索:从 Freesound 下载免版税音频。搜索匹配视频情绪的 loop 或长音频,最短时长 60 秒以覆盖整片,关键词描述情绪、流派与配器。BGM 节奏匹配按章节主导 pacing 选择 BPM:slow 为 60-80 BPM(ambient、piano、soft strings、lo-fi);medium 为 90-110 BPM(corporate、light electronic、acoustic);fast 为 120-140 BPM(upbeat electronic、driving percussion、energetic);breathing shot 用环境音/氛围音或与前后章节 BGM 淡入淡出衔接。章节主导 pacing 由其镜头中出现最多的 pacing 值决定;若视频有不同 pacing 的章节,可考虑多首 BGM 交叉淡化过渡;搜索时在关键词中包含 BPM 范围(如 "ambient piano 70bpm"、"upbeat electronic 130bpm")。BGM 应衬托而非压过旁白,较低 BPM 更易置于旁白之下。
- SFX 检索:搜索短促有力的转场与 UI 反馈音效,最长通常 3-5 秒,关键词描述所需的确切声音。
- 许可信息:CC0(公共领域)无需署名、可商用;CC-BY 需署名、可商用。CC-BY 音效需在 raws/audio/LICENSES.txt 中记录署名。
使用方式 工作流:生成旁白(处理 script.md 中所有 [VO_XXX],生成 VO_XXX.wav,提取时长创建 durations.json);检索 BGM(下载到 raws/audio/bgm/);检索 SFX(下载到 raws/audio/sfx/);验证并报告。 输出结构:raws/audio/ 下含 vo/(VO_001.wav 等及 durations.json)、bgm/、sfx/ 和 LICENSES.txt。 增量模式:当 dispatch context 中 mode 为 "incremental" 时,输入为 amendment.affected_resources 中指定的 VO 段落 ID 列表。仅定位并重新生成指定 VO 段落,使用与原始生成相同的 character、tone、speed 配置,替换对应 WAV 文件,并必须重新提取完整 durations.json,返回处理摘要(重新生成了哪些 VO、新旧时长对比)。不重新生成未指定的 VO,不重新检索 BGM/SFX(除非 amendment 明确要求)。即使只修改一个 VO 片段,也必须重新提取整个 durations.json,因为时长变化可能影响下游 Remotion 时序计算。
适用场景 适用于需要批量旁白配音、按节奏匹配背景音乐、添加转场与 UI 音效,并将音频时长同步到 Remotion 视频时序的项目。
限制与依赖 Edge TTS 需要出站互联网访问及 Python 包 edge-tts。Freesound 需要 API key(FREESOUND_API_KEY)。常见问题:TTS 超时多因文本过长,需拆分为更短片段(最长 200 字符);缺少 durations 说明未运行时长提取;音质不佳可尝试不同 Edge voice ID;网络错误需检查网络并重试。音频时序规则:所有时长单位为毫秒;默认推荐 1.2x,时长反映实际播放长度;任何音频文件变更后必须重新提取;script.md 中每个 [VO_XXX] 都必须有 durations.json 条目;取整数,四舍五入到最近毫秒。