语音学习笔记1------matlab实现自相关函数法基音周期提取
Posted 尘封的记忆0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音学习笔记1------matlab实现自相关函数法基音周期提取相关的知识,希望对你有一定的参考价值。
人在发浊音时,气流通过声门使声带产生张弛振荡式振动,产生一股准周期脉冲气流,这一气流激励声道就产生浊音,又称有声语音,它携带着语音中的大部分能量。这种声带振动的频率称为基频,相应的周期就称为基音周期( Pitch) ,它由声带逐渐开启到面积最大(约占基音周期的50% ) 、逐渐关闭到完全闭合(约占基音周期的35% ) 、完全闭合(约占基音周期的15% )三部分组成。 当今主流的基音周期检测技术主要有时域的自相关法、频域的倒谱法、时频结合的小波变换分析方法以及在其基础上的衍生算法。浊音信号自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显峰值。因而检测是否有峰值就可以判断是清音还是浊音,检测峰值位置就可提取基音周期。
(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点开始加入。
function pitch
x=wavread('E:\\luyin\\wkxp.wav');%读取声音文件
figure(1);
stem(x,'.'); %显示声音信号的波形
疑问:(为什么横坐标是8,并且是*10的5次方;纵坐标是什么意思??)
n=75000; %取17s的声音片段,即75000个样点
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); %防止误判,去掉前边10个数值较大的点
[Rmax,N(m)]=max(p); %读取第一个自相关函数的最大点
end %补回前边去掉的10个点
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('各帧基音周期');
不懂的可以加我的QQ群: 522869126(深度学习语音识别方向
)欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~
以上是关于语音学习笔记1------matlab实现自相关函数法基音周期提取的主要内容,如果未能解决你的问题,请参考以下文章