语音信号处理和自然语言处理(语音信号处理以及特征提取)

内容提要

1.数字信号处理基础

  • 基础知识
  • 傅里叶分析

2.常用特征提取

  • 特征提取流程
  • Fbank
  • MfCC
1.数字信号处理基础1.1模拟信号到数字信号的转化(ADC)—— 采样和量化
  • 以正弦波为例(图a)

语音信号处理和自然语言处理(语音信号处理以及特征提取)(1)

    • 对于一个正弦波

语音信号处理和自然语言处理(语音信号处理以及特征提取)(2)

    • 其中f_0是信号本身的频率,单位是HZ,即一秒内的周期数
    • 如果我们对此正弦波进行采样,每隔t_s秒进行一次采样,并使用一定范围的离散数值表示采样值,则可以得到采样后的离散信号

语音信号处理和自然语言处理(语音信号处理以及特征提取)(3)

    • 公式(2)即为离散信号的定义
      • 其中,t_s为采样周期
      • f_s = 1/t_s,为采样频率,或者采样密度,表示一秒之内采样的点数,t_s为采样周期
      • n = 0,1,......为离散整数序列
    • 对图(a)进行采样得到图(b)

语音信号处理和自然语言处理(语音信号处理以及特征提取)(4)

  • Q1:那么给定一个正弦波采样后的序列,如图(b),如何恢复出一个连续的正弦波?
1.2频率混叠现象
  • 首先,给出如下的离散序列如图(a),要求画出其对应的连续正弦波

语音信号处理和自然语言处理(语音信号处理以及特征提取)(5)

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

语音信号处理和自然语言处理(语音信号处理以及特征提取)(6)

  • 可作如下解释,对于离散信号的定义可做变形,其中m为任意整数

语音信号处理和自然语言处理(语音信号处理以及特征提取)(7)

  • 再做如下替换,令 m = kn,所以 m/(nt_s) = k/t_s = kf_s,其中f_s = 1/t_s,k为整数,因为n也为整数,所以m必为整数,

语音信号处理和自然语言处理(语音信号处理以及特征提取)(8)

  • 对比公式(2)和(4),发现初始频率为f_0的正弦波和初始频率为f_0 kf_s的正弦波,在经过采样周期为t_s的采样后,两者的离散信号相同

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

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

1.3奈奎斯特定理
  • 采样频率大于信号最大频率的两倍

语音信号处理和自然语言处理(语音信号处理以及特征提取)(9)

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

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

1.4离散傅里叶变换(DFT)
  • 为什么要进行DFT?
  • DFT将时域信号变换到频域,分析信号中的频率成分
  • 理解:对于刚刚的正弦波,很明显只有一种频率,而对于语音而言,通常是各种频率的正弦波相互叠加,这时候如果横轴还是为 t 的话就不好分析这个信号,而将横轴变换为频率 f 后,这些叠加的正弦波就会在 f = f_0,f_1,...,f_n上显示出n个峰值,即代表一共有n种不同的频率,横看成岭侧成峰,如下图

语音信号处理和自然语言处理(语音信号处理以及特征提取)(10)

  • 什么信号可以进行DFT?
  • 时域离散且周期的信号
  • 非周期离散信号可以进行DFT吗?
  • 需要进行周期延拓【也就是将当前信号作为整个信号的一个周期,然后使用这一个周期的信号去进行DFT】
  • 傅里叶家族

语音信号处理和自然语言处理(语音信号处理以及特征提取)(11)

1.4.1DFT的定义

给定一个长度为N的时域离散信号x(n),对应的离散频域序列为X(m)为:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(12)

  • 其中,j = \sqrt{-1}
  • e为自然对数底
  • m = 0,1,2,...,N-1,频率索引
  • X(m)为DFT的第m个输出
  • 根据欧拉公式,DFT的公式还可以变换为:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(13)

  • DFT本质上是一个线性变换

语音信号处理和自然语言处理(语音信号处理以及特征提取)(14)

1.4.2DFT的性质
  • 性质一:对称性,对于实数信号,有

语音信号处理和自然语言处理(语音信号处理以及特征提取)(15)

语音信号处理和自然语言处理(语音信号处理以及特征提取)(16)

  • 如上图所示,DFT之后的离散频率序列的幅度具有对称性,因此在进行N点的DFT特征提取后,只需要保留N/2 1个点。语音信号特征提取时,一般使用512点DFT,由于对称性,我们只需要保留257个有效点。
  • 性质2:X(m)实际上表示的是“谱密度”,如果对一个幅度为A实正弦波进行N点DFT,则DFT之后,对应频率上的幅度M和A之间的关系为:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(17)

  • DFT之后的频域序列X(m)的幅值实际上是一个“密度”的概念,通俗讲,即单位带宽上有多少信号存在

语音信号处理和自然语言处理(语音信号处理以及特征提取)(18)

  • 性质3:DFT的线性
  • 如果x_{sum}(n) = x_1(n) x_2(n),则对应的频域上有:X_{sum}(n) = X_1(n) X_2(n)
  • 性质4:时移性

对x(n)左移k个采样点,得到x_{shift}(n) =x(n-k),对x_{shift}(n)进行DFT,有

语音信号处理和自然语言处理(语音信号处理以及特征提取)(19)

1.4.3DFT的频率轴
  • 频率分辨率:f_s/N,表示最小的频率间隔。N越大,频率分辨率越高,在频域上,第m个点所表示的分析频率(原始频率)为:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(20)

  • 从这个角度也可以理解X(m)的幅值,体现了原信号中频率为\frac{m}{N}f_s的信号强度

语音信号处理和自然语言处理(语音信号处理以及特征提取)(21)

  • 对于上图 m = 1时,1/8* f_s = 1000,m = 2 时间,2/8* f_s = 2000

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

2.Fbank和MFCC特征提取

语音信号处理和自然语言处理(语音信号处理以及特征提取)(22)

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

2.1 Step1 预加重
  • 为什么需要预加重?
  • 提高信号高频部分的能量,高频信号在传递过程中,衰减较快,但是高频部分又蕴含很多对语音识别有利的特征,因此,在特征提取部分,需要提高高频部分能量
  • 预加重滤波器就是一个一阶高通滤波器,给定时域输入信号x[n],预加重之后的信号为

语音信号处理和自然语言处理(语音信号处理以及特征提取)(23)

  • 公式解读:直观解释: 预加重是一个高通滤波器,因此,低频信号(即时域上信号变换慢的信号)将被抑制;从公式(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个采样点
  • 分帧的过程,在时域上,即用一个窗函数和原始信号函数进行相乘:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(24)

  • w[n]称为窗函数,常用的窗函数有:
  • 矩形窗:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(25)

  • 汉明(Hamming)窗:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(26)

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

语音信号处理和自然语言处理(语音信号处理以及特征提取)(27)

2.3 Step3 DFT

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

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

语音信号处理和自然语言处理(语音信号处理以及特征提取)(28)

  • 上图展示了语谱图的生成过程:
    • 加窗分帧
    • 将每一帧信号进行DFT(FFT),如第t帧信号,DFT系数为X_t(m),m = 0,1,...N
    • 将每一帧DFT系数按照时间顺序排列起来,得到一个矩阵Y \epsilon C^{T*N},且Y[t,m] = X_t(m)
    • 语谱图是一个三维图,横轴表示时间(t),纵轴表示频率,颜色的深浅表示当前时频点上幅度的大小|Y[t,m]|
2.4Step4 梅尔滤波器组和对数操作
  • DFT得到了每个频带上信号的能量,但是人耳对于频率的感知不是等间隔的,而是近似于对数的
  • 将线性频率转换为梅尔频率,梅尔频率与线性频率的转换公式为:

语音信号处理和自然语言处理(语音信号处理以及特征提取)(29)

  • 梅尔三角滤波器组:根据起始频率、中间频率和截止频率,确定各滤波器的系数

语音信号处理和自然语言处理(语音信号处理以及特征提取)(30)

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

语音信号处理和自然语言处理(语音信号处理以及特征提取)(31)

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

对X[m] = H[m]E[m]进行对数操作后,可变换为log|X[m]| = log|H[m]| log|E[m]|,此时谱包络和谱细节都将被提取到

Step5 IDFT

语音信号处理和自然语言处理(语音信号处理以及特征提取)(32)

语音信号处理和自然语言处理(语音信号处理以及特征提取)(33)

Step6 动态特征计算
  • 一阶差分(Delta,Δ),类比于速度,简单计算方法

语音信号处理和自然语言处理(语音信号处理以及特征提取)(34)

  • 二阶差分(Delta delta,ΔΔ),类比加速度,简单计算方法

语音信号处理和自然语言处理(语音信号处理以及特征提取)(35)

Step7 能量计算

语音信号处理和自然语言处理(语音信号处理以及特征提取)(36)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页