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

时间:2016-06-21 14:45:03

标签: tensorflow language-model

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

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

1 个答案:

答案 0 :(得分:5)

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

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

通过这样做,您的BeamScorer实现可以使用您手头的任何语言模型,只需在将光束从一个状态扩展到另一个状态时返回相应的分数。