赣州网站建设机构,张槎建网站公司,网站重定向怎么做,陈木胜老婆wiki里说 在声音处理中#xff0c;梅尔频率倒谱( MFC ) 是声音的短期功率谱的表示#xff0c;基于非线性梅尔频率标度上的对数功率谱的线性余弦变换。 倒谱和MFC 之间的区别在于#xff0c;在 MFC 中#xff0c;频带在梅尔尺度上等距分布#xff0c;这比正常频谱中使用的线… wiki里说 在声音处理中梅尔频率倒谱( MFC ) 是声音的短期功率谱的表示基于非线性梅尔频率标度上的对数功率谱的线性余弦变换。 倒谱和MFC 之间的区别在于在 MFC 中频带在梅尔尺度上等距分布这比正常频谱中使用的线性间隔频带更接近人类听觉系统的响应。这种频率扭曲可以更好地表示声音例如在可能会降低传输带宽的音频压缩中以及音频信号的存储要求。 梅尔频率倒谱系数( MFCC ) 是共同构成 MFC 的系数。它们源自音频剪辑的一种倒谱表示。 信号的梅尔频率倒谱系数 (MFCC) 是一小组特征通常为 10-20它们简明地描述了 spectral envelope 的整体形状。在MIR中它常被用来描述音色。 本文参考了Gender identification of a speaker using MFCC and GMM论文中描述的MFCC把语音转换为参数方法 将一个语音信号转换为MFCC要以下几个步骤 预加重滤波器 pre-emphasis filter 滤波
让采样后的信号通过一个滤波器并调整高低频率的强度。浊音区域的频谱通过预加重进行补偿预加重会放大高频区域并执行滤波。简单描述实现就是 α是滤波器的系数常为0.95-0.97 但是这是很多年前因为有限的计算资源迫使开发人员创建的方法。 对于信号消歧而言较高的频率比较低的频率更为重要。 在古早的时间里应用模拟预加重滤波器会更容易获得好结果因此大家都用了预加重。 预加重的另一个好特性是它有助于处理录音中经常出现的 DC offset 直流偏移因此它可以改进基于能量的语音活动检测。 而现代语音识别不需要预加重。预加重在后期通过 channel normalization如倒谱均值归一化进行补偿因此它应该根本没有影响。
预加重的好处
平衡频谱避免 Fourier transform 操作期间的数值问题改善信号噪声比 Signal-to-Noise Ratio (SNR)
framing 汉明窗Hamming window处理
与所有语音分析方法一样MFCC 方法也适用于语音具有固定声学特征的短部分。即进行分帧framing一帧有N个采样点 这些部分通常选择为 20-30 毫秒沿信号偏移 10-15 毫秒。 在大多数情况下对整个信号进行傅里叶变换没有意义因为会随着时间的推移丢失信号的频率轮廓时序信息。通过对这个短时间帧进行傅立叶变换我们可以通过连接相邻帧来获得信号频率轮廓的良好近似这句话没怎么理解这个良好近似。每一帧都包含其前一帧的一部分。 语音处理中的典型帧大小范围为 20 到 40 毫秒连续帧之间有 50% (/-10%) 的重叠。 通常的设置是 帧大小为 25 msframe_size 0.025 和 10 ms stride15ms overlap frame_stride 0.01。 在语音应用中汉明窗通常是首选。其公式为 可以用np.hamming
频率频谱图
语音信号被划分成分析窗口通过FFT从时域变换到频域。这种表示语音信号频率分布的符号称为幅度谱。 amplitude spectrum / magnitude spectrum 我们现在可以做一个 N- 对每一帧进行点FFT计算频谱也称为短时傅立叶变换STFT其中 N通常为 256 或 512NFFT 512然后使用以下公式计算功率谱 也就是对每一帧进行FFT变换
Mel-Frequency Warping
为了将获得的振幅谱转换为 mel-scale使用相对于 mel-scale 线性放置的滤波器组。该组由重叠 50% 的三角形带通滤波器组成。一般滤波系数取值在20~30之间。
创建mel filter bank
mel filter的公式 滤波组的公式
计算log mel spectrum
计算滤波器组和频率频谱图的内积再进行log计算 有点不懂的是他算的公式是20 * np.log10(fbank)有点不太清楚这个公式是哪里来的。感觉用librosa库的会多一些
离散余弦变换 (DCT)的 liftering
主要作用是对滤波器组进行去相关操作丢弃除了自己设定的num_ceps以外的值这些值代表滤波器组系数的快速变化而这些细节对自动语音识别 (ASR) 没有什么帮助然后将lift与mfcc相乘计算外积以弱化较高的 MFCC据称可以改善噪声信号中的语音识别 cep_lifter 是 Cepstral liftering order num_ceps 是 number of cepstral coefficients (C1-C12, omitting C0) lift 1 (cep_lifter / 2.0) * np.sin(np.pi * np.arange(num_ceps) / cep_lifter)