语音信号处理实验指导

更新时间:2023-10-29 16:11:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

语音信号处理实验讲义

王艳芬 李剑 编

中国矿业大学信电学院

学生实验守则

一、学生进入实验室必须遵守实验室的规章制度,遵守课堂纪律,保持实验室的安静和整洁,爱护实验室的一切设施。

二、实验课前要认真预习实验指导书,写出实验预习报告,并经教师批阅后方可进行实验。

三、实验课中要遵守操作规程,不要带电连接、更改或拆除线路。线路接好后,经指导老师检查后,方可接通电源进行实验。对于软件上机实验,不得随意删改计算机中原有的文件。

四、学生实验前对实验所用仪器设备要了解其操作规程和使用方法,凡因不预习或不按使用方法进行操作而造成仪器设备损坏者,除书面检查外,按学校规定进行赔偿。

五、实验中主意安全,遇到事故应立即关断电源并报告教师检查处理。

六、实验完毕后要做好整理工作,实验数据必须经指导教师签阅后,才能拆除线路,并将仪器、设备、凳子等按规定放好,经同意后方可离开实验室。

七、因故缺课的学生可向实验室申请一次补做机会。无故缺课或无故迟到(15分钟以上)的不予补做,该次实验无成绩;累计三次者,该实验课以不及格论,并不得参加该门理论课程的考试。

八、实验室仪器设备不能擅自搬动调换,更不能擅自带出实验室。

信电学院专业实验中心

二零一一年九月

目录

实验一 语音信号得基音参数提取???????????????????????1 实验二 语音信号的谱分析??????????????????????????7 实验三 基于DTW算法的孤立字识别??????????????????????11

《语音信号处理实验讲义》是为了配合“语音信号处理”课程教学而编写的,适用于信息工程、电子科学与技术等专业。前修课程为“数字信号处理”。该课程总学时数为40学时,其中实验学时为8学时。

实验内容及参考学时安排如下:

实验一 语音信号的基音参数提取 (3个学时) 实验二 语音信号的谱分析 (3个学时) 实验三 基于DTW算法的孤立字识别 (2个学时)

实验一 语音信号的基音参数提取

一、实验目的

1.了解基音的基本概念以及清音与浊音的区别。

2.掌握几种基本的基音提取方法,熟悉自相关法、倒谱法和简化逆滤波法进行基音提取的matlab编程。

3.熟悉应用FFT对典型信号进行频谱分析的方法。 二、实验原理与方法

1.自相关法

利用浊音和清音的自相关函数不同的特点,检测出浊音自相关函数波形的峰值位置,就可提取出基音。

为了提高相关法检测基音周期的可靠性,首先应对原始信号进行预处理。方法要点:语音信号的低幅度部分集中了大量的共振峰信息,而高幅度部分包含了大量的基音信息。一般采用中心削波处理法来进行:中心削波处理是使用中心削波函数进行处理的,用以削除语音信号的低幅度部分,它是一种非线性处理方法。

其输入输出函数为

?x(n)?CL?y(n)?C[x(n)]??0?x(n)?CL?x(n)?CLx(n)?CL (1.1)

x(n)??CL其中削波电平CL一般取最大信号幅度的60%~70%。

为减少自相关计算中的乘法计算 ,可对中心削波函数进行修正:采用三电平中心削波。其输入输出函数为

?1?y(n)?C[x(n)]??0??1?x(n)?CLx(n)?CL (1.2) x(n)??CL经过上述预处理,就可以用自相关法检测基音周期了。 自相关函数为:

N?1?kRn(k)?m?0?[y(n?m)w'(m)[y(n?m?k)w'(m?k)] (1.3)

1

w(m)为窗函数。若采用直角窗,则自相关函数为:

N?1?kRn(k)?m?0?y(n?m)y(n?m?k) (1.4)

其中,y(n)为经过削波处理后的信号。

用自相关法进行基音提取的matlab编程的流程图为:

2.倒谱法

原始信号 选取合适的语音段 取信号绝对值的最大值 三电平削波 自相关计算 图1 自相关法基音提取的matlab编程流程图 浊音语音的复倒谱中存在峰值,其出现时间等于基音周期;而清音语音段的复倒谱则不出现这种峰值。利用这一性质可以进行清/浊音判断并估计浊音的基音周期。

这种方法的要点是计算出复倒谱后,进行解卷,提取出声门激励信息,在预期的基音周期附近寻找峰值。如果峰值超过了预先设定的门限,则语音段为浊音,而峰的位置就是基音周期的估计。如果不存在超过门限的峰值,则语音段定为清音。如果计算的是依赖于时间的复倒谱,则可估计出激励源模型及基音周期随时间的变化。

用倒谱法进行基音提取的matlab编程的流程图如图2所示:

对原始信号进行分帧处理时,要注意帧长和偏移量的选取,这两个参数会直接影响到最后的仿真结果。

3.简化逆滤波法

简化逆滤波跟踪算法是相关处理法进行基音提取的一种现代化的版本,是检测基音周期的一种比较有效的方法。这种方法先对语音波形降低取样率,进行LPC分析,抽取声道模型参数,然后利用这些参数用线性预测逆滤波器对原信号进行逆滤波,从预测误差中得到音源序列,再用自相关法求得基音周期。之所以用逆滤波,是因为它是将频谱包络逐渐平坦下去的过程。得到的线性预测误差信号只包含有激励

2

如果利用P个取样值来进行预测,则称为P阶线性预测。可AR模型,则

s(n)是一个P阶的

H(ejw)?S(ejw)22 (2.4)

jwjwH(e)S(e)是语音信号s(n)的傅里叶变换,H(z)式中 是模型的频率响应,可简称为LPC谱;

即信号谱,

S(ejw)2为功率谱。但是事实上,语音信号并非是AR模型,因此,

H(ejw)2只能理解成

S(ejw)2的一个估计。

原始信号 原始信号 汉明窗 求LPC系数 求功率谱 FFT变换 计算振幅 求LPC谱 对数变换 图2.2 LPC谱分析的matlab编程思路图 反FFT变换 高倒谱域部分 低倒谱域部分 峰值检测 倒谱窗 基音周期和FFT变换 清、浊判别 平滑谱 图2.1 倒谱分析的matlab编程流程图 P越大,LPC谱越能反映出语音短时谱的细节部分,但LPC谱的光滑度随之下降。由于我们的目的只是用LPC谱反映声道综合效应的谱的表示式,而具体的谐波形状是通过激励谱来控制的,因此LPC

8

谱只要能够体现出语音的共振峰的结构和谱包络就可以,因此从计算复杂性的角度分析,预测阶数P应该适中。根据LPC谱定义的原理画出LPC谱分析的matlab编程的流程图,如图2.2所示。

三、实验内容和步骤

(1) 分别采集一段浊音和清音语音信号(是你自己说的),采样率为8KHZ,量化精度为16比特线性码;

(2) 分析帧长取为30ms(或10ms~50ms);

(3) 根据语音信号倒谱分析和LPC谱分析的编程流程图(图2.1、图2.2)编制浊音语音信号谱分析的matlab程序,上机调试给出相应波形,并根据图形,观察共振峰情况;

(4) 将语音信号换为清音语音,运行程序,与浊音语音的运行结果进行比较,并得出结论。 (5) 在LPC谱分析中,改变阶数p (p分别等于4、8、12、40)时,观察对谱包络的影响,并与信号谱(DFT谱)进行比较。

说明:倒谱分析有两种方法,一种是根据原理,按照图2.1的流程图,一步步编程实现,另一种方法可以利用matlab里的内部函数进行倒谱分析。下面给出内部函数的使用简介。 cceps

功能:计算复倒谱。 格式:xhat=cceps(x) [xhat,nd]=cceps(x) […]=cceps(x,n)

说明:xhat=cceps(x)返回实信号x的复倒谱,xhat也是实数序列。

[xhat,nd]=cceps(x)在计算复倒谱的同时还辨识出信号延迟的采样点位置nd。 rceps

功能:实倒谱的计算和最小相位重构。 格式: y=rceps(x) [y,ym]=rceps(x)

说明:y=rceps(x)计算信号x的实倒谱y。

[y,ym]=rceps(x)返回信号x的实倒谱y和最小相位重构信号ym。 icceps

9

功能:计算逆复倒谱。 格式:x=icceps(xhat,nd)

说明:x=icceps(xhat,nd)返回复倒谱xhat的逆变换x,nd为所要去除的时间延迟的位置。 lpc

功能:计算lpc系数。 格式:a=lpc(x,n)

说明:a=lpc(x,n)返回x的n阶LPC系数。 功能:计算lpc谱。

格式:p=20*log(abs(freqz(1,-a,length(x))) 说明:a是x的n阶LPC系数。

四、实验报告

1. 简述实验目的和原理。

2. 按实验步骤附上编制的实验程序和运行结果,分析所得到的图形。 3. 将清音语音与浊音语音的运行结果进行比较,写出结论。 4. 总结语音信号倒谱分析和LPC谱分析的特点。 5.收获与建议。

10

实验3 基于DTW算法的孤立字识别

一、实验目的及实验要求

1.了解语音信号处理在语音识别中的应用

2.掌握端点检测的原理,用Matlab编程实现语音信号的端点检测,从原始语音文件中提取有效语音段。

3.掌握采用模板匹配法的孤立字(词)识别系统的工作原理。结合DTW实验系统工具箱,通过编写主程序实现语音识别。

二、实验原理

详见清华大学出版社《Matlab扩展编程》(何英等编著)! 语音识别技术中,对孤立字+

+(词)识别的研究是最早的,也是最成熟的。孤立字识别系统,顾名思义是识别孤立发音的字或词。由于在孤立字识别中字之间有停顿,可使识别问题简化;单字之间的端点检测比较容易;单字之间的协同发音影响较小;一般对单字的发音都比较认真等,所以这种系统存在的问题较少,较容易实现。孤立字(词)识别系统可以用图3.1表示:

语音分析 输入语音 预处理器 训练 参考模式 识别字词 字词候选 后期处理 短时参数提取 模式识别 超音段特征提取 图3.1 孤立字(词)识别系统

首先语音信号经过预处理和语音分析部分变换成语音特征参数。模式识别部分是将输入语音特征参数信息与训练时预存的参考模型(模板)进行比较。由于发音速率的变化,输出测试语音和参考模板间存在着非线性失真,即于参考模式相比输入语音的某些音素变长而另一些音素却缩短,呈现随机变化。根据参考模式是模板还是随机模型,最有效的两种时间规整策略:一是动态时间规整技术(DTW);另一个是马尔可夫模型技术(HMM)。除了发音速率的变化外,相对于参考模式,测试语音还可能出现其

11

他的语音变化。后处理部分主要是运用语言学知识或超音段信息对识别出的候选词或字进行最后的判决。

本实验采用较简单的动态时间规整技术(DTW)来实现孤立字识别。实验的matlab程序由1个主程序和5个子程序或内部函数组成。程序用到了“0.1.2.3.4.5.6.7.8.9”十个语音。

1. 主程序为:DTWglc

图3.2为DTW主程序流程图。由参考模板计算、测试模板计算和识别三部分组成。 2. vad——端点检测程序

端点检测的目的是从包含语音的一段信号中确定出语音的起点和终点。有效的端点检测不仅能使处理时间减到最小,而且能排除无声段的噪声干扰,从而使识别系统具有良好的识别性能。传统的端点检测方法是将语音信号的短时能量与过零率相结合加以判断。

读入语音文件 计算参考模板端点检测x1,x2 利用x1,x2抽取有效语音段 计算原始语音的MFCC参数,保留到矩阵m循环n次计算参考语音模板 读入语音文件 计算测试模板端点检测x1,x2 利用x1,x2抽取有效语音段 计算原始语音的MFCC参数,保留到矩阵m循环n次计算测试语音模板 匹配测试模板和参考模板的距离得到n×n的矩阵 识别循环n2次得到n×n矩阵 循环n次,得出n个识别结果 根据最小距离筛选矩阵元素,输出识别结果 12 图3.2 DTW主程序流程图

end end

disp('正在计算模板匹配结果....') for i=1:10

[d,j]=min(dist(i,:));

fprintf('测试模板%d的识别结果为:%d\\n',i,j);

四、实验报告

1. 简述实验目的和原理。

2. 说明你录制的语音文件及波形。

3. 按实验步骤附上修改编制的实验主程序和运行结果,分析所得到的结果,计算出识别率。 4. 收获与建议。

参 考 文 献

[1] 赵力,语音信号处理,机械工业大学出版社,北京,

[2]张雄伟、陈亮、杨吉斌,现代语音处理技术及应用,北京,2003.8 [3]易克初、田斌、付强,语音信号处理,国防工业出版社,北京,2000.1 [4]姚天任,数字语音处理,华中科技大学出版社,武汉,2002.7 [5]杨行峻、迟惠生,语音信号数字处理,电子工业出版社,北京,1995.2 [6]姚天任、江太辉,数字信号处理,华中理工大学出版社,武汉,1988.6 [7]鲍长春,低比特率数字语音编码基础,北京工业大学出版社,北京,2001.8 [8]王伟,人工神经网络原理,北京航空航天大学出版社,北京,1995.6 [9]陈尚勤、罗承烈、杨雪,近代语音识别,电子科技大学出版社,成都,1991.5

[10]胡航,语音参数分析和提取的研究,华为科技基金项目研究报告,哈尔滨工业大学,2000.3 [11]陈永彬、王仁华,语音信号处理,中国科技大学出版社,合肥,1990.3 [12]阮沈勇等,MATLAB程序设计,电子工业出版社,北京 p1 [13] 胡航,语音信号处理,哈尔滨工业大学出版社,哈尔滨,2002.5 [14]李祖鹏等,一种语音段起止端点检测新方法,电讯技术 2000年第3期 [15]赵文,杨鉴等,孤立字词识别,计算机应用,第21卷2001.6 [16]何英等,Matlab扩展编程,清华大学出版社,北京,p340

[17]刘庆升,徐宵鹏等,一种语音端点检测算法的探究,计算机工程,第29卷第3期

18

[18]刘卫国,陈昭平等,Matlab程序设计与应用,高教出版社,北京,p38

19

本文来源:https://www.bwwdw.com/article/usm2.html

Top