端点检测编程思想

 

算法思路:

输入为归一化的语音段x和采样率Fs

(1)求原始信号从每点开始的长度为Len内的短时过零率,得到crslt为每点对应的短时过零率;

(2)然后进行过零率波形的平滑,其方法是对crslt做fft,去掉过零率波形中的高频,即fft谱中间置零;用ifft恢复平滑后的过零率波形为 C2;

(3)根据设置的过零率门限zero_threshold,将平滑后的过零率C2中不超过门限的置1;

(4)计算原始信号中每点开始的FrameLength短时帧能量,得到E;

(5)平滑短时能量谱得到E3,且进行归一化E3=E3./max(E3);

(6)根据归一化能量门限energy_threshold,平滑后的过零率中超过门限的置1得到E4;

(7)将过零率和归一化能量相与: v=E4&C3;

对这个v进行每点过零判断,cross2记录v总共的过零次数, pt(cross2)=n;用来记录每次过零时对应第几个样点;

(8)通过v(1)是否为1以及cross2是偶数还是奇数确定端点矩阵T;

v(1)=1则认为起始点为浊音点,v(1)=0则认为清音或者静默;

v(1)是否为1决定了起点b的设置;

cross2的奇偶决定了起点和终点的配对;

所以分四种情况考虑:

例如:if(v(1)==0&(mod(cross2,2)==0))  %% Low, even

则b=pt(n);e=pt(n+1);

依次判断每一对起点终点间距是否大于20ms帧长,如果大于则认为是该起始点成立,间距为一段浊音;

最后可以得到矩阵T,每一列代表一段浊音,第一行代表起点,第二行代表终点

 

此端点检测算法目前还不是100%好用,还需要对多种段落的语音试验。 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值