语音信号时域处理

短时能量和短时平均幅度

设语音波形时域信号为 x(n) 、加窗函数 w(n) 分帧处理后得到的第 i 帧语音信号为 y_i (n), 则 y_i (n) 满足:
y i ( n ) = w ( n ) ∗ x ( ( i − 1 ) ∗ i n c + n ) y_i (n)=w(n)*x((i-1)*inc+n) yi(n)=w(n)x((i1)inc+n)
式中, w(n) 为窗函数, 一般为矩形窗或汉明窗; y_i (n) 是一帧的数值, n=1,2,⋯,L,i=1, 2,⋯,fn,L 为帧长; inc 为帧移长度; fn 为分帧后的总帧数。
计算第 i 帧语音信号 y_i (n) 的短时能量公式为
E ( i ) = ∑ ( n = 0 ) ( L − 1 ) y i 2 ( n ) , 1 ⩽ i ⩽ f n E(i)=∑^{(L-1)}_{(n=0)}y_i^2 (n),1⩽i⩽fn E(i)=(n=0)(L1)yi2(n),1ifn
短时能量

短时平均过零率

如果输人信号中包含漂移, 即信号在通往 AD 转换器前就有一个直流分量, 使 AD 转换后继续带有这个直流分量。直流分量的存在影响了短时平均过零率的正确估算, 所以建议在语音信号处理前先消除直流分量;短时平均过零率即离散信号相邻的取样值改变符号, 那它们的乘积一定为负数
y i ( n ) y i ( n + 1 ) < 0 y_i (n)y_i (n+1)<0 yi(n)yi(n+1)<0
Z ( i ) = 1 / 2 ∑ n = 0 ( L − 1 )   ∣ s g n ⁡ [ y i ( n ) ] − s g n ⁡ [ y i ( n − 1 ) ] ∣ , 1 ⩽ i ⩽ f n Z(i)=1/2 ∑^{(L-1)}_{n=0}  |sgn⁡[y_i (n)]-sgn⁡[y_i (n-1)]|, 1⩽i⩽fn Z(i)=1/2n=0(L1)sgn[yi(n)]sgn[yi(n1)],1ifn
短时平均过零率

%% audio enframe
clc;
clear all;
close all;
[audiodata,fs]=audioread("test.wav");
audiodata=audiodata-mean(audiodata);%elimate dc 
 % we can divided into fn enframe:fn=(N-overlap)/inc
 % startIndex= 1, inc, 2*inc....
 audiolen=length(audiodata);
 audiot=audiolen/fs;
 time= (0:audiolen-1)/fs;
 wlen=fs*0.05;%there should be  0.05 but for figure
 inc=0.5*wlen;
 fn=floor((audiolen-(wlen-inc))/inc);
 enframeaudio=zeros(wlen,fn);
 energy=zeros(fn);
 energytime=zeros(fn);
 zcr=zeros(fn);
 for i=1:fn
     startindex=inc*(i-1)+1;
     enframeaudio(:,i)=audiodata(startindex:startindex+wlen-1);
     enframetime=(startindex+wlen/2)/fs;
     %we get frame audio signal then cal energy
     energy(i)= sum(enframeaudio(:,i).*enframeaudio(:,i));
     energytime(i)=enframetime;
     data=enframeaudio(:,i);
     for j=1:wlen-1
         if data(j)*data(j+1)<0
             zcr(i)=zcr(i)+1;
         end
     end
 end

figure(1);
subplot(211);
plot(time,audiodata);
title("原始音频时域图形");
subplot(212);
plot(energytime,zcr);
title("短时平均过零率")
% plot(energytime,energy);
% title("短时平均能量")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值