尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

把 AI 剪辑搬进浏览器:基于 Silero VAD 实现视频长停顿自动裁切

发布时间:2026/9/26 3:27:45

资讯中心
01
ARTICLE

把 AI 剪辑搬进浏览器:基于 Silero VAD 实现视频长停顿自动裁切

把 AI 剪辑搬进浏览器:基于 Silero VAD 实现视频长停顿自动裁切
录制口播、课程讲解和产品演示时经常会留下几秒钟的停顿。手动处理这些空白需要反复播放、定位、分割再把后面的片段接起来。能不能让浏览器自动找出长停顿并把对应的画面一起剪掉我在开源项目Timeline Studio中实现了这个功能。核心方案是使用Silero VAD ONNX Runtime Web在浏览器本地检测人声再把检测结果转换为可预览、可选择、可撤销的时间线编辑。下面分享实现思路和开发中遇到的问题。1. 先明确目标检测停顿不需要先识别文字如果只是去除说话中间的长停顿不必先完成语音转文字。我们需要的是音频中的语音活动信息有人说话 → 保留 短暂停顿 → 保留自然节奏 长时间无人说话 → 生成裁切建议VAD也就是语音活动检测正好用于判断音频中是否存在人声。本项目使用的 Silero VAD ONNX 模型文件约为2.24 MB通过 ONNX Runtime Web 的 WASM 路径执行。这里仅指模型文件大小不包含运行时依赖。需要注意没有人声不代表没有有效内容。演示操作、背景音乐和刻意留白都可能被识别为非语音区间。因此检测完成后应先让用户预览而不是直接删除。2. 整体实现流程选中时间线视频 ↓ 读取并解码原始音轨 ↓ 转换为单声道、16 kHz 音频 ↓ Worker 中运行 Silero VAD ↓ 根据人声概率生成语音区间 ↓ 计算长停顿和候选裁切区间 ↓ 用户试听、勾选 ↓ 同步裁切视频画面与原声这里有两个设计重点。首先音频采用分块处理避免一次准备整段长视频的分析数据。连续音频块之间保留模型状态使检测能够利用上下文。其次模型推理放在独立 Worker 中减少对编辑器主界面的阻塞。用户仍然可以查看进度或取消分析。3. 从人声概率生成语音区间模型输出的人声概率需要进一步转换成稳定的语音区间。如果只使用一个阈值逐帧判断轻声、呼吸和短暂波动可能把一句话拆成很多碎片。实现中采用不同的语音开始和结束阈值并加入短暂的静音确认时间达到开始阈值 → 进入语音状态 低于结束阈值并持续一小段时间 → 结束当前语音区间得到语音区间后相邻区间之间的空白就是停顿候选。例如第一段语音0.04.2 秒 第二段语音7.212.0 秒 中间停顿4.27.2 秒共 3 秒这些边界是模型检测结果并不等同于人工精确标注因此还需要保留衔接空间和试听入口。4. 去除停顿其实是把长停顿缩短完全剪掉两句话之间的空白容易让讲话显得急促。因此功能提供两个参数参数作用当前默认值最短停顿决定哪些停顿进入候选范围0.8 秒保留间隔决定裁切后保留多少停顿0.5 秒保留间隔支持0.31 秒。以上面的 3 秒停顿为例如果保留 0.5 秒可以在前一句结束后和后一句开始前各留约 0.25 秒删除中间约 2.5 秒。下面是帮助理解的简化代码不是项目完整实现functioncreatePauseCut({previousSpeechEnd,nextSpeechStart,minimumPause0.8,retainedGap0.5,minimumCutDuration0.5,}){constpauseDurationnextSpeechStart-previousSpeechEnd;constremovableDurationpauseDuration-retainedGap;if(pauseDurationminimumPause||removableDurationminimumCutDuration){returnnull;}return{start:previousSpeechEndretainedGap/2,end:nextSpeechStart-retainedGap/2,};}实际实现还需要处理视频开头、结尾以及裁切后保留片段的最小长度。所以并不是每个超过门槛的停顿都会被裁切。原本比保留间隔更短的停顿也不会被拉长。5. 音画同步共用一套裁切区间找到停顿之后不能分别计算音频和视频的裁切位置。更稳妥的方式是先生成统一的时间区间再同时应用到画面和原声。这里需要区分两种时间源素材时间原始视频文件中的位置。时间线时间素材经过裁剪、倍速后在项目中的位置。对于恒定倍速基本换算关系可以表示为片段内时间 源素材时间 − 源素材起点÷ 播放速度 项目时间 片段在项目中的起点 片段内时间这个关系只适用于恒定正向播放速度。速度曲线、倒放等情况需要额外的映射逻辑不能直接套用。本功能对暂不支持的复杂组合明确限制优先保证支持范围内的裁切结果可靠。6. 实际踩坑视频时长不等于音轨时长开发过程中一个能够正常播放的视频在分析阶段却提示音轨无法完整解码。检查后发现视频时长约 300.13 秒 音频结束约 298.68 秒视频末尾还有画面但已经没有音频数据。如果程序要求解码音频必须覆盖完整视频时长就会把这种正常素材误判为异常。修复时需要区分情况处理方式音轨实际开始前、结束后的空白按静音补齐保持时间轴对齐音轨有效范围内部的数据缺失继续报错避免误判为停顿不能把所有缺失数据都补成静音否则真正的解码失败可能变成错误的裁切建议。这也是音视频开发中值得留意的一点播放器能够正常播放并不意味着容器时长、视频时长和音频时长完全一致。7. 分析与应用分开编辑才可控功能采用两个阶段分析阶段生成候选方案不修改项目 应用阶段提交用户选中的裁切形成一次可撤销编辑用户可以跳转试听候选位置取消需要保留的停顿再一次性应用。调整停顿门槛或保留间隔时可以利用已经计算好的人声概率重新生成候选区间不必重复运行模型。应用裁切时还要遵循编辑器已有的轨道规则主画面与原声保持同步其他轨道是否跟随移动由波纹编辑模式决定锁定轨道受到保护字幕和音频的关联关系需要保留原始媒体不被覆盖操作可以撤销。如果整段素材没有检测到人声也不会将其整段自动删除。8. 模型需要下载视频不需要上传分析这个功能在浏览器本地完成音轨处理和模型推理。模型文件通过自有 Hugging Face 与 ModelScope 镜像分发固定版本并保留许可证与来源说明。不同下载来源使用统一的缓存身份减少同一模型被重复存储。两者的职责是模型托管平台提供模型文件 用户浏览器读取媒体、解码音频、执行推理、生成剪辑方案因此用户不需要为了停顿检测把整段视频上传到远程推理服务器。不过本地运行仍然会消耗设备的计算资源和内存实际速度也取决于浏览器、硬件和素材的解码情况。9. 一个小模型也需要完整的编辑流程实现这个功能之后我发现模型推理只是其中一部分。真正决定体验的是检测结果能否试听、参数调整是否及时、音画是否同步以及错误能否取消和恢复。对于停顿裁切比较合适的分工是模型寻找人声边界规则生成候选方案编辑器可靠地执行用户保留内容判断权。项目源码和在线体验GitHubTimeline Studio在线体验Timeline Studio 视频编辑器
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。