把 ASR 词级时间戳合成句子,怎样保留每句话对应的原始词
把词级转写合成句子后,只留下句文本和起止时间,会丢掉句子与原词的关系。后续改标点、校对或定位跳转时,很难确认哪几个词被合并。应保留每句的原词索引范围,让合并过程可逆向追踪。
分句规则由应用明确
本文输入是手工构造的词表,每项有文本、start 和 end,单位为秒。先检查 start 不大于 end、数值有限且词序时间不倒退。分句条件是遇句末标点或相邻词停顿至少零点六秒;阈值只是演示参数,不是 ASR 官方默认行为。
索引使用半开区间:word_start 包含、word_end 不包含。句子时间取本句第一个词起点和最后一个词终点,不重新猜单词时间。最后一个词没有标点也要收尾,不能因为没触发规则而把末句丢掉。
覆盖检查比看文本更可靠
附件六个合成词按规则形成三句,每句保存原词索引、文本与时间。检查器将所有句段索引展开,必须恰好等于零到词数减一的有序列表;任何漏词、重复或交换都应失败。再检查句段时间包含其每个词区间,并核对文本来自对应原词拼接。
失败反例是相邻两句都把边界词算进去。看起来句子都完整,原词却被重复使用。另一个反例是只在遇标点时输出,最后无标点片段消失。附件单独构造无末尾标点与错误边界对照,防止完整主例碰巧掩盖收尾缺陷。
不把词表来源与合并结果混淆
这些时间戳不是模型实测,不对应真实录音;合并通过只能证明引用覆盖和时间范围一致。原词如果识别错或时间本来偏移,句段仍会继承错误。后续人工修词时应保留原词版本与修改记录,不能让新句文本继续引用已改变的旧索引。
OpenAI 官方音频文档对词级时间戳参数的模型支持有具体限制,本篇只消费已有词表,不提供旧模型新接入建议。任何 API 参数和弃用窗口都应在真实使用前重核,不能由本文的离线结构推导账号可用性。
实际多说话人或重叠语音可能不满足本例的单一时间顺序,需要按说话人或轨道建立独立合同,再决定如何展示重叠。不要为了满足线性校验把重叠词强行排序而丢失语义。本文不生成字幕文件,也不声称有语音对齐精度,交付的是从词到句的可追溯关系与明确边界。
配套文件与依据
本文的合成输入和参考结果可下载独立样本 a043.json,离线检查器 a043.py与样本放在同一目录后运行。检查器不调用模型接口。 使用 Python 3.12 或兼容版本,将上述文件下载到同一目录,执行 python a043.py。
一手资料1。资料核对日期:2026-10-24。
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。