FBK: filter bank

MFCC: Mel-frequency ceptral coefficients 梅尔频率倒谱系数

MFCC特征的计算过程:

输入是一段语音波形,shape=(14520,)

1.预加重pre emphasis:

为什么要预加重:语音在空气中传播,高频部分衰减的更厉害些,应该将衰减的这部分恢复出来。

怎样预加重:

pre_emphasis_coeff = 0.95
x(n) = x(n) - pre_emphasis_coeff * x(n-1)

预加重后shape=(14520,)

2.分帧:

frame_len = 25 # each frame length (ms)
frame_shift = 10 # frame shift length (ms)
frame_len_samples = frame_len*fs//1000 # each frame length (samples) =200
frame_shift_samples = frame_shift*fs//1000 # frame shifte length (samples) =80

分帧后shape=(180,200) 即这段语音对应180个帧,每帧200个采样点。

3.预加窗

为什么要预加窗:窗函数很平滑,可以让每帧两端的采样点平滑地衰减到零,这样可以傅里叶变换后旁瓣的强度,取得更高质量的频谱。

汉明窗:

窗的长度也是200,与每帧的采样点数相同。中间最大值为1,两边逐渐衰减到零。

加窗前某帧的图像:

加窗后的图像:

可以看到,加窗后该帧数据的两端被逐渐衰减到零了。

加窗后的shape=(180,200)

3. (离散)傅里叶变换

物理含义:将信号从时域转换到频域,得到各个频率上(或者说各个频率点上)的幅度和相位。

K=512 # length of DFT

傅里叶变换后的shape=(180,257)

第2轴的维度是257,表示我们得到了257个频率点上的幅度和相位。傅里叶变换后是复数,复数的实部表示该频率点上正弦信号的幅度,复数的虚部表示该频率点上正弦信号的相位。

4.计算能量谱

得到各个频率上(各个频率点上)的能量。

计算方法:复数的实部和虚部的平方和

power_spec = np.absolute(freq_domain_data) ** 2 * (1/K) # power spectrum

计算能量谱的shape=(180,257)

5.梅尔滤波Mel-filter

WHY: 人耳对语音的低频部分和高频部分的敏感度不一样,对低频部分更敏感,对高频部分不敏感。

梅尔频率与普通的HZ频率是一一对应的,计算方式如下:

""" 3. Apply the mel filterbank to the power spectrum, sum the energy in each filter.The Mel scale relates perceived frequency, or pitch, of a pure tone to its actual measured frequency. Humans are much better at discerning small changes in pitch at low frequencies than they are at high frequencies. Incorporating this scale makes our features match more closely what humans hear.The formula for converting from frequency to Mel scale is:M(f) = 2595*log10(1+f/700)And formula for converting from Mel scale to frequency is:F(m) = 700*(10**(m/2595)-1)
"""
low_frequency = 20 # We don't use start from 0 Hz because human ear is not able to perceive low frequency signal.
high_frequency = fs//2 # if the speech is sampled at f Hz then our upper frequency is limited to 2/f Hz. =4000
low_frequency_mel = 2595 * np.log10(1 + low_frequency / 700) # =31.74
high_frequency_mel = 2595 * np.log10(1 + high_frequency / 700) # = 2146.06

将频率范围[low_frequency, high_frequency]分成40个频率区间,我们要计算每个频率区间内的能量。

计算方法:构造一组滤波器,然后将滤波器与能量谱相乘

梅尔滤波后的shape=(180, 40)

第2维的40就对应40个频率区间。

6.取log

WHY:纵轴的放缩,可以放大低能量处的能量差异。想想log的图像

取log后的shape=(180,40)

至此,我们得到了FBK特征。

7.离散余弦变换DCT

一般只保留离散余弦变换后的前12~20个点

num_ceps = 12 # MFCC feature dims, usually between 2-13.
# feature from other dims are dropped beacuse they represent rapid changes in filter bank coefficients and they are not helpful for speech models.
mfcc = dct(log_fbank, type=2, axis=1, norm="ortho")[:, 1 : (num_ceps + 1)]

离散余弦变换后的shape=(180, 12)

至此,我们得到了MFCC特征。

一些总结:

1.MFCC特征是在FBK特征的基础上计算得到;

2.MFCC特征比FBK特征维度更低。一般FBK特征是40维,MFCC特征是13维。

FBK和MFCC特征相关推荐

  1. python声音分类_Python音频信号分类MFCC特征神经网络

    我试图把声音信号从语音到情感进行分类.为此,我提取音频信号的MFCC特征,并将其输入到一个简单的神经网络(由PyBrain的BackpropTrainer训练的前馈网络).不幸的是结果非常糟糕.从这5 ...

  2. python从语音生成MFCC特征

    python从语音生成MFCC特征 文章目录 python从语音生成MFCC特征 MFCC特征原理 引入必要的库 生成MFCC特征 MFCC特征原理 @TODO 引入必要的库 import os im ...

  3. 利用python声音处理库librosa提取声音信号的mfcc特征及特征融合

    利用python库librosa提取声音信号的mfcc特征及特征融合 前言 librosa库介绍 librosa 中MFCC特征提取函数介绍 解决特征融合问题 总结 前言 写这篇博文的目的有两个,第一 ...

  4. 【语音识别】基于mfcc特征模板匹配算法实现声纹识别matlab源码含GUI

    在任意一个Automatic speech recognition 系统中,第一步就是提取特征.换句话说,我们需要把音频信号中具有辨识性的成分提取出来,然后把其他的乱七八糟的信息扔掉,例如背景噪声啊, ...

  5. 从视频中提取音频的MFCC特征

    具体包含以下两部分: 1.安装并使用ffmpeg从视频中提取音频文件 2.安装并使用librosa提取音频的MFCC特征 一.从视频中提取音频 1)安装ffmpeg 从ffmpeg的官网下载ffmpe ...

  6. MFCC特征使用方法总结

    学习笔记, 音乐检索, 音频类学习 MFCC特征使用方法总结 joanna2017年11月27日 项目需要用到MFCC特征,关于MFCC的特征如何使用,一开始我很困惑.现在分享一些自己总结的常见的MF ...

  7. LibROSA库提取MFCC特征的过程解析

    目录 源码解析 获取梅尔频谱 分帧 加窗 快速傅里叶变换 梅尔滤波器 取对数 离散余弦变换 总结 LibROSA(本文使用的版本是0.6.3)中的mfcc函数可以用来提取音频的梅尔频率倒谱系数(Mel ...

  8. python 提取MFCC特征、一阶差分及二阶差分

    依赖库: python-speech-features-0.6 import python_speech_features import numpy as np import scipy.io.wav ...

  9. 声音信号识别(一)——提取MFCC特征

    文章背景 本文基于对特殊声音(警笛声.汽车鸣笛声)的MFCC特征提取. 应用软件:MATLAB 2020A 数据集来源:由于作为自己学习过程中的记录,暂时采用 1.

最新文章

  1. 网页性能测试---webpagetest
  2. 一个虚拟键盘的简单思路
  3. 一文搞定JS事件基础与进阶
  4. did双重差分法_Stata中双重差分操流程及代码
  5. 用strtotime()和date()函数算出2019年9月的周日日期
  6. JavaScript-面试 表单验证
  7. 利用位运算实现加减乘除
  8. chrome下方的copeascURL(cmd) 复制的内容,在windows的cmd中不可用的原因
  9. 【吴恩达机器学习】学习笔记——4多元线性回归
  10. 【转】Sql递归查询
  11. python 推荐系统库_python-recsys:一款实现推荐系统的python库
  12. Unhandled exception in MSDEV.EXE(DEVSHL.DLL) 0xC0000005 access violation
  13. 碳排放计算-20210515
  14. 老路《用得上的商学课》学习开篇(自序)
  15. 桌面图标有蓝底处理刚才
  16. Splunk中12小时制AM/PM的日期转换
  17. 100集华为HCIE安全培训视频教材整理 | Agile Controller终端安全管理特性(三)
  18. 常见html的MIME类型
  19. Ubuntu必备软件
  20. 商誉暴雷致巨亏,股价再创新低,掌趣科技能“掌”未来吗?

热门文章

  1. 字谜大全及答案100个_检查字谜(检查两个字符串是否是字谜)
  2. 如何高效的使用 MacBook 的技巧集锦来啦!
  3. AI人工智能在2020年的7个发展趋势
  4. JS基础知识day8
  5. 从零开始仿写一个抖音App——基于FFmpeg的极简视频播放器
  6. 提了离职,公司给我涨薪了,还能待下去吗?
  7. 冰冰学习笔记:这些链表练习题,你会吗?(中)
  8. 苹果计算机怎么返回上一步操作,iPhone12如何返回上一步 iPhone12返回上一步及关闭程序方法...
  9. dataWrangler简介及使用方法
  10. Beyond Meat, Inc.宣布达成历史性协议,将植物肉生产带到毗邻上海的战略重地嘉兴经济技术开发区以供应中国市场