我正在开发 ASR 应用程序,虽然我知道使用 VAD 或质量更好的音频只能在一定程度上最大限度地减少幻觉,但转录中仍然存在错误的空间。我使用 Seamless M4T Large-V2 进行转录。我正在考虑在这种情况下做最后的努力,那就是对输出文本进行字符串操作。是可能吗?例如对于本文,
“我身体不太好,我想我不会去,我不会去,我不会去,我不会去,我不会去,我不会去,我不会去。也许明天.. .”
我尝试过使用正则表达式,但它只查找连续重复的单词,我正在考虑有一个可变长度缓冲区,它将检测重复出现的序列,无论长度如何(或者也许我可以指定缓冲区的长度) .
我可能有一个可行的想法,但也许有一些我没有看到的边缘情况。
首先,您可以尝试为文本构建一个图表,其中每个单词都是一个节点。然后,如果您在文本中获得序列“word_A word_B”,则添加从 word_A 到 word_B 的有向边。如果这条边已经存在,您可以将权重加 1。
然后您可以使用 DFS 等算法来查找循环。 对于每个周期,您都会获取相关的单词序列,并尝试查找该序列是否有任何连续的重复。例如,如果找到了循环“word_A word_B”(这意味着至少出现了一次“word_A word_B word_A”),您可以尝试查看该序列在文本中是否与其自身相邻。
您可以对权重进行一些修改,并根据循环中的最高权重(重复次数最多的循环)对循环进行排序,以快速找到重复次数最多的循环,或者仅考虑所有边上具有相似权重的循环。这将防止在一个序列中经常使用 2 个单词(A 然后 B)的情况,并且碰巧您出现了一次“A B A”,从而创建了一个循环。
无论如何,我有兴趣看看这是否有效,请随时通知我,祝你好运!