我正在使用Speech将带有时间戳字的google api发送文本。示例:
{ "transcript": "okay so what ...(etc)...",
"words": [
{"startTime": "1.400s", "endTime": "1.800s", "word": "okay"},
{"startTime": "1.800s","endTime": "2.300s","word": "so"},
{"startTime": "2.300s,"endTime": "2.400s","word": "what"}]}
问题在于转录不是100%可靠的,需要人工干预才能纠正某些单词。在我的系统中,我将把这些单词放在TextArea
(html5)中,然后有人会更正文本,但我不想丢失单词的时间戳,最终可以插入新单词或现有单词可以在“令牌”之间删除。我考虑了两种方法:
第一个是跟踪每个keyDown
事件,并使用光标位置来知道用户在哪里插入或删除某些字符。
这种方法的问题是,我需要保留每个令牌的开始和结束位置的索引,并且对于每个插入/删除操作,我需要对整个列表进行平移,这将为我提供一个精确的算法。
第二种方法是对更正后的文本进行标记化,并以某种方式比较两个标记化的文本以合并单词的时间戳属性。
有人可以提供有关如何解决此问题的提示吗?