实验三语音信号的基音周期提取.doc
文本预览下载声明
实验三语音信号的基音周期提取
实验目的
熟练运用MATLAB软件的运用,学习通过MATLAB软件编程来进行语音信号的基因周期提取。
掌握语音信号的基音周期提取的方法,实现其中一种基频提取方法。
学会用自相关法进行语音信号的基因检测。
实验仪器设备及软件
MATLAB
实验原理
浊音信号的自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现。因此检测自相关函数是否有峰值就可以判断是清音还是浊音,而峰-峰值之间对应的就是基音周期。
影响从自相关函数中正确提取基音周期的最主要原因是声道响应。当基音的周期性和共振峰的周期性混在一起时,被检测出来的峰值可能会偏离原来峰值的真实位置。另外,在某些浊音中,第一共振频率可能会等于或低于基音频率。此时,如果其幅度很高,它就可能在自相关函数中产生一个峰值,而该峰值又可以同基音频率的峰值相比拟。
1、自相关函数
对于离散的语音信号x(n),它的自相关函数定义为:
R(k)=Σx(n)x(n-k),
如果信号x(n))具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)
的周期性相同。自相关函数提供了一种获取周期信号周期的方法。在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具。
2、短时自相关函数
语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。短时自相关函数是在信号的第N个样本点附近用短时窗截取一段信号,做自相关计算所得的结果
Rm(k)=Σx(n)x(n-k)
式中,n表示窗函数是从第n点开始加入。
3、算法
通过对自相关基音检测原理的分析,考虑到检测准确度和检测速率2方面的因素,提出了算法实现方案,并对算法进行了Matlab编程实现。算法包含6个功能模块:带通滤波、取样、分帧、短时能量分析、相关运算、基音检测。
基因周期检测
短时自相关分析
分帧
取样
语音信号
带通滤波
图2.1 基音检测框图
实验步骤及程序
实验步骤
取一段录音作为音频样本。
对样本音频进行采样。
???采样后样本音频进行分帧。
对每一帧求短时自相关函数
算出对应周期。
进行带通滤波去除野点。
(2)语音信号基音周期提取的程序流程图:
输入语音信号
采样
分帧
短时自相关分析
带通滤波
输出图像
图2.2 语音信号基音周期提取的程序流程图
实验源程序
function pitch
x=wavread(1.wav);
figure(1);
stem(x,.);
n=160;
for m=1:length(x)/n;
for k=1:n;
Rm(k)=0;
for i=(k+1):n;
Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n);
end
end
p=Rm(10:n);
[Rmax,N(m)]=max(p);
end
N=N+10;
T=N/8;
figure(2);stem(T,.);axis([0 length(T) 0 10]);
xlabel(帧数(n));ylabel(周期(ms));title(各帧基音周期);
T1= medfilt1(T,5);
figure(3);stem(T1,.);axis([0 length(T1) 0 10]);
xlabel(帧数(n));ylabel(周期(ms));title(各帧基音周期);
实验结果与分析
图2.3 样本语音原始图像
图2.4滤波前各帧基音周期
图2.5滤波后各帧基音周期
通过图像可以清楚地看出每一帧对应的基音周期,实验效果比较理想,达到了预期目标。实验中取了16000个点进行分析,每20ms的声音片段进行采样,然后对每一帧进行自相关分析得到对应的基音周期,但是存在开始的几个点的值比第一个周期的峰值还大的情况,因此无法正确提取出第一个峰值对应的点,所以经过滤波后得到比较理想的基音周期图像。
实验体会
通过本次实验是我更加理解短时自相关函数法进行基
显示全部