用c语言提取44100hz的40个mfcc系数中当mel滤波器组为128个、加窗为1048时各个步骤的参数如何变化
时间: 2024-02-29 14:56:27 浏览: 16
在提取44100Hz的40个MFCC系数时,当Mel滤波器组为128个、加窗为1048时,各个步骤的参数如下:
1. 预加重:预加重滤波器的增益因子为0.97。
2. 分帧:将预加重后的语音信号分成长度为25ms或30ms的帧,且相邻两帧重叠10ms。
3. 加窗:对每一帧信号进行长度为1048的汉明窗加窗处理,以减少频域泄漏。
4. 快速傅里叶变换(FFT):对加窗后的每一帧信号进行FFT变换,将时域信号转换为频域信号,得到2048个频率点。
5. 功率谱估计:对FFT变换的结果进行模平方运算,得到每一帧信号的功率谱,有2048个功率谱系数。
6. Mel滤波器组:将功率谱通过128个Mel滤波器进行滤波,得到128个Mel频率倒谱系数(MFCC)。
7. 离散余弦变换(DCT):对MFCC系数进行DCT变换,得到最终的40个MFCC系数。
8. 能量归一化:对MFCC系数进行能量归一化处理,以消除不同说话者之间的能量差异。
需要注意的是,当Mel滤波器组的数量增加时,可以更好地保留语音信号的谐波结构和共振峰信息,但也会增加计算量和存储量。当加窗长度为1048时,可以兼顾时域和频域的分辨率,以获得更好的频谱信息。
相关问题
用c语言提取一个44100hz的40个mfcc系数 当定义128个mel滤波器以及1024个汉明窗时 过程参数如何变化
在提取一个44100hz的40个mfcc系数时,如果定义128个mel滤波器以及1024个汉明窗,过程参数会如下变化:
1. 对音频信号进行预加重处理,以增强高频信号的能量;
2. 将信号分帧,每帧的长度为1024个采样点,且相邻两帧之间重叠部分为512个采样点;
3. 对每一帧信号进行汉明窗处理,以减少频域泄漏的影响;
4. 对每一帧信号进行快速傅里叶变换(FFT),得到每一帧的频谱信息;
5. 计算每一帧的梅尔频率倒谱系数(MFCC):
(1) 对每一帧的频谱信息进行梅尔滤波器处理,得到每个滤波器的能量;
(2) 对每个滤波器的能量进行离散余弦变换(DCT),得到每一帧的MFCC系数;
(3) 选取前40个MFCC系数作为该帧的MFCC特征向量;
6. 将每一帧得到的40个MFCC系数按时间顺序串联起来,得到完整的MFCC特征序列。
因此,当定义128个mel滤波器以及1024个汉明窗时,频谱信息的分辨率会更高,MFCC特征向量也会更精确。但同时也需要更多的计算资源。
用c语言提取44100hz的mfcc系数中各个步骤的参数如何变化
MFCC算法一般包括以下几个步骤:预加重、分帧、加窗、快速傅里叶变换(FFT)、功率谱估计、Mel滤波器组、离散余弦变换(DCT)和能量归一化等。各个步骤的参数在提取44100Hz的MFCC系数时会有所变化,具体如下:
1. 预加重:增强高频部分,以补偿语音信号在传输过程中的衰减,预加重滤波器的增益因子为0.97。
2. 分帧:将预加重后的语音信号分成长度为25ms或30ms的帧,且相邻两帧重叠10ms。
3. 加窗:对每一帧信号进行汉明窗加窗处理,以减少频域泄漏。
4. 快速傅里叶变换(FFT):对加窗后的每一帧信号进行FFT变换,将时域信号转换为频域信号。
5. 功率谱估计:对FFT变换的结果进行模平方运算,得到每一帧信号的功率谱。
6. Mel滤波器组:将功率谱通过Mel滤波器组进行滤波,得到Mel频率倒谱系数(MFCC)。
7. 离散余弦变换(DCT):对MFCC系数进行DCT变换,得到最终的MFCC系数。
8. 能量归一化:对MFCC系数进行能量归一化处理,以消除不同说话者之间的能量差异。
需要注意的是,以上步骤的参数可以根据不同的需求进行调整。例如,分帧长度、帧移、Mel滤波器数量等参数可以根据具体情况进行设置,以达到更好的MFCC特征提取效果。