束搜索是一种用于语音识别的解码算法,旨在高效地从音频输入中找到最有可能的词语序列。语音识别系统会生成许多可能的词语序列,每个序列都由神经网络或统计模型赋予一个概率。评估所有可能的序列在计算上是不可行的,因为序列的数量会随着句子长度呈指数级增长。束搜索通过在每一步跟踪有限数量的最佳候选序列(“束宽”)并剪除可能性较低的选项来解决此问题。这平衡了准确性和计算效率,使得系统能够在不进行穷举搜索的情况下近似最佳输出。
在实践中,束搜索通过迭代地扩展假设来工作。例如,考虑一个处理音频短语“play music by [unknown artist]”的系统。声学模型最初可能会建议“play music by”之后跟着“The Beatles”或“The Beagles”,它们的概率相似。在束宽为 3 的情况下,算法会保留这两种选项以及其他候选选项,例如“play music bee”。随着音频的展开,后续的上下文(例如,语言模型中“The Beatles”具有更高的概率)有助于解决歧义。Kaldi 或 ESPnet 等工具通常结合来自声学模型(将音频映射到音素或字符)和语言模型(预测词语序列)的分数来对假设进行排名。束搜索根据综合分数选择最佳候选,避免可能导致错误的局部贪心决策,例如过早地锁定在“bee”而不是“by”上。
开发人员根据系统要求调整束搜索。较小的束宽(例如 5-10)可以加速实时应用的推理,但可能会丢弃有效的假设。较大的束(例如 20-50)可以提高离线处理的准确性,但会增加内存和延迟。长度归一化等技术会调整分数以偏向更长的序列,从而对抗偏向较短输出的偏差。一些框架还在解码过程中集成了特定领域的语言模型,例如在临床 ASR 系统中优先考虑医学术语。虽然束搜索被广泛使用,但也存在贪心解码或加权有限状态传感器 (WFST) 等替代方案,但束搜索因其简单性和在平衡性能与资源限制方面的有效性而仍然受到欢迎。