发布网友 发布时间:2022-04-23 00:30
共3个回答
热心网友 时间:2022-05-07 18:04
MFCC是Mel-Frequency Cepstral Coefficients的缩写,顾名思义MFCC特征提取包含两个关键步骤:转化到梅尔频率,然后进行倒谱分析。
梅尔频率,梅尔刻度是一种基于人耳对等距的音高(pitch)变化的感官判断而定的非线性频率刻度。和频率的赫兹的关系为: m=2595log10(1+f700)所以当在梅尔刻度上面上是均匀分度的话,对于的赫兹之间的距离将会越来越大, 梅尔刻度的滤波器组在低频部分的分辨率高,跟人耳的听觉特性是相符的,这也是梅尔刻度的物理意义所在。 这一步的含义是:首先对时域信号进行傅里叶变换转换到频域,然后再利用梅尔频率刻度的滤波器组对应频域信号进行切分,最后每个频率段对应一个数值。倒谱分析。倒谱的含义是:对时域信号做傅里叶变换,然后取log,然后再进行反傅里叶变换。可以分为复倒谱、实倒谱和功率倒谱,我们用的是功率倒谱。
倒谱分析可用于将信号分解,两个信号的卷积转化为两个信号的相加。假设上面的频率谱X(k),时域信号为x(n)那么满足 X(k)=DFT(x(n))考虑将频域X(k)拆分为两部分的乘积:
X(k)=H(k)E(k)假设两部分对应的时域信号分别是h(n)和e(n),那么满足: x(n)=h(n)∗e(n)此时我们是无法区分开h(n)和e(n)。 对频域两边取log: log(X(k))=log(H(k))+log(E(k))然后进行反傅里叶变换: IDFT(log(X(k)))=IDFT(log(H(k)))+IDFT(log(E(k)))假设此时得到的时域信号如下: x′(n)=h′(n)+e′(n)虽然此时获得时域信号x’(n)即为倒谱,已经和原始的时域信号x(n)不一样,但是可以把时域信号的卷积关系转化为了线性加关系。 对应上图的频域信号,可以拆分成两部分的乘积:频谱的包络和频谱的细节。频谱的峰值即为共振峰,它决定了信号频域的包络,是辨别声音的重要信息,所以进行倒谱分析目的就是获得频谱的包络信息。包络部分对应的是频谱的低频信息,而细节部分对应的是频谱的高频信息。倒谱分析已经将两部分对应的时域信号的卷积关系转化为了线性加关系,所以只需要将倒谱通过一个低通滤波器即可获得包络部分对应的时域信号h’(t)。
热心网友 时间:2022-05-07 19:22
MFCC的物理含义,简单地说可以理解为语言信号的能量在不同频率范围的分布。如果把计算出的系数的低位部分(一般是前12个)作反傅立叶变换(IFFT),就可以得到上图中虚线表示的信号的频谱包络,也就是表示声带特征的那一部分低频信息。要理解为什么可以这么做,我们先看看倒谱的定义:一种信号的傅里叶变换谱经对数运算后再进行的傅里叶反变换(IFFT)。(IFFT其实就是对频谱再作一次FFT)人的发声过程可以看作是肺里的气流通过声带这个线性系统。如果用e(t)表示声音的输入激励(音高),h(t)表示声带的响应(也即我们需要获取的特征),那么听到的语音信号为 ,即两者的卷积。在频域内则可以表示为两者的乘积 。通常在频域分析中我们只关注频谱的能量,忽略其相位信息,其物理意义是一样的,即表示信号频谱的能量在不同频率区间的分布。每一个滤波器的作用就是得到对应频率区间的频谱能量,如果我们有26个三角滤波器,就会得到26个MFCC系数,这时候再取低位的系数就可以代表声道的特征。
热心网友 时间:2022-05-07 20:56
MFCC有多种实现,各种实现细节上会略有不同,但总的思路是一致的。以识别中常用的39维MFCC为例,分为: 13静态系数 + 13一阶差分系数 + 13 二阶差分系数其中差分系数用来描述动态特征,也即声学特征在相邻帧间的变化情况。 静态mfcc假设帧与帧之间相互,这与实际情况未必符合,比如浊音时相邻帧之间相关程度很高,对应的静态mfcc可能也有较大相关,而动态系数描述了相邻帧的联系,解决了静态mfcc不合理假设可能带来的问题。(极限情况下假设浊音时相邻帧静态mfcc完全相等,则差分系数为零,而清音时差分系数则和静态mfcc幅度相当。这种相邻帧特征的关系通过差分特征得以获取)13维静态系数由 1 log Energy 系数 + 12 dct 系数 构成, log Energy 可以用来区分语音帧和非语音帧, 下面分析12 dct系数的含义:N -> 24首先对一帧信号做短时傅里叶变换,得到能量谱(幅度谱平方),直接将所有频点 (N维)能量作为特征有非常大的冗余,因为听觉掩蔽效应许多相邻频率对人耳作用结果相似,因此通常用少量filterbank将频域划分成少量子带(比如24个filterbank,这些子带在mel频域是均匀划分的,相邻子带有一半重叠,在自然频域则是低频窄高频宽), 每个子带输出子带能量和作为特征表征该频率段的能量水平,这样就得到24个特征。24 -> 12这里首先要对24个子带能量求对数,这也是叫它倒谱系数的原因,我理解这里求对数只是压缩一下动态范围,也可能是模仿人耳对数式感知声强的特点。由于子带有重叠,所以相邻子带能量有一定冗余,可以采用 Karhunen-Loeve变换去相关并选择主成分进行降维,也就是主成分分析。这个变换比较复杂,DCT变换是K-L变换的一个很好近似。通过DCT变换对24个子带能量特征进行去相关并降到13维, 包括C0~C12。 C0其实就是各个子带的总能量水平,我觉得和 log Energy想要表达的东西是一致的,因此有的实现保留C0不要log 。Energy,有的实现则相反,应该差别不大。但主流方式是舍弃C0, 保留C1~C12共12维特征。 另外也有文献认为低阶和高阶dct系数都很容易受噪声影响,而中阶系数则相对稳定许多,因此也有一些实现中带有倒谱提升环节,其目的就是抑制C1 C12这类两端的系数,加强C6 C7这类中间的系数。