《数字语音处理》- 实验4. 基于MATLAB与VQ的特定人孤立词语音识别研究(附代码)

声明

本文仅在CSDN发布,其他均为盗版。请支持正版!

正版链接:
https://blog.csdn.net/meenr/article/details/117629850

MATLAB基于VQ的特定人孤立词语音识别研究

实验4 基于VQ的特定人孤立词语音识别研究

1. 实验目的及要求

本实验要求:按所学相关语音处理的知识,通过网上学习、资料查阅,借助MATLAB工具,自己设计基于VQ的码本训练程序和识别程序(尽量选用所学HMM或DTW方法设计识别程序),能识别特定人的语音,分析所设计系统的特性,写出实验报告(按一般科学论文的写作规范)。

2. 实验原理

2.1 特定人孤立词语音识别系统分析

一个完整特定人孤立词语音识别系统通常包括语音的输入,语音信号的预处理,特征提取,训练与识别等几个环节,基本构成如图4.1所示。

在这里插入图片描述

图2.1 孤立词语音识别系统框图

语音识别的过程可以被看作模式匹配的过程,模式匹配是指根据一定的准则,使未知 模式与模型库中的某一个模型获得最佳匹配的过程。模式匹配中需要用到的参考模板通过模板训练获得。在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,保存为模板库,在识别阶段,语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。同时,还可以在一些先验知识的帮助下,提高识别的准确率。

MATLAB软件对语音信号的处理和开发很久就已经开始了。现在matlab中已经存在各种比较好的开发工具箱。由于使用的版本不存在VOICEBOX工具箱。需要下载该工具箱并且添加到工具箱的相关文件夹里。本文的设计是在MATLAB中的GUI图形页面下完成的。通过在GUI中使用回调函数来实现信号的录音、信号处理、识别等工作。下图为总设计方案:

在这里插入图片描述

图2.2 语音识别软件设计方案

2.2 语音识别算法———高效的DTW算法

动态时间规整(DynamicTime Warping,DTW)是把时间规整和距离测度计算结合起来的一种非线性规整技术,解决了测试板与参考模板语音时间长度不等的问题。
在这里插入图片描述

图2.3 匹配路径约束示意图

通常,规整函数被限制在一个平行四边形的网格内,如图2.3所示。它的一条边斜率为2,另一条边斜率为1/2。规整函数的起点是(1,1),终点为(N,M)。DTW算法的目的是在此平行四边形内由起点到终点寻找一个规整函数,使其具有最小的代价函数, 保证了测试模板与参考模板之间具有最大的声学相似特性。由于在模板匹配过程中限定了弯折的斜率,因此平行四边形之外的格点对应的帧匹配距离是不需要计算的。另外,因为每一列各格点上的匹配计算只用到了前一列的3个网格,所以没有必要保存 所有的帧匹配距离矩阵和累积距离矩阵。充分利用这两个特点可以 减少计算量和存储空间的需求,形成一种高效的DTW算法,如图4.3所示。图4.3中,把实际的动态弯折分为三段,(1,xa),(xa+1, xb),(xb+1,N),其中:
在这里插入图片描述

xa和xb都取最相近的整数,由此可得出对M和N长度的限制条件:
在这里插入图片描述

当不满足以上条件时, 认为两者差别太大,则无法进行动态弯折匹配。在x轴上的每一帧不再需要与 y 轴上的每一帧进行比较,而只是与y轴上[ymin,ymax]间的帧进行比较,ymin和ymax的计算公式为:
在这里插入图片描述

在这里插入图片描述

如果出现xa>xb的情况,则弯折匹配的三段为(1,xb),(xb+1,xa),(xa+1,N)。对于x轴上每前进一帧,虽然所要比较的 y 轴上的帧数不同,但弯折特性是一样的, 累积距离的更新 都是用下式实现的:
在这里插入图片描述

3. 实验步骤

3.1 语音信号预处理

语音信号的预处理包括预滤波、采样和量化、加窗、预加重、端点检测等过程。由于语音信号在帧长为10ms~30ms之内是相对平稳的,同时为了便于计算FFT,本实验选取帧长N为256个语音点帧移M为128点。

汉明窗与矩形窗和汉宁窗相比具有最低旁瓣,可以有效地克服泄漏现象,具有更平滑的低通特性, 故 本文采用汉名窗对语音信号进行分帧处理。
ω(n)=0.54-0.46cos(2πn/(N-1)),0≤n≤N-1 (6)
预加重用具有6dB/倍频程的提升高频特性的一阶数字滤波器实现:

H(z)=1-0.9375×z-1

在这里插入图片描述

图3.1语音起点检测流程图

端点检测采用基于短时能量和短时平均过零率法,利用已知为“静态”的最初十帧信号为短时能量设置2个门限ampl和amph,以及过零率阀值zcr. 语音起始点从第11帧开始检测,流程图如图3.1。语音点的检测方法与检测起相似,但此时从后向前搜索。

对于待输入的语音信号机器是不能直接对其分析和理解,那么我们就要将待测的信号先数字化。一般而言,语音信号的预处理模块一般包括采样、预加重、分帧、加窗、端点检测等。信号的加窗分帧是在处理时必不可少的也是经常要用到的。总的来说,它就是把相关信号分段处理。端点检测是为排除噪声和无声频段的干扰,找出我们需要处理的有声语音部分。

在这里插入图片描述

图3.2 语音信号的数字化处理

下图为Mel倒谱系数(MFCC)的计算流程框图:

在这里插入图片描述

图3.3 MFCC计算流程图

3.2端点检测法的软件实现

资料表明,语音识别的识别率较低等原因可能都是来自端点检测,所以较为精准的确定起止点和终止点能够提高语音识别的精度。但是端点检测的时候通常会受到噪声、气息、音调等因素的影响。选用短时能量E和过零率ZCR一起的双门限条件来实现。一般包括四个阶段status0、status1、status2、status3。它们分别为静音段、过渡段、语音段以及结束段[]。

程序对应在userDataSet.m中标记语音信号的端点。此外这部分还包括一些语音处理的子程序。比如说endPointDetect.m就是音量和过零率的一个检测程序源代码。实验时需要调用 voicebox中的vad函数。再在matlab中输入程序。下图是数字1的训练语音的端点检测结果,程序开始运行后会依次显示上面录入的语音文档的波形,并且用红色的线标出语音端点。

在这里插入图片描述

图3.4 语音“1”的端点检测结果

3.3 特征参数提取及语音识别

研究表明,倒谱特征参数所含的信息量比其他参数多,能较好地表现语音信号。本文选取能够反映人对语音的感知特性的Mel频率倒谱系数(MFCC)作为特征参数,阶数为12。经过MFCC特征参数提取后,各帧语音信号就形成了一个个特征矢量。识别时,将待测语音与模板库中的每一个模板进行模式匹配, 找到距离最小的模板作为输出结果.通过对特定人孤立词语音特点的研究,在对语音信号进行预处理的过程中,选择过零率与短时平均能量两项指标作为对语音信号端点检测的依据,提取语音线性预测系数,通过计算分析后获得线性预测倒谱系数,作为语音特征参数。选择动态时间规整法为模板匹配算法,并针对传统匹配算法中计算量大的特点,作出改进,采用全局限制的方法以减小匹配过程中的计算量。采用上述算法设计了一种基于特定人的孤立词语音识别系统,并对该系统进行了多种背景条件下的Matlab仿真研究。仿真实验结果表明,此算法对于特点人孤立词的语音识别能达到较好的识别效果。

在这里插入图片描述

图3.5 倒谱特征的工作区变量值

4. 实验结果

仿真部分截图如图4.1所示:

在这里插入图片描述

图4.1

录制特定人发音数字“1~9”的两组语音,实验结果,中行表示数字“1~9”的标准模板,列表示数字“1~9”的测试语音,测试语音“1~9”均分别和模板库中的模板“1~9”有最小的距离(对角线上的值最小),因此具有较好的声学相似性,取得了较好的识别效果。

在这里插入图片描述

图4.2 高效DTW算法的测试模板与模板库的距离

5. 分析总结

在特定人孤立词语音识别系统中,DTW算法作为一种较为经典的算法, 以其简单有效获得了广泛应用.本实验基于计算机,在MATLAB环境下实现了基于高效DTW算法的语音识别系统,验证了其有效性,并且该算法有效地减少了数据存储量和计算量,降低了识别时间。同时这个仿真实验为实际应用系统的硬件实现提供了一定的参考价值。

实验代码

感兴趣的或者需要本文实验代码和实验报告的读者可参考下面两种方式获得。

途径1

优先推荐该途径
第一步:扫描下方二维码,或打开微信搜索并关注“ 2贰进制 ”公众号;
第二步:回复“ 孤立词语音识别 ”可获取本文相关资料。
二维码

途径2

扫描下方二维码,加入学习交流QQ群“ 480558240 ”,遇到技术问题可联系管理员咨询,还能获取包括但不限于本篇内容的更多学习资料。
在这里插入图片描述
2贰进制–Echo 2020年11月
我认同兴趣是最好的老师,但是除了兴趣其次是侮辱,所以如果您觉得本文还不错,请点赞+评论+收藏,要是关注那更是对我极大地羞辱了,您的羞辱便是我前进的动力!

如果本文对您有所帮助,解决了您的困扰,可以通过赞赏来给予我更大支持:
在这里插入图片描述
此致
感谢您的阅读、评论、收藏、转发与打赏。

猜你喜欢

转载自blog.csdn.net/meenr/article/details/117629850