语音识别-时域分析

参考:
https://blog.csdn.net/qq_39516859/article/details/80166842

语音分帧与加窗

语音具有时变特性,但在短时间范围内,其特性基本保持不变即相对稳定。所以具有短时平稳性

语音信号分成一段一段来分析,每一段称为一‘帧’,帧长一般取为10~30ms。

前一帧和后一帧的交叠部分称为帧移。

帧移与帧长的比值一般取为0~1/2.

窗函数

分帧用可移动的有限长度窗口进行加权的方法来实现。

窗口长度:

采样周期 T s = 1 / f s T_s=1/f_s Ts=1/fs,窗口长度N和频率 Δ f \Delta f Δf之间的关系
Δ f = 1 N T s \Delta f=\frac{1}{NT_s} Δf=NTs1
三种窗对比

[外链图片转存失败(img-tjgqblFw-1563959674910)(assets/三种窗对比.jpg)]

时域分析

( 都用hamming窗

( 语音都为zj3.wav

帧长为 200

帧移为 100

短时能量

设第n帧语音信号 x n ( m ) x_n(m) xn(m)的短时能量用 E n E_n En
E n = ∑ m = 0 N − 1 x n 2 ( m ) E_n=\sum^{N-1}_{m=0}x_n^2(m) En=m=0N1xn2(m)

[外链图片转存失败(img-l3tJH9nN-1563959674912)(assets/短时能量.jpg)]

短时平均幅度

算一帧语音信号能量大小
M n = ∑ m = 0 N − 1 ∣ x n ( m ) ∣ M_n=\sum^{N-1}_{m=0}|x_n(m)| Mn=m=0N1xn(m)
[外链图片转存失败(img-uCuCK9PZ-1563959674912)(assets/短时平均幅度.jpg)]

短时过零率

表示一帧语音中语音信号波形穿过横轴(零电平)的次数。(正负变化的次数
Z n = 1 2 ∑ m − 0 N − 1 ∣ s g n [ x n ( m ) ] − s g n [ x n ( m − 1 ) ] Z_n=\frac{1}{2}\sum^{N-1}_{m-0}|sgn[x_n(m)]-sgn[x_n(m-1)] Zn=21m0N1sgn[xn(m)]sgn[xn(m1)]

s g n [ x ] = { 1 , ( x ) ≥ 0 ) − 1 , ( x &lt; 0 ) sgn[x]=\begin{cases}1,&amp;\text(x)\geq 0) \\ -1,&amp;(x&lt;0) \end{cases} sgn[x]={1,1(x)0)(x<0)

MATLAB 离散信号相邻的取样值改变符号,其乘积为负
x i ( m ) × x i ( m + 1 ) &lt; 0 x_i(m)\times x_i(m+1)&lt;0 xi(m)×xi(m+1)<0
[外链图片转存失败(img-Gf53fmz3-1563959674912)(assets/短时过零率.jpg)]

代码:

%短时时域分析参数计算并显示
clear all;
clc;
filedir=[];%设置路径
filename='D:\matlab\music\zj3.wav';
file=[filedir filename];
[x,Fs]=audioread(file);

wlen=200;%帧长
inc=100;%帧移
win=hamming(wlen);%海明窗
N=length(x);%信号长度
time=(0:N-1)/Fs;%计算出信号的时间刻度

%这些函数没有
% En1=STEn(x,win,inc);%短时能量
% Mn1=STMn(x,win,inc);%短时平均幅度
% Zcr1=STZcr(x,win,inc);%短时过零率
%返回的不是向量而是矩阵,因为一帧信号得到的不是一个数值

X=enframe(x,win,inc)'; %分帧,一列是一帧
fn=size(X,2);%帧数
frameTime=frame2time(fn,wlen,inc,Fs);  %求出每帧对应的时间
%这个公式得再看一下

  %短时能量
  for i=1:fn
          y=X(:,i);%每一帧数据
          b=0;
          for m=1:1:200
          b=b+y(m).^2;   
          end
          E(i)=b;
  end
   
 %短时平均幅度
  for i=1:fn
          y=X(:,i);%每一帧数据
          b=0;
          for m=1:1:200
          b=b+abs(y(m));   
          end
          M(i)=b;
  end
   
   %短时过零率
   Z=zeros(1,fn);                 % 初始化
  for i=1:fn
          y=X(:,i);%每一帧数据
          b=0;
          for m=1:1:199
          if y(m)*y(m+1)<0;
              b=b+1;
          end
          Z(i)=b;
          end
  end
  
   %短时自相关
   d=time*Fs; %采样点数=时间乘上采样频率
 for k=2:fn
         y=X(:,k);%每一帧数据
         ru=xcorr(y);
         R(k)=max(ru);
 end
 
   %短时平均幅度差
  for i=1:fn
      y=X(:,i);%每一帧数据
      for k=1:wlen
          f(k)=sum(abs(y(k:end)-y(1:end-k+1)));
      end
      F(i)=max(f)
  end
% %画图-短时能量
% figure(2)
% subplot(211)
% plot(time,x)
% title('原始语音')
% ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
% subplot(212)
% plot(frameTime,E);
% title('短时能量');
% ylabel('幅值'); xlabel(['时间/s' 10 '(b)']);


% % 画图-短时平均幅度
% figure(3)
% subplot(211)
% plot(time,x)
% title('原始语音')
% ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
% subplot(212)
% plot(frameTime,M);
% title('短时平均幅度');
% ylabel('幅值'); xlabel(['时间/s' 10 '(b)']);

% % 画图-短时过零率
% figure(4)
% subplot(211)
% plot(time,x)
% title('原始语音')
% ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
% subplot(212)
% plot(frameTime,Z);
% title('短时过零率');
% ylabel('次数'); xlabel(['时间/s' 10 '(b)']);

% % 画图-短时自相关-还不行
% figure(5)
% subplot(211)
% plot(time,x)
% title('原始语音')
% ylabel('幅值'); xlabel(['时间/s' 10 '(a)']);
% subplot(212)
% plot(time,R);
% title('短时自相关');
% ylabel('复制'); xlabel(['点数' 10 '(b)']);

短时自相关

对于浊音语音可以用自相关函数求出语音波形序列的基音周期。

线性预测分析时,也用到自相关函数。

语音信号x(m),自相关函数R(k)

K是最大延迟点数
R n ( k ) = ∑ m = 0 N − 1 − K x n ( m ) x n ( m + k ) ( 0 ≤ k ≤ K ) R_n(k)=\sum^{N-1-K}_{m=0}x_n(m)x_n(m+k) \quad (0\leq k\leq K) Rn(k)=m=0N1Kxn(m)xn(m+k)(0kK)

在这里插入图片描述

短时平均幅度差

跟自相关函数有类似作用的参量
F n ( k ) = ∑ m = 0 N − 1 − k ∣ x n ( m ) − x n ( m + k ) F_n(k)=\sum^{N-1-k}_{m=0}|x_n(m)-x_n(m+k) Fn(k)=m=0N1kxn(m)xn(m+k)
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用户已经注册过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值