SuperAPI AI 工具集

split-audio-by-words

办公与效率

查看项目

更新于 10-15 21:54

技能介绍

用途:把长音频(播客、访谈、演讲)切成逐场景 mp3,解决用原始时间戳剪切时切到词中间、丢失词尾的问题。做法是先用 Whisper 词级时间戳转写源音频,再把每个请求的剪切点吸附到最近的词边界。

主要能力:支持显式场景(JSON 文件或 --scene 参数,含 scene、caption、start、end)或自动按停顿切分(--auto-split,可选 --min-pause-duration,默认 0.6 秒,用 ffmpeg silencedetect 加 Whisper 词时序识别句末停顿,每句一个切分)。snap_mode 可选 nearest(默认)、before、after,控制吸附到哪个词边界。padding 默认 0.20 秒,用 afade=t=out 让切尾平滑淡出。provider 可选 groq(默认,最便宜最快)、fal、openai;fal 路径组合 atoms/source/transcribe-audio-fal。输出目录默认 <audio_parent>/voiceovers/,文件名为 scene-NN-<speaker?>.mp3。

使用方式:运行 scripts/split.py,传入 --audio、--scenes-json、--output-dir、--provider、--padding 等参数。流程为:词级转写(结果缓存为 words.json,重跑不重复转写)、吸附切点并写入 manifest 的 snapped_from 字段、用 ffmpeg 提取逐场景 mp3、写 manifest.json、对每个场景做词级转写校验(首词在 200ms 内开始、末词在文件结束前至少 200ms 结束、文本与 manifest 的 text 字段 Levenshtein 0.9 匹配),失败输出到 stderr。输出包括逐场景 mp3、manifest.json、words.json、verification.md。

适用场景:为口型同步(klarify 流程)切分播客逐场景配音文件;把已有母带重切成场景对齐片段做 B-roll 实验;用于 molecules/podcast-clip-animated-ad 第 2 步。

限制:不适用于不需要词边界精度的普通音频编辑(直接用 ffmpeg -ss/-to),也不适用于切分音乐(本工具面向语音)。失败模式:Whisper 漏词可能导致时间戳偏移一个词,校验步骤可发现,可用显式时间戳覆盖;多说话人长音频的词流会混合,--speaker-diarization 目前不支持,标记为未来工作;自动切分检测到过多微停顿时可把 --min-pause-duration 从 0.6 秒调大到 1.0 或 1.5 秒。质量检查包括场景时长与 clip_end-clip_start 误差在 ±20ms 内、场景时间戳不重叠、afade 尾部存在、校验文本与 manifest 一致。