本文来自公众号“AI大道理”。

这里既有AI,又有生活大道理,无数渺小的思考填满了一生。

1 特征提取流程

在语音识别和话者识别方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scaleFrequency Cepstral Coefficients,简称MFCC)。

MFCC提取过程包括预处理、快速傅里叶变换、Mei滤波器组、对数运算、离散余弦变换、动态特征提取等步骤。

2 傅里叶家族

快速傅里叶变换即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。

傅里叶的两个论点:1 周期信号都可以表示成谐波关系的正弦信号的加权和。 2 非周期信号都可以用正弦信号的加权积分来表示。

四行:FS(连续、周期信号、无限长)、FT(连续、非周期信号、无限长)、DFS(离散、周期信号、无限长)、DTFT(离散、非周期信号、无限长)

超出三界外,不在四行中:DFT(离散、非周期、有限长)、FFT(fast DFT)、DCT(实DFT)

2.1 傅里叶级数(FS)

连续、周期信号、无限长->非周期、离散

任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示,称傅里叶级数为一种特殊的三角级数。

对于周期信号可以用一系列(连续周期为无穷个,离散周期为有限个)正弦波的叠加来表示。这些正弦波的频率都是基频的倍数。所以说周期信号的频率是离散的。 而且,周期信号有一个特点,信号的周期越长,信号的基频越小。当信号为周期信号时,傅立叶变换是不存在的,因为它不满足离散信号序列绝对级数和收敛(连续傅立叶变换要求连续信号在时间上必须可积)这一傅立叶变换的充要条件。

2.2 离散傅里叶级数(DFS)

离散、周期、无限长->周期、离散 离散傅里叶级数的谐波信号是有限的,这是因为离散对应于周期(第k个复指数序列和第N+k个是相等的。因此,离散周期函数的傅里叶级数只有N个频率成分)即 原信号:离散周期   傅里叶级数展开:周期离散 (谐波系数(傅里叶系数)为周期的,谐波频率是离散的)

2.3 傅里叶变换(FT)

连续、非周期、无限长->非周期、连续

由FS变化而来,连续时间非周期信号可以看成连续时间周期信号的周期趋向于无穷大,此时傅里叶级数(FS)的频率离散的谐波基频趋于无穷小,离散频率变成连续频率。FS变为FT了。 即信号时域:连续非周期,FT变换频域:非周期连续

2.4 离散时间傅里叶变换(DTFT)

离散、非周期、无限长->周期、连续

2.5 离散傅里叶变换(DFT)

离散、非周期信号、有限长—> 周期、离散

离散傅里叶变换是将有限长非周期系列作了周期开括(变成离散、周期、无限长),再作离散傅里叶级数,然后在离散傅里叶级数中截取一个周期定义的。

DTFT是给人用的,而DFT是给机器用的。机器的局限性在哪呢?机器不能表达一个无限长的序列,也不能表达连续的频域特征。对于一般的离散时间信号而言,直接用DTFT确实很好,非常便于我们分析信号的频域特征,但问题是这一套机器是用不了的。

AI大语音:不在四行中,乔装打扮变成其中之一,再进行变换,之后取出一个周期,做回自己;语音信号是进行DFT)

2.6 快速傅里叶变换(FFT)

FFT不是Fast FT,而是Fast DFT

FT的种类很多,以最简单的基于2的FFT为例。

FFT实际上一种分治算法。FFT将长度为NN 的信号分解成两个长度为\frac{N}{2}\frac{N}{2}信号进行处理,这样分解一直到最后,每一次的分解都会减少计算的次数。理解FFT分以下三个步骤进行:

步骤1:将信号x\left[n\right]x\left[n\right]分解成两个子信号 偶数样本点信号:x\left[2n\right]x\left[2n\right]; 奇数样本点信号:x\left[2n+1\right]x\left[2n+1\right];N=0,1,\cdots,\frac{N}{2}-1N=0,1,\cdots,\frac{N}{2}-1

步骤2:将两个求和项理解成两个长度为\frac{N}{2}\frac{N}{2}的DFT

步骤3:FFT的具体计算过程

对于任意kk都要进行NN次加法操作,所以DFT共有N^2N^2次乘法操作。 对于任意kk都要进行N-1N-1次加法操作,DFT共有N\left(N-1\right)N\left(N-1\right)次加法操作。 FFT共有N\left(\log_2N-1\right)N\left(\log_2N-1\right)次乘法操作和Nlog_2NNlog_2N次加法操作。

语音信号是有限长的离散信号。

原始一帧语音信号:

FFT后效果:

2.7 离散余弦变换(DCT)

由于许多要处理的信号都是实信号,在使用DFT时由于傅里叶变换时由于实信号傅立叶变换的共轭对称性导致DFT后在频域中有一半的数据冗余。

将DFT式子拆开,抽出实数部分:

则实数部分:

虚数部分:

又有:

而当x[n]是实偶信号时:

把DFT写成:

但是实际中并没有那么多实偶信号,我们就认为造出来。将信号长度扩大成原来的两倍,并变成2N,又为了让造出来的信号关于0对称,把整个延拓的信号向右平移 0.5 个单位,最终DCT变换公式:

附录(魔鬼写手)

 

 ——————

浅谈则止,细致入微AI大道理

扫描下方“AI大道理”,选择“关注”公众号

—————————————————————

—————————————————————

投稿吧   | 留言吧

▼下期预告▼

AI大语音(四)——特征提取

▼往期精彩回顾▼

AI大语音(一)——语音识别基础

AI大语音(二)——语音预处理

留你心,言你想

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐