实验三语音信号的基音周期提取
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三语音信号的基音周期提取
一、实验目的
1、熟练运用MATLAB软件的运用,学习通过MATLAB软件编程来进行语音信号的基因周期提取。
2、掌握语音信号的基音周期提取的方法,实现其中一种基频提取方法。
3、学会用自相关法进行语音信号的基因检测。
二、实验仪器设备及软件
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 基音检测框图
四、实验步骤及程序
(1)实验步骤
1、取一段录音作为音频样本。
2、对样本音频进行采样。
3、对采样后样本音频进行分帧。
4、对每一帧求短时自相关函数
5、算出对应周期。
6、进行带通滤波去除野点。
(2)语音信号基音周期提取的程序流程图:
图2.2 语音信号基音周期提取的程序流程图
(3)实验源程序
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 的声音片段进行采样,然后对每一帧进行自相关分析得到对应的基音周期,但是存在)(k Rm 开始的几个点的值比第一个周期的峰值还大的情况,因此无法正确提取出第一个峰值对应的点,所以经过滤波后得到比较理想的基音周期图像。
六、实验体会
通过本次实验是我更加理解短时自相关函数法进行基音检测的原理,短时自相关函数法基音检测的主要原理是通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么两个信号具有最大类似性。基于自相关函数的算法是基音周期估计的常用方法,特别适用于噪声环境下的基音提取。自相关函数在基音周期处表现为峰值,相邻两个峰值之间的间隔即为一个基音周期。