Day07 - 语音特徵撷取 - MFCC

要让语音讯号能够输入到模型中进行训练,就必须将其转换成电脑看得懂的数值格式,也就是语音特徵

我们使用的语音特徵除了常见的梅尔频率倒谱系数(Mel-Frequency Cepstral
Coefficient,MFCC)
,还使用了 AFE 特徵(全名为分散式语音辨识系统之进阶前端特徵撷取演算法, DSR Advanced front-end feature extraction algorithm),使用的工具则是 HTK (网站连结:https://htk.eng.cam.ac.uk)。

MFCC 特徵撷取的流程如下图:
https://ithelp.ithome.com.tw/upload/images/20210918/20140944lxnbIYzKR6.png
MFCC 撷取流程图。输入为原始语音讯号,输出为MFCC特徵

梅尔频率倒谱系数能够考虑到人耳对於不同频率会有不同敏感度的特性,因而常用於语音辨识。语音讯号经过预强调 (Pre-emphasis) 来突显高频的部份,之後将讯号转变为音框(Frame),并对每一个音框乘上一汉明窗(Hamming Window) 来增加音框的连续性,接下来经由快速傅立叶转换(Fast Fourier Transform,FFT) 将讯号从时域转换到频域上,再将得到的能量频谱乘上M个三角带通滤波器(Triangular Bandpass Filters),获得每一个滤波器输出的对数能量(Log energy),将上述的M个对数能量透过离散余弦转换(Discrete Cosine Transform, DCT) 後,即可求得梅尔频率倒谱系数。

梅尔频率与一般频率(f)的转换公式如下:
https://chart.googleapis.com/chart?cht=tx&chl=M(f)%3D1125%5Cln(1%2B%5Cfrac%7Bf%7D%7B700%7D)

利用离散余弦转换,将 M 个对数能量 https://chart.googleapis.com/chart?cht=tx&chl=E_%7Bm%7D 代入公式:
https://chart.googleapis.com/chart?cht=tx&chl=C_%7Bn%7D%3D%5Csum_%7Bm%3D1%7D%5E%7BM%7D*cos%5B%5Cfrac%7B%5Cpi*n*(m-0.5)%7D%7BM%7D%5D%2Cn%3D1%2C2%2C3%2C...%2CM
https://chart.googleapis.com/chart?cht=tx&chl=C_%7Bn%7D 即为梅尔频率倒谱系数,M 为三角滤波器个数,N 为参数个数(通常 N=12,即为撷取前12个梅尔频率倒谱系数)。

  • 过零率
    过零率代表每个音框中,讯号通过零点(正转负或负转正)的次数,即当波形解析
    为音框後音框值之正负号改变速度,通常与能量搭配用於讯号的端点侦测。

  • 基本频率、谐音噪音比
    透过自动相关函数 (Auto-Correlation Function, ACF) 来计算谐音噪
    音比与基本频率,自动相关函数常用於讯号处理中,用来分析函数或一系列
    值,如时域讯号。假设一个音框 f 的长度为 i,其ACF定义如下:

    https://chart.googleapis.com/chart?cht=tx&chl=ACF(%5Ctau)%3D%5Csum_%7Bi%3D0%7D%5E%7Bn-%5Ctau-1%7Df(i)f(i%2B%5Ctau)

    其中为https://chart.googleapis.com/chart?cht=tx&chl=%5Ctau目标延迟时间,可透过适当的https://chart.googleapis.com/chart?cht=tx&chl=%5Ctau 值来算出音框的基本频率。谐音噪音比
    为谐音与噪因的比率,定义如下:

    https://chart.googleapis.com/chart?cht=tx&chl=HNR%3D10log%5Cfrac%7BACF(T_%7B0%7D)%7D%7BACF(0)-ACF(T_%7B0%7D)%7D

    其中https://chart.googleapis.com/chart?cht=tx&chl=T_%7B0%7D为所有目标延迟时间 https://chart.googleapis.com/chart?cht=tx&chl=%5Ctau中自动相关系数的最大值,即是谐波的能量。噪音可藉由总能量减去谐波的能量获得。

  • 均方根能量
    能量代表声音振幅的大小,振幅越大,表示此声音能量越大。在固定的音框
    下,能量定义为:

    https://chart.googleapis.com/chart?cht=tx&chl=E%3D%5Cfrac%7B1%7D%7BN%7D%5Csum_%7Bn%3D1%7D%5E%7BN%7Df%5E%7B2%7D_%7Bn%7D

    其中N为音框的大小,fn为音框的讯号值。为了能够有效的得到音框能量值,我们取其均方根:
    https://chart.googleapis.com/chart?cht=tx&chl=E_%7BRMS%7D%3D%5Csqrt%7B%5Cfrac%7B1%7D%7BN%7D%5Csum_%7Bn%3D1%7D%5E%7BN%7Df%5E%7B2%7D_%7Bn%7D%7D

最後产生的特徵是 39 维(dimension),包含12个倒频谱系数加上对数能量(log energy),以及这13个向量的一阶和二阶(delta and delta-delta)导数。
介绍完 MFCC 特徵之後,接下来我们接着介绍AFE特徵~


<<:  33岁转职者的前端笔记-DAY 19 练习写一个计算机

>>:  [13th][Day9] Pointer-1

Day 17: SOLID 设计原则 — SRP (待改进中... )

「SOLID 原则告诉我们该如何将函式和资料结构安排到类别中,及这些类别该如何相互关联」 「一旦我...

是工程师就自己简化流程,这种热血你我都有吧!?Windows铁人无脑自动发文带出30天最终大结局

终於,这天还是来了,是时候该做个了结,基於纯粹的好奇跟想炫技,想要认识Windows把她改造成自己喜...

D18 - 如何用 Apps Script 自动化地创造与客制 Google Docs?(五)Element 的更新

今天的目标 要怎麽简单快速地做出客制化地文件?今天,我们会教用 GAS 搭配 Goolge Doc。...

[Day28] 函式

在 Day21 - 物件的基础概念2 中有提到函式是物件的一个子型别,所以它本身就是一个物件,但函式...

Day 21 Ruby 类别 vs 模组

类别 vs 模组 类别跟模组很像是因为类别就是继承自模组的。 类别的方法数比模组多了三个(因为下层继...