MFCC特征提取详细计算过程

本文详细介绍了MFCC特征提取的步骤,包括预处理、FFT变换、加Mel滤波器组、对数运算和DCT变换。通过Matlab设计Mel三角形滤波器,并解释了滤波器组的设计和计算过程,最终得到MFCC特征。
摘要由CSDN通过智能技术生成

一、MFCC计算总体流程

1.信号的预处理,包括预加重(Preemphasis),分帧(Frame Blocking),加窗(Windowing)。假设语音信号的采样频率fs=8KHz.由于语音信号在10-30ms认为是稳定的,则可设置帧长为80~240点。帧移可以设置为帧长的1/2.

预加重处理其实是一个高通滤波器,该高通滤波顺的传递函数为:

              语音特征参数MFCC的提取及识别          

其中的取值为0.97,该高通滤波器作用是滤去低频,使语音信号的高频特性更加突现。

   由于语音信号只在较短的时间内呈现平稳性(一般认为 10-30ms ),(项目中每帧是24ms,48K pcm每ms 48个采样点,24 * 48 = 1152)因此将语音信号划分为一个一个的短时段即一帧。同时为避免丢失语音信号的动态信息,相邻帧之间要有一段重叠区域,重叠区域一段为帧长的
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中进行MFCC特征提取可以按照以下步骤进行: 1. 首先,将音频信号通过窗函数分帧处理。可以使用`buffer`函数将音频信号分成多个帧,每个帧的长度通常为20-40毫秒。 2. 对每个帧应用离散傅立叶变换(DFT)以获取频谱信息。可以使用`fft`函数对每个帧进行DFT,得到频谱图。 3. 对频谱图进行滤波器组操作。使用一组Mel滤波器对频谱图进行滤波,得到Mel频谱图。 4. 对Mel频谱图进行对数操作。将Mel频谱图的值取对数。 5. 通过应用离散余弦变换(DCT)对对数Mel频谱图进行变换,得到MFCC特征。 以下是一个基本的MATLAB代码示例,演示了如何进行MFCC特征提取: ```matlab % 读取音频文件 filename = 'audio.wav'; [x, fs] = audioread(filename); % 分帧处理 frameLength = 0.025; % 帧长度(以秒为单位) frameOverlap = 0.01; % 帧重叠率 frameSize = round(frameLength * fs); frameStep = round((1 - frameOverlap) * frameSize); frames = buffer(x, frameSize, frameSize - frameStep, 'nodelay'); % 应用DFT nfft = 2^nextpow2(frameSize); spectrogram = abs(fft(frames, nfft)); % 计算Mel滤波器组 numFilters = 26; melFilters = melFilterBank(fs, nfft, numFilters); % 应用Mel滤波器组 melSpectrogram = melFilters * spectrogram; % 取对数 logMelSpectrogram = log(melSpectrogram); % 应用DCT numCoeffs = 13; % 取13个MFCC系数 mfcc = dct(logMelSpectrogram); mfcc = mfcc(1:numCoeffs, :); % 显示MFCC特征 imagesc(mfcc); ``` 此示例中,`audio.wav`是输入音频文件的路径。MFCC特征存储在`mfcc`变量中,并通过`imagesc`函数进行可视化。请注意,上述代码仅提供了基本的MFCC特征提取过程,你可以根据自己的需求进行进一步的调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值