☰
FireRed-OpenStoryline ASR口播粗剪:自动去除口头禅,按时间戳精准切分口播视频
2026/9/28 20:32:33 网站建设 项目流程

FireRed-OpenStoryline ASR口播粗剪:自动去除口头禅,按时间戳精准切分口播视频

【免费下载链接】FireRed-OpenStorylineFireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language interaction, LLM-powered planning, and precise tool orchestration. It facilitates transparent, human-in-the-loop creation with reusable Style Skills for consistent, professional storytelling.项目地址: https://gitcode.com/gh_mirrors/fi/FireRed-OpenStoryline

FireRed-OpenStoryline 是一款 AI 视频剪辑 Agent,其中的ASR 口播粗剪(speech_rough_cut)功能能自动完成口播视频的一级剪辑:基于本地语音识别(ASR)拿到逐句时间戳,由大模型剔除"嗯、啊、然后、就是"这类口头禅与重复语句,再按毫秒级时间戳用 FFmpeg 精准切分片段,让 30 分钟口播快速变成干净利落的成片素材。

1. 为什么口播视频需要"粗剪"

口播、直播回放、课程录屏这类素材有一个通病:有效信息密度低。

  • ❌ 大量"嗯……"、"就是说"、"对吧"等口水词
  • ❌ 同一句话反复重述,"我们我们……"式口误
  • ❌ 长时间停顿、跑题空话
  • ❌ 手动逐帧拖音轨找切点,极其耗时

传统做法是人工在剪辑软件里听一遍、标记一遍、再逐刀切。而 OpenStoryline 的思路是:让机器听(ASR)、让大模型判断(LLM)、让 FFmpeg 执行(自动切割),人只负责验收。

2. 三步流水线:从原始口播到干净片段

口播粗剪并不是一个孤立功能,它依赖一条清晰的数据流:

镜头切分 → 本地 ASR 识别 → LLM 粗剪清洗 → FFmpeg 切分

2.1 第一步:本地 ASR 识别,拿到逐句时间戳

ASR 节点 asr_node.py 在本地调用 FunASR 的paraformer-zh模型(搭配 VAD 与标点模型),先对视频做降噪、提取 16k 单声道音频,然后输出带句子级时间戳的识别结果:

  • 每句话的text、start、end
  • 更细的字级timestamp数组——这是后面"精准切分"的关键

整个识别在本地完成,无需上传,口播内容隐私有保障。

2.2 第二步:LLM 逐句清洗,三种操作

粗剪的核心在 speech_rough_cut.py,它对每句 ASR 文本调用大模型,提示词规则定义在 prompts/tasks/speech_rough_cut/zh/system.md,支持三种操作:

操作触发条件处理方式
整句删除纯口水词(嗯/啊/然后/就是)、无意义空话、与上下文重复直接丢弃,不产生片段
首尾修剪句首/句尾有语气词或赘词仅调整start或end,不拆分
中间删除即拆分删除了句子中间的内容剩余部分必须拆成多个独立片段

以提示词中的真实示例(system.md)来看:

  • 输入"啊今天我们讲OpenStoryline。"→ 删掉开头"啊",起始时间从 940ms 校正到 1080ms
  • 输入"我觉得这个东西啊其实很好用"→ 中间的"啊"被删,句子拆成"我觉得这个东西"和"其实很好用"两段
  • 输入"嗯,这个就是这样。"→ 整句删除,输出空列表

同时规则中反复强调谨慎删除:任何有信息量的句子都不能删,用户诉求(user_request)拥有第一优先级。

2.3 第三步:时间戳对齐 + 按间隙分组 + FFmpeg 切分

LLM 给出的不是随意时间,而是强制基于字级 timestamp 数组计算:

片段start= 片段第一个字的时间,片段end= 片段最后一个字的时间

随后 group_sentences 按间隙阈值(默认 400ms)把相邻句子合并成片段:停顿不超过 400ms 的句子归为一组,超过则切一刀。最后调用 FFmpeg 把原视频切分成speech_rough_cut_0000.mp4、speech_rough_cut_0001.mp4……输出到会话目录。

2.4 隐藏细节:时间戳"重新校准"

删掉中间片段后,后面所有句子的原始时间戳都会"对不上号"。calibrate_asr_times 会计算所有被删除区间的时长,用前缀和的方式把每条时间戳平移到切分后的新坐标系里——这保证了下游字幕、卡点等步骤依然精准。

3. 如何控制粗剪行为

该节点的输入定义在 node_schema.py,两个可调参数即可覆盖大多数场景:

  • gap_threshold(默认 400ms):句子间停顿超过该值就切分。口播节奏快可调小,慢节奏讲解可调大
  • user_request:自然语言诉求,例如"希望每段不超过 10 秒"、"在自然停顿处切分"。留空则系统按通用剪辑原则自行决策

由于支持意图干预,粗剪完成后你还可以追加一句"第二段切早了一点,重新切",Agent 会定位重跑而无需从头开始。

4. 粗剪结果如何进入成片

切好的片段并非终点。在时间线节点 plan_timeline_pro.py 中,口播粗剪走专属分支(is_speech_rough_cut=True):

  • 不再叠加 TTS 旁白(口播本身就是声音)
  • 直接采用粗剪输出的起始时间与时长排布时间线,不二次调整
  • 保证"你听到的每一句话"与"画面对应的片段"严格一致

这正是口播类视频与混剪类视频在流水线上的关键区别。

5. 相关模块速查

模块说明
speech_rough_cut.py粗剪节点主逻辑:LLM 清洗、分组、切分、时间校准
asr_node.py本地 FunASR 识别与音频预处理
system.mdLLM 清洗规则与拆分逻辑定义
user.md用户提示词模板(当前句 + 前后上下文 + 全文)
node_schema.py节点输入参数(gap_threshold / user_request)
ffmpeg_utils.py视频切分底层工具
plan_timeline_pro.py口播粗剪的时间线编排分支

6. 小结

FireRed-OpenStoryline 的 ASR 口播粗剪把"听一遍、标一遍、切一遍"的苦力活变成了三步自动流水线:本地 ASR 提供毫秒级时间戳,大模型按规则剔除口头禅并拆分语句,FFmpeg 完成精准切分,最后自动校准时间戳无缝衔接后续剪辑。对口播创作者来说,它等于一位永不下班的粗剪助理——素材进来,干净片段出去。

【免费下载链接】FireRed-OpenStorylineFireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language interaction, LLM-powered planning, and precise tool orchestration. It facilitates transparent, human-in-the-loop creation with reusable Style Skills for consistent, professional storytelling.项目地址: https://gitcode.com/gh_mirrors/fi/FireRed-OpenStoryline

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询