在 TensorFlow CTC(语言模型)中使用自定义光束评分器

Using custom beam scorer in TensorFlow CTC (language model)

是否可以从 Python 端自定义 TensorFlow CTC 实施中的波束评分器?我在 CTCBeamSearchDecoder C++ class 构造函数的评论中看到了这种可能性,但想知道如何为 Python 用户提供此功能?

我们遇到的具体问题是将语言模型插入基于 CTC 的语音解码器。语言模型可以是预训练的 TensorFlow 子图,能够输出波束分数调整的概率。但我们需要一种方法将其注入光束得分器。

Python 目前没有 API 可以将语言模型与自定义记分器一起使用。欢迎贡献,但在 Python API 中实现这一点存在一些困难,因为它需要 运行 在解码器操作内的独立会话中设置 TF LM 子图,并且这些不会很好地融合在一起。

最简单的方法是在 C++ 中,并且需要扩展 BaseBeamScorer class 和 BeamState(类似于在测试中可以看到的)以及进一步 运行 CTCBeamSearchDecoder::Decode在通常进入 ctc_beam_search_decoder op.

的张量流图的输出之上

通过这样做,您的 BeamScorer 实现可以利用您手头的任何语言模型,并且在将波束从一种状态扩展到另一种状态时只需要 return 适当的分数。