matlab倒谱法基音周期,语音学习笔记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,'.');                   %显示声音信号的波形

0818b9ca8b590ca3270a3433284dd417.png

疑问:(为什么横坐标是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('各帧基音周期');

0818b9ca8b590ca3270a3433284dd417.png

T1= medfilt1(T,5);             %去除野点

figure(3);stem(T1,'.');axis([0 length(T1) 0 10]);

xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期');

0818b9ca8b590ca3270a3433284dd417.png

不懂的可以加我的QQ群:522869126(深度学习语音识别方向

)欢迎你的到来哦,看了博文给点脚印呗,谢谢啦~~

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值