原声与配乐分层
一、默认政策与音轨事实
成功渲染镜头默认接受;后期音乐操作不能因为原声噪声、台词、嘴型、响度或品质意见再拒收、重渲或补 TTS。原片只读,默认把完整嵌入声音作为 program 保留,不假称对白与环境声已被分开。
| 来源 | 能诚实声称什么 | 允许的操作 |
|---|---|---|
| 普通嵌入音轨 | complete program | 默认保留,按请求混入新音乐 |
| 无嵌入音轨 | 原音轨不存在 | 为混流生成等时长静音底,不能合成台词 |
| 显式独立 dialogue / ambient / bed | 独立来源确实存在 | 当前字节、时间轴与受信签章通过后按声明策略混流 |
| 显式无效分轨 | 来源不可用 | 失败关闭,禁止回退 embedded program 掩盖错误 |
二、策略参数与边界
| 策略 | 使用前提 | 结果 |
|---|---|---|
| keep-all | 保留完整原 program | 叠入一次请求音乐,不去原声音 |
| keep-dialogue | 默认原声保留;有真实独立轨时按定义处理 | 不能凭自动声源分类丢掉原 program |
| replace-bed | 有实际可区分的已授权 bed 与保留轨 | 仅替换声明音乐层;不能对混合 program 猜分轨 |
| music-only | 明确 allow_discard_original | 原声被丢弃必须在报告里可见 |
电平、ducking、淡入淡出与音乐选段是请求变换参数;默认不测 quiet windows、人声活动、音频余量、可闻度或 LUFS 作为接受门。未测 metrics 为 null。
三、显式分轨校验
- 从受信服务签章读取分轨引用、项目、租户与工作区;记录实际签名与引用摘要。
- 核对每条轨实际文件、非空字节、SHA-256、采样率和时间轴绑定,原片来源也须一致。
- 参数出现 null、false、缺字段、越权、过期签章或哈希不符必须按真实错误停止,不因为本地有原片就默认回退。
- 明确请求分离时才执行 separate;其真实模型/工具失败不可被“没有需要分离”掩盖。
四、音乐执行与工艺参考
- 曲目 id 先解析成注册文件与许可;主版和变体使用同一解析结果,不把 id 当文件路径。
- 普通本地配方默认 compose-only;只有明确 online-first / local-first 等外部来源策略才查询其来源。
- 选段默认按明确区间或 full 使用;auto/climax 是明确分析请求,不能隐含扫描原声选曲。
- 曲目过短时按实际片长生成有限铺底;不能让无限循环输入导致 FFmpeg 永不结束。
- 变体从干净未混新音乐的声音来源派生,每个变体只混一次;禁止对已混版再叠同一床。
五、SOP
- 触发:用户请求配乐。读取原声事实、曲目与分轨声明。回执:源文件哈希、hasAudio、原声策略、许可。失败:来源、分轨或授权不符立即停止。
- 触发:来源真实可用。按明确区间、电平与策略执行一次实际混流。回执:滤镜、曲目路径、原声映射与工具退出码。失败:工具非零、曲目缺失或音轨不可读停止,不自动降电平重试或换供应商。
- 触发:新文件生成。核对真实音轨、画布、非空文件与源片保持。回执:输出 SHA-256、音频来源、qualityReviewed=false、metrics=null。失败:缺件或字节变化停止交付。
六、失败模式(原因 → 处置)
| 症状 | 检测器 / 原因 | 处置 |
|---|---|---|
| 显式 stems 被忽略 | 输入字段被 truthy 判断丢掉 | 保留字段存在性,非法形状明确失败,禁止默认替代 |
| 已有 music bed 被叠两次 | 变体使用已混 master 作来源 | 从干净 program 重建该本地层,原镜头不重生成 |
| 曲库 id 主版可用变体失败 | 解析结果未透传 | 传实际注册路径与许可,停止真实缺件而非换曲 |
| FFmpeg 挂住 | 无界 stream_loop 或 EOF 等待 | 使用有限目标时长,超时留失败,不无限重试 |
| 原声被意外丢弃 | policy 与映射或授权不一致 | 明确失败并指出原声策略,禁止伪造 keep-all |
| 用户觉得音乐太强 | 用户反馈而非默认品质闸 | 按新明确电平做 audio 层返修,记录新版本 |
七、证据与来源
记录真实原片哈希、分轨签章、曲目 id/路径、许可/TASL、实际混流参数、输出哈希与原声策略。主版、变体与返修共用同一来源事实;独立 analyze/structure/verify 如被明确调用,回执另标诊断,不冒充默认全片品质验收。