如果你没有足够的数据去训练自己的声学模型,那么做自适应训练会比自己直接训练新的声学模型更好,5分钟的自适应语音就可以达到很好的效果,这是官方维基教程指出的,在谷歌上搜 spinx4 adapt 就可以找到wiki教程,如果你打不开这个网页,那就用代理翻墙,我就是这么干的。
sphinx4和pocketsphinx的自适应训练有一些地方会有所不同,这是因为pocektsphinx的声学模型是半连续的,而sphinx4的声学模型是连续的。
做自适应训练的语料最理想的是包含你要识别的大部分音素单元,即包含的音素要丰富。做自适应训练所要的有:句子列表,描述句子列表当中单词发音的词典,与句子对于的语音数据。这里要注意的是语音数据的采样率必须是16KHz,单声道。接下来就开始制作自适应模型,在这之前确保已经编译了sphinxBase和sphinxTrain。
首先把已有的声学模型拷贝到当前的工作路径下,用sphinxBase的sphinx_fe 工具提取语音数据的声学模型特征数据,第二步用sphinxTrain当中的bw工具从自适应数据当中收集统计数据。bw命令中的参数应该和feat.params文件中的参数匹配,并且bw也不是完全支持此文件当中的参数,不支持的就跳过就可以了。第三步,收集完统计数据之后,就可以用MLLR方法或者MAP方法更新声学模型了,这是两个不同的方法,对应的工具是mllr_solve 和map_adapt ,通过这两个工具之后的声学模型就是自适应声学模型了,这样声学模型就大功告成了,接下来要做的就是测试了。