声学模型主要用于计算语音特征和每个发音模板之间的似然度。目的是为每个声学单元建立一套模型参数(通过不断地学习和改进得到最优的,也就是概率最大的一组HMM模型参数)。
需要训练的情况:
1)需要创建一个新的语音或者方言的模型;
2)为你的小词汇的应用创建一个特定的模型;
3)你有足够的大量的语音数据:单的人的话(控制指令)需要1小时的录音,200个人的话需要50小时的录音。
4)你需要有语言的音素结构的知识;
5)你有足够的时间去训练和优化(大概需要一个月)。
如果不具备以上的情况或者条件,那么用模型增强(适应)比训练一个新的模型更有效。
另外,你的语音数据库应该能够比较好地代表你所要识别的语音,而且最好是多个人的录音数据,而且包含多种录音情况,还有所有可能的语言学句子。语音数据库包含两个部分:训练集和测试集,一般来说,测试集占全部数据库的1/10,但最好不要超过4个小时的录音时长。
获得一个语音数据库的一个比较好的方式是:
1)对现有的你需要识别的语音的录音材料进行切割,例如新闻或者电台播音等;
2)把你身边的人,例如家人,朋友或者同事的语音录下来;
3)在voxforge上面收集;
SphinxTrain是CMU大学开发的开源声学模型训练器。此工具可以训练适应于PocketSphinx的半连续HMM声学模型,也可以训练应用于Sphinx3的连续HMM声学模型。
(1)需要准备的文件:
在进行训练之前,先通过SphinxTrain中的wave2feat文件对音频文件进行特征提取,得到的MFCC特征参数文件,并把它们作为声学模型训练的输入。在进行训练之前,需要建立如下准备文件:
分别创建两个目录etc和wav,然后在两个目录下面制作一些数据文件,方便后面训练时使用。待会需要的目录及文件如下所示:
etc:
your_db.dic - Phonetic dictionary
your_db.phone – Phone set file
your_db.lm.DMP - Language model
your_db.filler - List of fillers
your_db_train.fileids - List of files for training
your_db_train.transcription - Transcription for training
your_db_test.fileids - List of files for testing
<