【免费下载链接】editonny
Local video editing through conversation. Created by Matheus Gomes.
editonny 是一款免费的开源 AI 视频剪辑工具,它通过自然语言对话在本地完成视频剪辑:读懂音频波形后,自动精准去除视频中的停顿、呼吸声与口误,并添加字幕和动态场景。本文完整解析 editonny 背后的波形剪切技术,解释它是如何做到"剪得干净"却"不咬字"的。
为什么"去除停顿"比想象中更难?
很多剪辑工具直接依赖转录引擎给出的词级时间戳来下剪刀,但这在 editonny 看来是不可靠的——原因很简单:
- 时间戳会漂移:Whisper 等转录引擎的词边界常有 0.1~0.3 秒的误差,直接照剪极易切进正在发音的音节;
- 固定阈值会翻车:手机录制的噪声抑制让停顿接近数字静音(-72 dB),而呼吸声可能在 -45 dB,若只用噪声底做阈值,呼吸声就会被当成人声留下;
- 微停顿不能剪:连读音节之间的 30~50 ms 间隙是"辅音闭锁",剪掉反而会截断辅音。
因此 editonny 的编辑契约是:每一次剪切都必须对照真实录音的波形来测量,而不是用"阅读速度估算"或经验值(见 WORKFLOW.md 中的 Editorial contract 与 cut.md)。
第一步:10 毫秒级波形包络测量
核心工具是 waveform_cut.py。它先用 FFmpeg 把音频解码为 48 kHz 单声道,然后按 10 ms 步进计算每个窗口的 RMS 能量,得到一条覆盖整段录音的"分贝包络线"。
阈值不写死,而是从每个音源自身推导(见 waveform_cut.py#L71-L76):
| 测量项 | 取值 | 作用 |
|---|---|---|
| 噪声底 floor | 包络第 10 百分位 | 代表房间环境声 |
| 响亮语音 loud | 包络第 90 百分位 | 代表正常说话的响度 |
| 停顿判定阈值 | max(floor+14 dB, loud-20 dB),且不低于 loud-28 dB | 低于它才判定为"安静",防止呼吸声被误认为人声 |
几个关键常量决定了剪切的"手感"(waveform_cut.py#L18-L34):
PAUSE_MIN_S = 0.22:只有 ≥220 ms 的停顿才会被切开,更短的间隙一律保留,因为剪微停顿会切到发音;PAD_S = 0.06:剪切处保留 60 ms 留白,让衔接听起来自然;TAIL_MAX_S = 0.20:允许向弱信号方向延伸词尾,最多 200 ms,保护结尾辅音。
第二步:边界校准,绝不"咬字"
拿到精确包络后,precise_edges.py 负责把每个剪辑边界"安放"到真实停顿里:
- 边界落在人声中? 若边界附近仍有声音,它会在向外 0.25 s / 向内 0.40 s 的搜索半径内寻找最近的足够长的停顿,优先选择"说完这个不完整词"的方案,而不是强行删掉半个字;
- 找不到停顿? 选择附近最安静的点作为切点,并输出
NO PAUSE警告,强制人工听一遍再定夺; - 弱辅音保护:词首的 s 声、词尾轻辅音可能只比噪声底高 6 dB,算法会用不同的开启/关闭阈值加 80 ms 迟滞,再向外"走"最多 0.12 s,确保这些细微发音不被截断;
- 背景轰鸣处理:车内、马路边录音存在低频轰鸣时,会自动加高通滤波再测一次,让人声与底噪的对比度回到可测范围。
算法细节可参阅 tighten-cut-algorithm.md 与 tighten-cut.md。
第三步:口误、假开始与重复的切除
editonny 用一份 EDL(剪辑决策表) 描述成片:每个区间对应一句完整的话。随后 waveform_cut.py 做三件事:
- 拆分区间:把区间内部 ≥220 ms 的停顿切开,前后各留 60 ms 呼吸空间;
- 剔除碎片:极短的"唇击/呼吸"片段(时长低于 80 ms 或峰值不足)直接丢弃,避免成片里出现"咔"声;
- 尊重人工决策:标记为
"dry": false的区间(比如刻意保留的戏剧性停顿)原样保留,边界纹丝不动。
针对口误和假开始,verify_cut.py 在渲染草稿后做一轮数值自检,逐项扫描并给出带时间戳的 FLAG:
| 检查项 | 含义 |
|---|---|
EDGE-IN-SPEECH | 区间起止点仍落在人声里——剪进了单词 |
EDGE-IN-WORD | 边界卡在词中间,只剩一个辅音闭锁——词被咬掉 |
CLICK | 拼接点出现样本跳变,会听到"咔哒"声 |
DEAD-AIR | 成片内部残留 ≥0.7 s 的无意义静音 |
REPEAT | 同一段口误/重复话语被重复播放 |
LOUDNESS | 响度偏离 -14 LUFS 目标 |
有 FLAG 就不允许批准这次剪切。最终成片还会再跑一次 breaths.py,确认没有 ≥0.25 s 的意外残留静音——至此"去除停顿"才算真正完成。
新手上手:一句话指挥本地 AI 剪辑
理解了原理,体验 editonny 其实只需要一句话。在 Claude Code 或 Codex 中粘贴官方安装请求即可(首次安装与后续更新用同一段话),它会自动克隆技能、准备本地引擎、转录模型与 OCR,并跑合成样本自检;也可以手动 git clone https://gitcode.com/gh_mirrors/ed/editonny 后执行 python3 install.py --target both(流程见 README.md 与 installation.md)。
完成后重启代理,调用 /editonny(Claude Code)或 $editonny(Codex),然后用大白话下达指令:
Edit a 45-second vertical video from /path/to/footage.
Keep complete takes, clean pauses, breaths, and mistakes,
and add clear captions.
引擎会先检查素材、给出完整的十项设置卡片并等待你明确确认,之后所有产物都保存在本地 Downloads/editonny/日期-标题/ 下:成片在 exports/,工程文件在 project/。转录与渲染全程在本机运行,素材不会上传到任何服务器。
延伸阅读:波形剪切相关资料
- 剪辑决策总纲:WORKFLOW.md
- 波形剪切实现:waveform_cut.py
- 边界校准实现:precise_edges.py
- 成片自检实现:verify_cut.py
- 暂停收紧算法说明:tighten-cut-algorithm.md
- 产品边界与设计:PRODUCT.md
关于作者
editonny 由 Matheus Gomes 创建并维护,代码采用 MIT 协议开源,第三方模型、字体与媒体保留各自许可证(见 THIRD_PARTY_NOTICES.md)。
总结
editonny 的波形剪切技术可以概括为三层防线:
- 🔍 测量——10 ms 级 RMS 包络 + 每个音源独立的自适应阈值,让停顿判定"因源而异";
- ✂️ 校准——边界必须落在实测停顿中,落进人声就找最近的完整停顿,找不到就报警让人来听;
- 🛡️ 验收——
EDGE-IN-WORD、CLICK、DEAD-AIR等数值化自检项全部通过,才能批准这次剪辑。
正是这套"测量优先、保守切除、逐项验收"的设计,让 AI 视频剪辑在去掉每一分停顿与口误的同时,完整地保住了你的每个字、每段自然节奏和刻意保留的沉默。
【免费下载链接】editonny
Local video editing through conversation. Created by Matheus Gomes.
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





