用途与实际影响
这项功能怎样使用
为什么需要它
一段过长的声音可能超过模型能一次处理的范围,随意切开又会断句或漏掉交界。逐段记录时间和完成状态,才能从中断处可靠继续。
举个实际例子
比如我说“把这段两小时录音从中断处接着跑”。假设第 17 段失败,系统会保留前面已经通过和后续已成功的片段;修复原因后,它认准同一录音与配置,只补失效片段,再重新生成整体正文与覆盖证据,不把旧配置的片段混进来。
最后我会得到什么
交回连续录音哪些时间段已经完成、哪些还缺,及可以阅读的合并正文。只有时间覆盖和各段身份都核对完,才称整段完成。
正常时
每段都属于同一录音和设置、时间没有空洞时,交回完整合并结果。
发现问题时
个别段失败时保留其余成功内容和缺口,整段仍标为部分完成。
入口不可用或证据不足时
原音、时长或旧分段身份对不上时不拿旧结果拼接,先恢复正确任务。
从哪里开始
提交长录音或明确文件夹,要求连续转写或批量处理。
需要准备什么
- 要处理的长录音或文件夹范围
- 是否需要连续时间线与重要复核
从开始到拿到结果
- 1
系统核对并处理
按原音时间连续分段,在同一身份下复用已验片段;坏文件单独记录,不拖掉其他完成结果。
- 2
交付与接续
交回完成、漏段、失败和待续范围;一篇拼接长文不充当覆盖证明。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
VAD(语音活动检测) 边界、局部恢复与逐文件隔离已实现;来源已验 42 秒两片,未以此宣称两小时质量通过关键规则与设计选择
续跑前验证输入、模型和分段计划是否相同。
分段必须从 0 连续覆盖到音频结束。
局部失败不会被整体成功状态吞掉。
批量共享模型,不共享文件结果和错误。
聚合负向结论要求所有 child 证据都闭合。
本模块用到的名词
- chunk
- 长音频中的连续时间区间,带开始、结束和输入身份。
- overlap(重叠)
- 相邻分段共享的一小段音频,用于减少切断语句;聚合时必须去重。
- manifest
- 分段计划、状态、模型与输出的唯一恢复清单。
- partial(部分完成)
- 有可用分段,但整体覆盖或证据未闭合。
专业定义
长录音切成连续片段稳稳跑完并支持断点续作;批量转写复用已加载模型,但每个文件各算各的,坏一个不拖垮整批。
解决什么
解决模型时长上限、长任务中断重做、切片交界漏字、旧分段错复用、批量重复加载模型,以及单个文件失败拖垮整个批次的问题。
当前怎样实现
- long_audio.py 按 VAD(语音活动检测) 附近边界形成连续时间线;general quality 默认最长 60 秒、最短 20 秒、边界搜索 5 秒,FireRed 建议 35 秒、硬上限 40 秒且包含重叠,不删掉未检测到语音的原区间。
- arbitration.py 聚合双模型结果与分段风险。
- batch.py 复用 Qwen 批量输入能力并隔离失败项;短音频正常批处理,长文件转可恢复分段,坏文件不会吞掉邻居结果。
- chunk overlap 可配置,但覆盖与边界必须进入结果证据。
- 复用绑定输入、模型锁、代码、配置与调用身份;单引擎失败保留 provisional 内容,但不作为完整 strict 缓存。只在文本与重叠音频时间共同支持时去重,不删除真实重复说话。
执行流程
- 1
读取音频总时长和目标模型上限。
- 2
生成连续 chunk 与必要 overlap。
- 3
写入任务 manifest(清单) 和每段预期身份。
- 4
按顺序或受控队列运行每段主/对照引擎。
- 5
失败时记录分段终态,不删除已完成内容。
- 6
续跑时验证旧制品后只补缺失段。
- 7
重新仲裁并检查 0 到结尾覆盖。
边界
- 断点续跑只接受同一输入和配置身份。
- 成功分段不自动让整体任务变成成功。
- 重叠区不应在最终正文中重复。
- 批量模型复用不允许一个文件读取另一个文件的私人正文。
失败与恢复
- 某个 chunk 模型失败
- 保留其他段,标出时间区间和引擎错误,整体降为 partial。
- manifest(清单) 与当前输入不一致
- 拒绝复用旧段,防止把另一文件或旧模型结果拼入。
- 时间线出现 gap 或越界
- 客观覆盖验证失败,不得输出 no_speech_detected 或完整成功。
- 批量中的一个文件损坏
- 该文件单独失败,其余文件继续并保留独立结果。
真实入口
E:\Projects\Tools\ChineseASR\src\zh_asr\long_audio.py分段、manifest(清单)、续跑和覆盖
E:\Projects\Tools\ChineseASR\src\zh_asr\arbitration.py分段和双模型仲裁
E:\Projects\Tools\ChineseASR\src\zh_asr\batch.py批量模型复用与逐文件隔离
E:\Projects\Tools\ChineseASR\scripts\transcribe-folder.ps1Windows 文件夹批量入口
E:\Projects\Tools\ChineseASR\tests\test_long_audio.py长音频边界、恢复和覆盖回归
如何验证
- long_audio、arbitration、batch 进入2026-08-31 的 345 项通过的全量单测。
- 覆盖验证测试包含 gap、overlap、子证据和旧 manifest(清单) 身份场景。
- 9 月 17 日来源 42 秒两切片 FireRed+Qwen、Qwen 对齐与正常 API 有真实公开音频验收;旧四切片结果保留历史,长篇个人录音与准确率仍未由本轮验证。
与其他模块的关系
本模块复用入口模块的 job(任务记录) 和模型模块的 profile;最终分段结果必须交给审计证据模块,涉及说话人时再交给归属模块。
