学习笔记二:语音信号处理以及特征提取

内容提要

1.数字信号处理基础

  • 基础知识
  • 傅里叶分析

2.常用特征提取

  • 特征提取流程
  • Fbank
  • MfCC

3.课后实践

1.数字信号处理基础

1.1模拟信号到数字信号的转化(ADC)—— 采样和量化

  • 以正弦波为例(图a)

在这里插入图片描述

  • 对于一个正弦波
    x ( t ) = s i n ( 2 π f 0 t ) x(t) = sin(2\pi f_0t) x(t)=sin(2πf0t)

  • 其中 f 0 f_0 f0是信号本身的频率,单位是HZ,即一秒内的周期数

  • 如果我们对此正弦波进行采样,每隔 t s t_s ts秒进行一次采样,并使用一定范围的离散数值表示采样值,则可以得到采样后的离散信号
    x ( n ) = s i n ( 2 π f 0 n t s ) x(n) = sin(2\pi f_0nt_s) x(n)=sin(2πf0nts)

  • 公式(2)即为离散信号的定义

    • 其中, t s t_s ts为采样周期
    • f s = 1 t s f_s = \frac{1}{t_s} fs=ts1,为采样频率,或者采样密度,表示一秒之内采样的点数, t s t_s ts为采样周期
    • n = 0,1,…为离散整数序列
  • 对图(a)进行采样得到图(b)

在这里插入图片描述

Q1:那么给定一个正弦波采样后的序列,如图(b),如何恢复出一个连续的正弦波?

1.2频率混叠现象

  • 首先,给出如下的离散序列如图(a),要求画出其对应的连续正弦波

在这里插入图片描述

  • 对于该离散序列,可给出如图(b)不同的正弦波,也就是说,不同频率的正弦波,经过采样后出现了完全相同的离散信号, w h y ? \textcolor{red}{why?} why?

在这里插入图片描述

  • 可作如下解释,对于离散信号的定义可做变形,其中m为任意整数
    KaTeX parse error: Expected 'EOF', got '&' at position 8: x(n) =&̲ sin(2\pi f_0nt…

  • 再做如下替换,令 m = kn,所以 m n t s = k t s = k f s \frac{m}{nt_s} = \frac{k}{t_s} = kf_s ntsm=tsk=kfs,其中 f s = 1 t s f_s = \frac{1}{t_s} fs=ts1,k为整数,因为n也为整数,所以m必为整数,
    x ( n ) = s i n ( 2 π ( f 0 + k f s ) n t s ) x(n) = sin(2\pi(f_0 + kf_s)nt_s) x(n)=sin(2π(f0+kfs)nts)

  • 对比公式( 2 )和( 4 ),发现初始频率为 f 0 的正弦波和初始频率为 f 0 + k f s 的正弦波,在经过采样周期为 t s 的采样后,两者的离散信号相同 \textcolor{red}{对比公式(2)和(4),发现初始频率为f_0的正弦波和初始频率为f_0 + kf_s的正弦波,在经过采样周期为t_s的采样后,两者的离散信号相同} 对比公式(2)和(4),发现初始频率为f0的正弦波和初始频率为f0+kfs的正弦波,在经过采样周期为ts的采样后,两者的离散信号相同

Q2:为什么会出现频率混叠这种现象呢?

答:肯定存在一个正弦波采样不满足奈奎斯特定理

1.3奈奎斯特定理

  • 采样频率大于信号最大频率的两倍
    f s ≥ 2 f m a x 或 f s / 2 ≥ f m a x f_s \geq 2f_{max} 或 f_s/2 \geq f_{max} fs2fmaxfs/2fmax

  • 即,在原始信号的一个周期内,至少要采样两个点,才能有效地杜绝频率混叠问题

频率混叠中的图(b)显然不满足奈奎斯特定理,故产生了频率混叠

1.4离散傅里叶变换(DFT)

  • 为什么要进行DFT?

    DFT将时域信号变换到频域,分析信号中的频率成分

    理解:对于刚刚的正弦波,很明显只有一种频率,而对于语音而言,通常是各种频率的正弦波相互叠加,这时候如果横轴还是为 t 的话就不好分析这个信号,而将横轴变换为频率 f 后,这些叠加的正弦波就会在 f = f 0 , f 1 , . . . , f n f = f_0,f_1,...,f_n f=f0,f1,...,fn上显示出n个峰值,即代表一共有n种不同的频率,横看成岭侧成峰,如下图

在这里插入图片描述

  • 什么信号可以进行DFT?

    时域离散且周期的信号

  • 非周期离散信号可以进行DFT吗?

    需要进行周期延拓【也就是将当前信号作为整个信号的一个周期,然后使用这一个周期的信号去进行DFT】

  • 傅里叶家族

在这里插入图片描述

1.4.1DFT的定义

给定一个长度为N的时域离散信号x(n),对应的离散频域序列为X(m)为:
X ( m ) = Σ n = 0 N − 1 x ( n ) e − j 2 π n m / N , m = 0 , 1 , 2 , . . . , N − 1 X(m) = \Sigma_{n=0}^{N-1}x(n)e^{-j2\pi nm/N},m = 0,1,2,...,N-1 X(m)=Σn=0N1x(n)ej2πnm/N,m=0,1,2,...,N1

  • 其中, j = − 1 j = \sqrt{-1} j=1

  • e为自然对数底

  • m = 0,1,2,…,N-1,频率索引

  • X(m)为DFT的第m个输出

  • 根据欧拉公式,DFT的公式还可以变换为:
    X ( m ) = Σ n = 0 N − 1 x ( n ) [ c o s ( 2 π n m N ) − j s i n ( 2 π n m N ) ] X(m) = \Sigma_{n=0}^{N-1}x(n)[cos(\frac{2\pi nm}{N}) - jsin(\frac{2\pi nm}{N})] X(m)=Σn=0N1x(n)[cos(N2πnm)jsin(N2πnm)]

  • DFT本质上是一个线性变换
    在这里插入图片描述

1.4.2DFT的性质
  • 性质一:对称性,对于实数信号,有
    X ( m ) = X ∗ ( N − m ) X(m) = X^*(N-m) X(m)=X(Nm)
    证明: X ( N − m ) = Σ n = 0 N − 1 x ( n ) e − j 2 π n ( N − m ) / N X(N-m) = \Sigma_{n=0}^{N-1}x(n)e^{-j2\pi n(N-m)/N} X(Nm)=Σn=0N1x(n)ej2πn(Nm)/N

    = X ( N − m ) = Σ n = 0 N − 1 x ( n ) e − j 2 π n N / N e j 2 π n m / N = X ( N − m ) = Σ n = 0 N − 1 x ( n ) e − j 2 π n e j 2 π n m / N =X(N-m) = \Sigma_{n=0}^{N-1}x(n)e^{-j2\pi nN/N}e^{j2\pi nm/N} = X(N-m) = \Sigma_{n=0}^{N-1}x(n)e^{-j2\pi n}e^{j2\pi nm/N} =X(Nm)=Σn=0N1x(n)ej2πnN/Nej2πnm/N=X(Nm)=Σn=0N1x(n)ej2πnej2πnm/N

    因为 e j 2 π n = c o s n ( 2 π n ) − j s i n ( 2 π n ) e^{j2\pi n} = cosn(2\pi n) - jsin(2\pi n) ej2πn=cosn(2πn)jsin(2πn) = 1

    所以 X ( N − m ) = X ( N − m ) = Σ n = 0 N − 1 x ( n ) e j 2 π n m / N = X ∗ ( m ) X(N-m) = X(N-m) = \Sigma_{n=0}^{N-1}x(n)e^{j2\pi nm/N} = X^*(m) X(Nm)=X(Nm)=Σn=0N1x(n)ej2πnm/N=X(m)

    如上图所示,DFT之后的离散频率序列的幅度具有对称性,因此在进行N点的DFT特征提取后,只需要保留N/2+1个点。语音信号特征提取时,一般使用512点DFT,由于对称性,我们只需要保留257个有效点。

  • 性质2:X(m)实际上表示的是“谱密度”,如果对一个幅度为A实正弦波进行N点DFT,则DFT之后,对应频率上的幅度M和A之间的关系为:
    M = A 2 N = A N 2 M = \frac{A}{\frac{2}{N}} = \frac{AN}{2} M=N2A=2AN
    DFT之后的频域序列X(m)的幅值实际上是一个“密度”的概念,通俗讲,即单位带宽上有多少信号存在

在这里插入图片描述

  • 性质3:DFT的线性

    如果 x s u m ( n ) = x 1 ( n ) + x 2 ( n ) x_{sum}(n) = x_1(n)+x_2(n) xsum(n)=x1(n)+x2(n),则对应的频域上有: X s u m ( n ) = X 1 ( n ) + X 2 ( n ) X_{sum}(n) = X_1(n)+X_2(n) Xsum(n)=X1(n)+X2(n)

  • 性质4:时移性

​ 对x(n)左移k个采样点,得到 x s h i f t ( n ) = x ( n − k ) x_{shift}(n) =x(n-k) xshift(n)=x(nk),对 x s h i f t ( n ) x_{shift}(n) xshift(n)进行DFT,有
X s h i f t ( m ) = e j 2 π k m N X ( m ) X_{shift}(m) = e^ \frac{j2\pi km}{N} X(m) Xshift(m)=eNj2πkmX(m)

1.4.3DFT的频率轴
  • 频率分辨率: f s / N f_s/N fs/N,表示最小的频率间隔。N越大,频率分辨率越高,在频域上,第m个点所表示的分析频率(原始频率)为:
    f a n a l y s i s ( m ) = m N f s f_{analysis}(m) = \frac{m}{N}f_s fanalysis(m)=Nmfs
    从这个角度也可以理解X(m)的幅值,体现了原信号中频率为 m N f s \frac{m}{N}f_s Nmfs的信号强度

在这里插入图片描述

对于上图 m = 1时, 1 / 8 ∗ f s 1/8* f_s 1/8fs = 1000,m = 2 时间, 2 / 8 ∗ f s 2/8* f_s 2/8fs = 2000

​ 为了提高DFT频率轴的分辨率,而不会影响原始信号的频率成分。我们可以将时域长度为N的信号x(n) 补0,增加信号的长度,从而提高频率轴分辨率。对信号进行补0的操作,不会影响DFT的结果,这在FFT(快速傅里叶变换)中和语音信号分析中非常常见。比如,在语音特征提取阶段,对于16k采样率的信号,一帧语音信号长度为400个采样点,为了进行512点的FFT,通常将400个点补0,得到512个采样点,最后只需要前257个点。

2.Fbank和MFCC特征提取

在这里插入图片描述

Inverse Fourier transform of logarithm of spectrum 对数谱的逆傅里叶变换

2.1 Step1 预加重

  • 为什么需要预加重?

    提高信号高频部分的能量,高频信号在传递过程中,衰减较快,但是高频部分又蕴含很多对语音识别有利的特征,因此,在特征提取部分,需要提高高频部分能量

  • 预加重滤波器就是一个一阶高通滤波器,给定时域输入信号 x [ n ] x[n] x[n],预加重之后的信号为
    y [ n ] = x [ n ] − α x [ n − 1 ] , 其中 0.9 ≤ α ≤ 1 y[n] = x[n]-\alpha x[n-1],其中0.9 \leq \alpha \leq 1 y[n]=x[n]αx[n1],其中0.9α1
    公式解读:直观解释: 预加重是一个高通滤波器,因此,低频信号(即时域上信号变换慢的信号)将被抑制;从公式(13)中,我们知道

    • 如果信号x是低频信号(变化较慢),那么x[n] 和 x[n-1] 的值应该很接近,当𝛼在接近1的时候,𝑥[𝑛]−𝛼𝑥[𝑛−1] 接近于0,此信号的幅度将被大大抑制;

    • 如果x是高频信号(变化很快),那么x[n] 和x[n-1] 的值将相差很大,𝑥[𝑛]−𝛼𝑥[𝑛−1] 的值不会趋近0,此信号的幅度还能保持,可以通过此滤波器

2.2 Step2 加窗分帧

  • 为什么需要加窗?

    • 语音信号为非平稳信号,其统计属性是随着时间变化的,以汉语为例,一句话中包含很多声母和韵母,不同的拼音,发音的特点很明显是不一样的;
    • 但是!语音信号又具有短时平稳的属性,比如汉语里一个声母或者韵母,往往只会持续几十到几百毫秒,在这一个发音单元里,语音信号表现出明显的稳定性,规律性,也就是在很短的时间里呈现出稳定性
    • 在进行语音识别的时候,对于一句话,识别的过程也是以较小的发音单元(音素、字、字节)为单位进行识别,因此用滑动窗来提取短时片段,
  • 帧长、帧移、窗函数的概念,对于采样率为16kHz的信号,帧长、帧移一般为25ms、10ms,即400和160个采样点

  • 分帧的过程,在时域上,即用一个窗函数和原始信号函数进行相乘:
    y [ n ] = w [ n ] x [ n ] y[n] = w[n]x[n] y[n]=w[n]x[n]
    w[n]称为窗函数,常用的窗函数有:

    矩形窗:
    w [ n ] = { 1 , 0 ≤ n ≤ L − 1 0 , o t h e r w i s e w[n] = \begin{cases} 1,0 \leq n \leq L-1 \\ 0,otherwise \end{cases} w[n]={1,0nL10,otherwise
    汉明(Hamming)窗:
    w [ n ] = { 0.54 − 0.46 c o s ( 2 π n L ) , 0 ≤ n ≤ L − 1 0 , o t h e r w i s e w[n] = \begin{cases} 0.54 - 0.46cos(\frac{2\pi n}{L}), & 0 \leq n \leq L-1 \\ 0,&otherwise \end{cases} w[n]={0.540.46cos(L2πn),0,0nL1otherwise

  • 为什么不直接使用矩形窗?

    加窗的过程,实际上是在时域上将信号截断,窗函数与信号在时域相乘,就等于对应的频域示进行卷积(*),矩形窗主瓣窄,但是旁瓣较大(红色部分),将其与原信号的频域表示进行卷积,就会导致频率泄露。

在这里插入图片描述

2.3 Step3 DFT

在经过上一步的加窗分帧后,会将原语音信号分割成很多个小段的语音信号,但这个小段语音信号并不是在时域上离散周期的,因此需要周期延拓,把这400个采样点认为是某个语音信号的一个周期来进行DFT

  • DFT的作用:将上一步分帧之后的语音帧,由时域变换到频域,取DFT系数的模,得到谱特征

    在这里插入图片描述

    上图展示了语谱图的生成过程:

    • 加窗分帧
    • 将每一帧信号进行DFT(FFT),如第t帧信号,DFT系数为 X t ( m ) , m = 0 , 1 , . . . N X_t(m),m = 0,1,...N Xt(m),m=0,1,...N
    • 将每一帧DFT系数按照时间顺序排列起来,得到一个矩阵 Y ϵ C T ∗ N , 且 Y [ t , m ] = X t ( m ) Y \epsilon C^{T*N},且Y[t,m] = X_t(m) YϵCTN,Y[t,m]=Xt(m)
    • 语谱图是一个三维图,横轴表示时间(t),纵轴表示频率,颜色的深浅表示当前时频点上幅度的大小|Y[t,m]|

2.4Step4 梅尔滤波器组和对数操作

  • DFT得到了每个频带上信号的能量,但是人耳对于频率的感知不是等间隔的,而是近似于对数的

  • 将线性频率转换为梅尔频率,梅尔频率与线性频率的转换公式为:
    m e l ( f ) = 2595 l o g 10 ( 1 + f 700 ) mel(f) = 2595log_{10}(1+ \frac{f}{700}) mel(f)=2595log10(1+700f)

  • 梅尔三角滤波器组:根据起始频率、中间频率和截止频率,确定各滤波器的系数
    f i l t e r b a n k m ( k ) = { k − f ( m − 1 ) f ( m ) − f ( m − 1 ) , f ( m − 1 ) ≤ k < f ( m ) f ( m + 1 ) − k f ( m + 1 ) − f ( m ) , f ( m ) < k ≤ f ( m + 1 ) filter_bank_m(k) = \begin{cases}\frac{k-f(m-1)}{f(m)-f(m-1)},f(m-1) \leq k < f(m)\\ \frac{f(m+1) - k}{f(m+1) - f(m)},f(m) < k \leq f(m+1) \end{cases} filterbankm(k)={f(m)f(m1)kf(m1),f(m1)k<f(m)f(m+1)f(m)f(m+1)k,f(m)<kf(m+1)

  • 梅尔滤波器组设计

    • 确定滤波器组数目P
    • 根据采样频率 f s f_s fs​,DFT点数N,滤波器个数P,在梅尔域上等间隔的产生每个滤波器的起始频率、中间频率和截至频率,注意:上一个滤波器的中间频率是下一个滤波器的起始频率
    • 将梅尔域上每个三角滤波器的起始、中间和截止频率转换线性频率域,并对DFT之后的谱特征进行滤波,得到P个滤波器组能量,进行log 操作,得到Fbank特征
  • MFCC在Fbank特征基础上继续进行IDFT变换等操作

在这里插入图片描述

​ 上图中,左边的倒谱明显是有两种正弦波复合而成,红线所示的正弦波与比较尖锐的正弦波(即高频和低频),低频的称为谱包络,高频的称之为谱细节,而谱包络的峰值称为共振峰,频域信号可以分解成谱包络(Envelope)和谱细节的乘积,不同音素的谱包络和共振峰具有区分性,为了提取谱包络,进行对数操作,即右边的变换

​ 对 X [ m ] = H [ m ] E [ m ] X[m] = H[m]E[m] X[m]=H[m]E[m]进行对数操作后,可变换为 l o g ∣ X [ m ] ∣ = l o g ∣ H [ m ] ∣ + l o g ∣ E [ m ] ∣ log|X[m]| = log|H[m]| + log|E[m]| logX[m]=logH[m]+logE[m],此时谱包络和谱细节都将被提取到

Step5 IDFT

在这里插入图片描述
在这里插入图片描述

Step6 动态特征计算

  • 一阶差分(Delta,Δ),类比于速度,简单计算方法
    Δ ( t ) = c ( t + 1 ) − c ( t − 1 ) 2 Δ_(t) = \frac{c(t+1)-c(t-1)}{2} Δ(t)=2c(t+1)c(t1)

  • 二阶差分(Delta delta,ΔΔ),类比加速度,简单计算方法
    Δ Δ ( t ) = Δ ( t + 1 ) − Δ ( t − 1 ) 2 ΔΔ(t) = \frac{Δ(t+1)-Δ(t-1)}{2} ΔΔ(t)=2Δ(t+1)Δ(t1)

Step7 能量计算

e = Σ x 2 [ n ] e = \Sigma x^2[n] e=Σx2[n]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

成长中......

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

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

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

打赏作者

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

抵扣说明:

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

余额充值