如何将Azure语音转文本display字段词汇映射至对应时间戳
如何将Azure语音转文本display字段的词汇映射到对应时间戳
Azure语音转文本的输出中,nBest(对应你提到的combinedRecognizedPhrases)包含格式化后的display字段,但词级时间戳仅存储在words数组中,且words的内容与未格式化的lexical字段一一对应。要实现display词汇到时间戳的映射,核心是对齐两者的词汇对应关系,具体步骤如下:
核心逻辑
display是lexical经过大小写修正、标点添加、词汇合并(比如把dot com转为.com,live streaming转为livestreaming)后的格式化结果,我们需要通过匹配两者的词汇单元,将words中的时间戳迁移到display的对应内容上。
具体实现步骤
- 拆分
lexical为空格分隔的词汇列表,这个列表的顺序和words数组的顺序完全一致,可直接一一绑定时间戳。 - 解析
display的内容,识别其中的格式化单元:- 大小写修正:比如
lexical里的youtube对应display里的Youtube,直接通过小写归一化匹配。 - 标点符号:
display里的句号、逗号、问号等是额外添加的,无对应时间戳,直接跳过。 - 词汇合并:比如
lexical里的dot com slash对应display里的.com/,这类合并单元的时间戳取第一个词的起始时间,到最后一个词的结束时间(起始时间+时长)。 - 特殊格式:比如
lexical里的's、D等,直接匹配display里的对应内容即可。
- 大小写修正:比如
- 遍历
display的内容,逐个匹配对应的lexical词汇组,提取对应的时间戳范围。
示例映射演示
以你提供的输出片段为例:
lexical中的youtube dot com slash对应display里的Youtube.com/,时间戳取youtube的起始时间PT1M41.29S,到slash的结束时间PT1M42.02S(PT1M41.29S + PT0.73S)。lexical中的live streaming对应display里的livestreaming,时间戳取live的起始时间PT1M44.99S,到streaming的结束时间PT1M45.80S(PT1M45.25S + PT0.55S)。lexical中的i对应display里的I,直接复用i的时间戳。
注意事项
- 若
display存在无对应lexical的内容(如额外标点),无需为其分配时间戳。 - 对于模糊匹配场景,优先使用小写归一化后再匹配,提升准确率。
- 复杂合并场景可借助最长公共子序列等字符串匹配算法辅助对齐。
内容的提问来源于stack exchange,提问作者Franck Dernoncourt
相关产品推荐
相关产品推荐

