在语音识别领域,比较常用的两个模块就是librosa和python_speech_features了。

最近也是在做音乐方向的项目,借此做一下笔记,并记录一些两者的差别。下面是两模块的官方文档

LibROSA - librosa 0.6.3 documentation​librosa.github.ioWelcome to python_speech_features’s documentation!​python-speech-features.readthedocs.io

直接对比两文档就可以看出librosa功能十分强大,涉及到了音频的特征提取、谱图分解、谱图显示、顺序建模、创建音频等功能,而python_speech_features只涉及了音频特征提取。就特征提取的实现方法和种类来看,两者也有所不同。

python_speech_features的特征

支持的特征:

  • python_speech_features.mfcc() - 梅尔倒谱系数
  • python_speech_features.fbank() - 滤波器组能量
  • python_speech_features.logfbank() - 对数滤波器组能量
  • python_speech_features.ssc() - 子带频谱质心特征

提取mfcc、logfbank特征的方法

from 

python_speech_features的比较好用的地方就是自带预加重参数,只需要设定preemph的值,就可以对语音信号进行预加重,增强高频信号。

python_speech_features模块提供的函数

python_speech_features.base.mfcc(signal, samplerate=16000, winlen=0.025, winstep=0.01, numcep=13, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, ceplifter=22, appendEnergy=True, winfunc=<function <lambda>>)

计算一个音频信号的MFCC特征

返回: 一个大小为numcep的numpy数组,包含着特征,每一行都包含一个特征向量。

参数:

signal - 需要用来计算特征的音频信号,应该是一个N*1的数组

samplerate - 我们用来工作的信号的采样率

winlen - 分析窗口的长度,按秒计,默认0.025s(25ms)

winstep - 连续窗口之间的步长,按秒计,默认0.01s(10ms)

numcep - 倒频谱返回的数量,默认13

nfilt - 滤波器组的滤波器数量,默认26

nfft - FFT的大小,默认512

lowfreq - 梅尔滤波器的最低边缘,单位赫兹,默认为0

highfreq - 梅尔滤波器的最高边缘,单位赫兹,默认为采样率/2

preemph - 应用预加重过滤器和预加重过滤器的系数,0表示没有过滤器,默认0.97

ceplifter - 将升降器应用于最终的倒谱系数。 0没有升降机。默认值为22。

appendEnergy - 如果是true,则将第0个倒谱系数替换为总帧能量的对数。

winfunc - 分析窗口应用于每个框架。 默认情况下不应用任何窗口。 你可以在这里使用numpy窗口函数 例如:winfunc=numpy.hamming

python_speech_features.base.fbank(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, winfunc=<function <lambda>>)

从一个音频信号中计算梅尔滤波器能量特征

返回:2个值。第一个是一个包含着特征的大小为nfilt的numpy数组,每一行都有一个特征向量。第二个返回值是每一帧的能量

python_speech_features.base.logfbank(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97)

从一个音频信号中计算梅尔滤波器能量特征的对数

返回: 一个包含特征的大小为nfilt的numpy数组,每一行都有一个特征向量

python_speech_features.base.ssc(signal, samplerate=16000, winlen=0.025, winstep=0.01, nfilt=26, nfft=512, lowfreq=0, highfreq=None, preemph=0.97, winfunc=<function <lambda>>)

从一个音频信号中计算子带频谱质心特征

返回:一个包含特征的大小为nfilt的numpy数组,每一行都有一个特征向量

librosa的特征提取

librosa的可以提取的特征种类十分丰富

篇幅原因不多介绍

librosa.features.mfcc(y=None,sr=22050,S=None,n_mfcc=20,dct_type=2,norm='ortho',**kwargs)

y, sr = librosa.load('test.wav',offset=30, duration=5)
librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40) # 返回shape=(n_mfcc, timestep)的二维矩阵

librosa.feature.spectral_centroid(y=None,sr=22050,S=None,n_fft=2048,hop_length=512,freq=None)
计算频谱质心

>>> y, sr = librosa.load('test.wav')
>>> cent = librosa.feature.spectral_centroid(y=y, sr=sr)
>>> cent
array([[ 4382.894,   626.588, ...,  5037.07 ,  5413.398]])

蓝调音乐的频谱质心在频谱偏中心的位置,金属音乐在靠后的位置

librosa.feature.zero_crossing_rate(y,frame_length=2048,hop_length=512,center=True,**kwargs)

计算过零率

>>> y, sr = librosa.load('test.wav')
>>> librosa.feature.zero_crossing_rate(y)
array([[ 0.134,  0.139, ...,  0.387,  0.322]])

相对于python_speech_features来说,librosa没有预加重的处理。或者说librosa提供自定义预加重功能。

预加重的一般传递函数为

差分方程实现预加重的方程为

python计算短时自相关函数 音频信号_librosa与python_speech_features相关推荐

  1. Python信号处理:自相关函数(对标MATLAB中的autocorr)

    摘要:Python中,更确切地说是numpy.scipy.statsmodels这些库中都有计算相关的方法.但numpy和scipy中的correlate方法的定义和MATLAB中的不同,导致计算结果 ...

  2. librosa能量_librosa与python_speech_features

    在语音识别领域,比较常用的两个模块就是librosa和python_speech_features了. 最近也是在做音乐方向的项目,借此做一下笔记,并记录一些两者的差别.下面是两模块的官方文档 Lib ...

  3. librosa能量_librosa能量_librosa与python_speech_features

    在语音识别领域,比较常用的两个模块就是librosa和python_speech_features了. 最近也是在做音乐方向的项目,借此做一下笔记,并记录一些两者的差别.下面是两模块的官方文档LibR ...

  4. 使用OpenCV和Python计算图像的“彩色度”

    使用OpenCV和Python计算图像"彩色度" 1. 效果图 2. 炫彩度量方法是什么? 3. 源代码 参考 你是否尝试过计算每个图像的炫彩值,并根据炫彩值对自己的图像数据集进行 ...

  5. Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例

    Python计算训练数据集(测试集)中某个分类变量阴性(阳性)标签样本的不同水平(level)或者分类值的统计个数以及比例 目录

  6. Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序、获取交集元素及其索引、如果输入数组不是一维的,它们将被展平(flatten),然后计算交集

    Python计算两个numpy数组的交集(Intersection)实战:两个输入数组的交集并排序.获取交集元素及其索引.如果输入数组不是一维的,它们将被展平(flatten),然后计算交集 目录

  7. Python使用datetime中的timedelta模块实现时间增减:python计算100天后是哪年那月那日?

    Python使用datetime中的timedelta模块实现时间增减:python计算100天后是哪年那月那日? 目录

  8. python计算特征的统计值并文本输出

    python计算特征的统计值并文本输出 # 输出统计分位数 df.describe(percentiles=[0.05, 0.25, 0.5, 0.75, 0.95]) featname:A => ...

  9. python计算特征与目标的相关性并可视化

    python计算特征与目标的相关性并可视化 pandas计算相关性 # 相关性 tips.corr() Out[2]: total_bill tip size total_bill 1.000000 ...

最新文章

  1. php 实现对称加密算法,PHP实现简单的对称加密和解密方法
  2. 一个简单IOC与DI示例
  3. WebDriver中的元素状态检测表
  4. python3.10_概述 — Python 3.10.0a2 文档
  5. IKAnalyzer进行中文分词和去停用词
  6. format 函数包含_Python成为专业人士笔记-高级对象Format格式化
  7. mysql 时间函数大全_mysql常用的日期函数汇总
  8. (转) RabbitMQ学习之发布/订阅(java)
  9. 循环中的continue功能
  10. 没有可用软件包 docker-compose。_R语言CRAN软件包Meta分析
  11. 如此轻松就能搭建聊天机器人,我也要弄一个~
  12. 纽微特记事:刚内斗胜利,就说业务难做
  13. 高通mtk手机常用指令
  14. 空气质量等级c语言编程,华中科技大学C语言课设空气质量检测信息管理系统技术分析.docx...
  15. SQL注入入侵动网站(MSSQL)
  16. 计算机技术 在职,计算机技术在职研究生招生简章
  17. 基于Python实现的实时聊天系统
  18. Elliptic Curve Cryptography: a gentle introduction
  19. [案例4-2]饲养员喂养动物
  20. win10 安装并配置docker

热门文章

  1. 如何兼容自训练与预训练:更高效的半监督文本分类模型
  2. 今晚直播 | 商汤科技X-Lab刘宇:神经网络结构与大规模优化方法
  3. 基于知识图谱的问答系统入门—NLPCC2016KBQA数据集
  4. Python SQLAlchemy入门教程
  5. oracle用户锁定及修改密码
  6. 用c#输出正九九乘法表_用C#写九九乘法表
  7. 【虚拟化】Dockerfile构建JDK镜像
  8. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第二章——自编解析与答案
  9. 华硕老毛子(Padavan)——L2TP连接自动重连解决方案
  10. Windows——Windows恢复环境(Windows RE)