毕业论文-基于matlab的语音信号的基音周期检测说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的语音信号的基音周期检测
摘要:MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将要性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。
MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。由于信号与系统课程的许多内容都是基于公式演算,而MATLAB 借助符号数学工具箱提供的符号运算功能,基本满足设计需要。例如:解微分方程、傅里叶正反变换、拉普拉斯正反变换和Z正反变换等。MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。
本次课程设计为语音信号的基音周期检测,采集语音信号,对语音信号进行处理,区分清音浊音,并通过对采样值进行滤波、分帧、求短时自相关函数,得到浊音的基音周期。
关键字:清音、浊音、基音周期、基音检测、自相关函数
目录
1 概述 (1)
2 AMDF算法原理及实现 (1)
2.1 AMDF算法源程序 (2)
3 ACF算法原理及实现 (4)
3.1 用短时平均能量进行清/浊音的判断 (4)
3.2 自相关函数基音检测的原理 (6)
3.3 算法实现及相关程序 (6)
3.3.1 带通滤波 (7)
3.3.2 取样与分帧 (7)
3.3.3 短时能量分析 (8)
3.3.4 自相关函数分析 (11)
4 总结与心得体会 (13)
参考文献 (13)
1 概述
基音周期检测也称为基频检测(Pitch Detection) ,它的目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,或者是尽量相吻合的轨
迹曲线。基音周期检测在语音信号的各个处理领域中,如语音分析与合成、有调语音的辨意、低速率语音压缩编码、说话人识别等都是至关重要的,它的准确性及实时性对系统起着非常关键的作用,影响着整个系统的性能。
浊音信号的周期称为基音周期, 它是声带振动频率的倒数, 基音周期的估计称为基音检测。基音检测是语音处理中的一项重要技术之一, 它在有调语音的辨意、低速率语音编码、说话人识别等方面起着非常关键的作用; 但在实现过程中, 由于声门激励波形不是一个完全的周期脉冲串, 而且声道的影响很难去除、基音周期的定位困难、背景噪声的强烈影响等一系列因素, 基音检测面临着很大的困难。而自相关基因检测算法是一种基于语音时域分析理论的较好的算法。
本文在对AMDF、ACF基音检测算法基本原理进行分析的基础上,对此算法进行了深入的探讨,针对以往研究中存在的问题加以改进,给出了一种方便、快捷的检测方案。综合考虑了检测准确度和检测速率两方面的因素,然后通过对一段具体的语音信号进行处理,较准确地得到浊音语音信号的基音周期。
2 AMDF算法原理及实现
语音信号{s(n))的短时平均幅度差函数(AMDF)定义为:
其中,w(m)是窗函数,尺是信号的平均值,因为语音信号的浊音段具有周期性,假设基音周期为p,则在浊音段,在k=p,2p,3p…将出现谷点,谷点间的距离即为基音周期。
与短时自相关函数一样,对周期性的浊音语音,也呈现与
浊音语音周期相一致的周期特性,不过不同的是在周期的各个
整数倍点上具有谷值特性而不是峰值特性,因而通过的计算同
样可以确定基音周期。而对于清音信号,却没有这种周期特性。
利用的这种特性,可以判定一段语音是浊音还是清音,并估计
出浊音语音的基音周期。由于计算函数只需要加、减和取绝对值运算,运算量较之短时自相关函数大大下降。同时,函数在基音周期点的谷值比自相关函数的峰值更加尖锐,因此错判率相对较小,稳健性更高。但是当语音信号的幅度快速变化时,函数的谷值深度会减小,从而影响基音估计的精度。
2.1 AMDF算法源程序
AMDF波形图如图2-1所示。
y=wavread(C:\Documents and Settings\Administrator\桌面\yejianglong '.wav');
y1=b(3500:6000);
N=320;%选择的窗长,加N=320的矩形窗
A=[];
for k=1:320
sum=0;
for m=1:N
sum=sum+abs(y1(m)-y1(m+k-1));%计算自相关end
A(k)=sum;
end
s=y(3500:10000);
figure(1)
subplot(211)
plot(s)
xlabel('样点')
ylabel('幅度')
axis([0,2500,-1,1]);
subplot(212)
plot(A)
xlabel('延时k')
ylabel('AMDF')
axis([0,400,0,200]);
图2-1 AMDF波形图
由图2-1 AMDF波形图可知:平均幅度差函数在基音周期处表现为谷值,这些谷值之间的间隔的平均值就是所要求得的基音周期。输入语音帧的平均幅度差函数的最小值发生在第l点,其值为O,我们可以设置一定的门限,得到低于此门限的局部最低点(不包含第1点)。从图中,
我们可以得到谷点的样本值分别为70、140、210,其间隔平均值为70。因此对应的基音频率为:Fs/(70一1)=Fs/69=37000/69=536,这和采用自相关法的检测结果完全相同。
3 ACF算法原理及实现
用短时平均能量进行清/浊音的判断
语音信号{ x ( n) } 的某帧信号的短时平均能量En 的定义为: