一、要求
1.数据是16KHz采样的,需要降采样到8KHz后使用。
2.考虑选择12维MFCC+12维其差分共24维作为提取的特征
4.训练及识别,分别给出训练集和测试集的识别率。
5.任选一种识别方法(BP/RBF/GMM/DHMM/SVM/ADABOOST)实现识别任务。
6.能够读出和所提供数据库完全一样格式的数据,并给出识别结果显示,包括每一个数字的识别率和最终的平均识别率。
7.描述所进行的一切步骤细节。
二、特征提取
1.语料数据库分配
和上一个实验所使用的语料库一致,同样是分成两半,一般用来训练,一般用来测试。
本次试验我分别采取过以下几种方法来选择训练样本集和测试样本集。
① 取每个数字样本的前一半,例如数字1文件夹下面有280个样本,选择前面140额样本当作测试集。
② 每个数字文件夹下面有280个样本,每个人是10样本排列,每次分别取每个人前面5个样本当作训练集,后5个当作测试集。
③ 把每个数字下所有样本当作一个大集合,分别取出奇数命名的样本作为训练集,剩下的偶数命名的样本便充当测试集,或者取出偶数作为样本,奇数作为训练集。
总结发现: 除了第一种方法,其它两种方法种取样对最终识别率影响差别不是很大。第三种方法,取奇数命名的文件样本的识别率是这三种取法里面最高的,表明这种这法取得语音信号特征也是最全面的。
2.特征选取
在上一实验中浅要的分析了mfcc和lp特征对于单词识别的优劣,
所以在这个实验中考虑到鲁棒性问题就决定继续沿用这一特征来作为识别手段。
3.特征提取
1. 预滤波:考虑到接下来使用8KHz频率下采样,保留的将是0-4000Hz频率段的信息,本次实验使用了一个滤波器函数function x = pre_process(y,fs) ,滤波范围[300,3400]的带通滤波器对采集到的信号进行抗混叠滤波。将符合人耳和发声特性信息保留。
2. 下采样:由于matlab中melbank函数默认参数为8000Hz,所以为了不造成分帧过程中帧移时长错误,再不改变voicebox中函数默认参数前提下,实验中利用 x=downsample(x,2)将得到的16KHz信号降采样为8KHz采样率的语音信号。
3. 端点检测和归一化:首先将信号归一化x=x/max(abs(x))ÿ