语音识别分为训练和识别两个过程,训练包含声学模型的训练和语言模型的训练,识别就是大家说的那个过程。通常会通过麦克风来获取音频,这部分一般是系统函数调用获取得到音频数据,一般系统采用16k采样率,16bits,单通道的音频。当然也可能会用到高采样率等,但对于识别来说已经足够。获取音频后通过特征提取得到特征向量或者矩阵,特征经过声学模型跟语言模型等作用得到我们想要的文本。

kaldi里的在线识别有2个版本,online跟online2.online是很早的一些版本,通过麦克风获取数据,然后得到文本结果,但只支持gmm的模型;online2版本没有麦克风获取数据这部分,就直接是音频文件到识别结果,这里支持nnet2跟nnet3的模型。具体有下面几个链接,大家可以参考:

  1. kaldi官网关于online的介绍:

    http://kaldi-asr.org/doc/online_programs.html

  2. kaldi官网关于online2的介绍:

    http://kaldi-asr.org/doc/online_decoding.html

  3. 因为kaldi有开源的英文模型,所以大家如果做英文识别,可以基于此来搭建一个demo,此外,这个链接还可以扩展词典,构图啥的,用kaldi来做英文识别的不要错过:

    https://chrisearch.wordpress.com/2017/03/11/speech-recognition-using-kaldi-extending-and-using-the-aspire-model/

  4. 此外,kaldi群里有一个同学使用thcs30来搭建了一个中文的demo,使用的是online版本,但由于数据的原因,识别效果就不够好:

    http://blog.csdn.net/lijin6249/article/details/51838936


最后提醒大家的是,目前kaldi的解码器想要工业界使用,应该还需要自己改写代码。如果是一个简单的demo,完全可以用。


如果大家有什么问题,欢迎大家在下方评论。