让 AI 折叠 CTC 路径:空白先删掉,两个相同字就可能少一个

前天 3阅读

语音或手写识别的一帧输出,不一定对应最终文字里的一个字。CTC把较长路径映射成较短标签时,会处理连续重复与特殊空白。让AI制作几张路径卡,可以把“重复出现”和“连续重复”这两个意思分开。

让 AI 折叠 CTC 路径:空白先删掉,两个相同字就可能少一个

AI模型生成的概念插图:空白间隔把两段重复符号分开,折叠后仍保留两个位置;不代表软件截图、真实实验或精确数据图。

先处理相邻重复,再移去空白

用A代表一个标签,符号∅代表CTC空白。路径[A,A,∅,A]先把连续相同符号折叠成[A,∅,A],再移去空白,得到[A,A]。中间的空白把两次A隔开,表示两个标签位置。

如果先删空白,原路径会变成[A,A,A],再合并就只剩[A],结果错了一位。对照路径[A,A,A]确实只应得到[A];而[A,∅,A]应得到[A,A]。这里的空白是特殊对齐符号,不能直接解释成文字里的空格字符。

因此若目标是两个连续的A,至少需要三个时间位置来容纳[A,∅,A]。两个时间位置只能给出[A,A]这一原始重复路径,它会折叠成单个A。这不是让模型多复制一次字符就能补上的问题。

多条路径可以通向同一个结果

再做一个只有两帧的概率练习,每帧都令P(∅)=0.6、P(A)=0.4,并按CTC路径乘积规则计算。四条路径依次为[∅,∅]概率0.36、[∅,A]概率0.24、[A,∅]概率0.24、[A,A]概率0.16,总和是1。

第一条折叠成空标签串;其余三条都折叠成[A]。于是最终空串概率为0.36,标签A的概率为0.24+0.24+0.16=0.64。原始论文将一个标签序列的概率定义为所有对应路径概率之和,这个多对一映射不能靠挑一条路径替代。

每帧直接取最高概率符号会选[∅,∅],也就是概率最高的单条路径,却输出空串;本例概率更高的最终标签反而是A。练习规模很小,可以穷举确认;真实长序列的路径数量增长很快,需要相应解码算法。

要求AI把路径和输出分两栏

可用提示词:“按先合并连续重复、再删CTC空白的顺序处理[A,A,∅,A]、[A,A,A]、[A,∅,A]。然后枚举两帧、每帧空白0.6和A 0.4的全部路径,列路径概率与折叠输出,按输出求和。区分最可能单路径与最可能标签,并说明为什么两帧无法得到AA。”

验收先看四条路径是否完整、概率和是否为1,再检查聚合后仍然为1。不要把不同路径的概率取平均,也不要只保留第一次遇到的标签结果。本例只有一个普通标签,不涉及语言模型、词典或真实音频时间对齐,不能据此推断某个识别系统的准确率。

资料核对日期:2026年10月2日。数值为原创教学设定,已用独立Python计算复核,不代表真实模型性能测试。

参考资料

Graves等:CTC原始论文

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。