研究生语音识别课程作业记录(二) 非特定人孤立词识别

研究生语音识别课程作业记录(二) 非特定人孤立词识别

  • 前言
  • 一. 任务要求
  • 二. 识别方法
  • 三. 语音数据库
  • 四. 特征参数提取
  • 五. 识别过程及分析
  • 六. 小结

前言

研究生期间的语音识别课程作业记录,研一暑假的主要工作,也是自己正式入门语音识别的启程之路,虽然是采用传统方法进行语音识别的工程仿真,但对于一个新手菜鸟来说,这样的训练必不可少,借此机会记录一下,希望可以对刚入门语音识别的小白提供一点开拓的思路。

一. 任务要求

提供声音文件: 0-9的数字孤立词读音文件库,共28人录音样本,每人10次, 手工分割存档。

任务完成建议和要求:

1.数据是16KHz采样的, 一般需要降采样到8KHz后使用。(Matlab中有相应的命令), 如果直接使用16KHz的数据,应用MFCC时的子带数需要调整, 不能用缺省。

2.可以考虑选择12维MFCC+12维其差分共24维作为提取的特征。

3.可以考虑其他的特征, 例如LPC、LPCC、LSP等等,自己研究后决定。

4.训练及识别(一半的数据用于训练(训练集), 一半的数据用于识别(测试集)), 分别给出训练集和测试集的识别率. 特别提醒,任务的目标是非特定人的孤立词识别,因此,建议自己查一下中国期刊网, 研究一下中文期刊的文章,其他学者对非特定人的特征选择是如何优化的,可以借用别人的思路进行特征提取选择。

5.必须用VQ+DTW方法和自己任选一种识别方法(BP/RBF/GMM/DHMM/SVM/ADABOOST)实现识别任务。

6.用doc文档 描述所进行的一切步骤细节,包括预滤波,分帧加窗(海明窗),特征选择和识别机的参数选择过程(必须给出所有的相关细节参数), 给出实验结果(包括研究的中间过程结果即调整参数前后的实验结果,所有的实验结果需要贴图到doc文档中,不要贴程序),给出结论。 还有必须对实验结果及过程中出现的问题和给出的解决方案进行描述和讨论。

7.提交程序要求: 能够读出和所提供数据库完全一样格式的数据,并给出识别结果显示,包括每一个数字的识别率和最终的平均识别率。

8.将来用于评测所提交作业的数据库独立于目前提供的数据库。

二. 识别方法

BP和RBF

三. 语音数据库

1,一个命名为0-9 digital C的文件夹里面digital文件中存有0-9九个子文件夹,分别存放0到9的数字的录音文件,其中每个子文件夹内有28个人x10个音=280个语音。总计280*10个数字=2800个语音。

2,所有语音统一为16K采样率,16位,单声道,coolEditor软件录制生成, 手工分割。每个人每个数字录取10段语音, 数据命名说明:ij.wav表示第i个人的第j个样本。

3,在本次试验中,取每个数字每个人的取五段语音(共1400段)作为训练集,另五段语音(共1400段)作为测试集,不同的识别方法对不同的训练集和测试集有着不一样的识别率,所以应根据识别率来给每种识别方法调整测试与训练的样本。

4,分别通过不同的识别方法对不同的函数中的参数进行调整,然后进行训练,测试,最终得出训练及测试的最佳识别率。

四. 特征参数提取

1,本文提取12维MFCC+12维其差分共24维作为提取的特征,首先让每段语音信号通过双门限端点检测函数(edgedetection)获得有效语音段,再通过分帧函数(enframe)得到语音帧数。

2,并对每一帧进行预加重,加窗(海明窗),fft,计算幅度谱的平方通过mel滤波器组每一个滤波器的加权输出和,取对数,再经DCT变换,得到12维的MFCC,然后计算12维其差分MFCC,合并组成24维MFCC。

3,本文未采取LPCC系数作为特征提取是因为:LPCC系数主要是模拟人的发声模型,不如MFCC,它未考虑人耳的听觉特性,进行平均分段, 它对元音有较好的描述能力,对辅音描述能力及抗噪性能比较差,其优点是计算量小,易于实现。

4,本文选择两种样本选择方法,两种分类方法分别适应不同的方法的最佳识别率:

a:训练集:每个数字每人的前五段语音;测试集:每个数字每人的后五段语音。

b: 训练集:每个数字每人的五段偶数序语音;测试集:每个数字每人的五段奇数序语音。

五. 识别过程及分析

A,BP

BP(Back Propagation)网络是一种按误差逆传播算法训练的多层前馈网络。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。

1,分别创建训练和测试索引文件名目录TrainIndexs和TestIndexs,按索引依次读入语音,通过双门限端点检测函数,加窗(海明窗)分帧函数,提取每段语音的MFCC参数矩阵train_m和test_m(10x140),再通过规整函数(transform)将所有语音特征规整到N帧,构造实验所需的特征矩阵,保存为训练集train_vector((Nx24)x1400)、测试集test_vector((Nx24)x1400)、目标集t_vector(10x1400)。

2,载入数据,运用BP神经网络方法,通过调整隐节点数,最大训练循环次数,目标误差等,得到最佳识别结果如下:本实验采用b训练集(偶五奇五),因为a训练集测试的最高识别率仅为94.30%)
研究生语音识别课程作业记录(二) 非特定人孤立词识别_第1张图片
b:训练集:每个数字每人的五段偶数序语音 测试集:每个数字每人的五段奇数序语音

3,参数调整实验:规整的帧数N和隐层节点数(神经元个数)
研究生语音识别课程作业记录(二) 非特定人孤立词识别_第2张图片
表一:BP中规整不同帧数对识别率的影响

由表三可知,规整的帧数从1开始识别率不断上升,当规整N=5之后识别率又开始回落,始终达不到94%,因此择N=5为BP的最佳规整帧数。

研究生语音识别课程作业记录(二) 非特定人孤立词识别_第3张图片
表二:BP中不同神经元个数对谁别率的影响

综上两表,可知在N=5时,BP的识别率最佳,通过调整隐节点数,得到神经元个数为75时最高识别率达到95%,因此选取的两个参数为N=5,隐节点=75。

B,RBF

RBF网络,即径向基神经网络,是前馈网络的一种。它由三层网络结构组成,除了输入输出层还有一个隐层。RBF可以以任意精度逼近任意连续函数,且隐层中的神经元越多,逼近越精确。关于隐层神经元的个数,网络会从0个神经元开始训练,通过检查输出误差使网络自动增加神经元。每次迭代使用,迭代直到误差满足要求。因此RBF网络具有结构自适应,输出与初始权值无关的特性。

1,训练样本和模板的方法如BP所述;

2,载入数据,运用RBF方法(默认为b训练集),通过调整分布密度spread参数值,得到最佳识别结果如下:
spread =46
研究生语音识别课程作业记录(二) 非特定人孤立词识别_第4张图片
spread = 55
研究生语音识别课程作业记录(二) 非特定人孤立词识别_第5张图片

3,在RBF中,影响识别率的最关键参数就是分布密度spread,调整参数实验结果如下图所示:
研究生语音识别课程作业记录(二) 非特定人孤立词识别_第6张图片
表三:RBF中分布密度参数对识别率的影响

分析:由实验可知,在分布密度的参数spread=46时识别效果最好,此时需要的神经元个数为775:,匹配时间为:476 s,训练集最高识别率达到100%,测试集最高识别率:98.36%。

比较BP和RBF两种方法,发现虽然BP的训练时间很很短,但是数据压缩过损,识别率比不上RBF,而且BP的识别过程中识别率是变化中的,因为它是反向传播,在中间众多的节点中偏差是累计的,因此识别过程并不稳定,而RBF识别时具有自学习,自适应,自组织的特性,而且其神经元个数是BP的将近十倍,因此运算量也就大许多,识别率也就随之上升,因此在非特定人语音识别中,RBF要优于BP。.

六. 小结

研一的课程作业好多思路都还比较简单稚嫩,但也确实是付出了时间心血,希望未来自己在接下里的日子里,继续努力,继续学习,在语音信号处理方向不断精进!

本系列文章列表如下:
研究生语音识别课程作业记录(一) 非特定人孤立词识别
研究生语音识别课程作业记录(二) 非特定人孤立词识别
研究生语音识别课程作业记录(三) 非特定人孤立词识别

你可能感兴趣的:(语音识别,语音识别,MATLAB,BP,RBF,非特定人孤立词识别)