利用python声音处理库librosa提取声音信号的mfcc特征及特征融合
利用python库librosa提取声音信号的mfcc特征及特征融合
- 前言
- librosa库介绍
- librosa 中MFCC特征提取函数介绍
- 解决特征融合问题
- 总结
前言
写这篇博文的目的有两个,第一是希望新手朋友们能够通过这篇博文了解到 python 还有这么强大的一个声音处理库;第二则是本人在用该库时发现的一个小问题,就是库由于封装的太完备,在我们想做特征融合时候会出现一点小问题,在这我将指出并提供一种方案。具体的库使用指导还请参照Librosa 0.6
librosa库介绍
Liborsa是python的一个做音乐和声音分析的包,它提供了创建音乐信息检索系统所必要的构建块。这个库包含有丰富的声音信号处理工具,例如声音读取、采样率转换、stft、istft等等。
librosa 中MFCC特征提取函数介绍
# Mel-frequency cepstral coefficients (MFCCs)梅尔倒谱系数
librosa.feature.mfcc(y=None, sr=22050, S=None, n_mfcc=20, dct_type=2, norm='ortho', **kwargs)
参数介绍:
y:声音信号的时域序列
sr:采样频率(默认22050)
S:对数能量梅尔谱(默认为空)
n_mfcc:梅尔倒谱系数的数量(默认取20)
dct_type:离散余弦变换(DCT)的类型(默认为类型2)
norm:如果DCT的类型为是2或者3,参数设置为"ortho",使用正交归一化DCT基。归一化并不支持DCT类型为1
kwargs:如果处理时间序列输入,参照melspectrogram
返回:
M:MFCC序列
例子:
从一个时间序列中计算mfcc
>>> y, sr = librosa.load(librosa.util.example_audio_file(), offset=30, duration=5)
>>> librosa.feature.mfcc(y=y, sr=sr)
array([[ -5.229e+02, -4.944e+02, ..., -5.229e+02, -5.229e+02],[ 7.105e-15, 3.787e+01, ..., -7.105e-15, -7.105e-15],...,[ 1.066e-14, -7.500e+00, ..., 1.421e-14, 1.421e-14],[ 3.109e-14, -5.058e+00, ..., 2.931e-14, 2.931e-14]])
利用预先计算好的对数能力梅尔谱计算MFCC
>>> S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128,fmax=8000)
>>> librosa.feature.mfcc(S=librosa.power_to_db(S))
array([[ -5.207e+02, -4.898e+02, ..., -5.207e+02, -5.207e+02],[ -2.576e-14, 4.054e+01, ..., -3.997e-14, -3.997e-14],...,[ 7.105e-15, -3.534e+00, ..., 0.000e+00, 0.000e+00],[ 3.020e-14, -2.613e+00, ..., 3.553e-14, 3.553e-14]])
解决特征融合问题
采用封装好的函数进行mfcc提取,我们得到的是一个经过分帧加窗及其一系列处理后的数据,要想在每一帧的mfcc后面添加其他特征首先要得到分帧的参数设置,然后对待融合特征采用相同的分帧机制,才能保证二者的融合是在相同帧的情况下进行的。例如我们要对mfcc特征与短时能量特征进行融合,我们在提取二者过程中要保证其分帧方式相同,然后对求得特征进行拼接。mfcc与能量的特征融合代码如下:
import librosa
import matplotlib.pyplot as plt
import numpy as nppath='E:\\Experiment\\soundbank\\cut\\trainall\\screams\\2\\4,00001_2__11.wav' # 声音文件绝对路径
y,sr=librosa.load(path,None) # 以原采样频率读取声音文件数据,并返回该数据及其采样频率
# 设置梅尔滤波器组参数,并设置分帧参数n_fft--帧长,hp_length--帧移
S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=60,n_fft=1024, hop_length=512,fmax=16000)
mfcc=librosa.feature.mfcc(y, sr, S=librosa.power_to_db(S),n_mfcc=40) # 提取mfcc系数
stft_coff=abs(librosa.stft(y,1024,512,1024)) #分帧然后求短时傅里叶变换,分帧参数与对数能量梅尔滤波器组参数设置要相同
energy = np.sum(np.square(stft_coff),0) #求每一帧的平均能量
MFCC_Energy = np.vstack((mfcc,energy)) # 将每一帧的MFCC与短时能量拼接在一起
其他特征融合方式与上相同。
总结
python库虽然多,为了以后更好的发展还是建议学习时候从原理开始学起,后面我将会继续补充关于python编程过程中遇到的一些小问题,以及技巧,欢迎关注交流。
利用python声音处理库librosa提取声音信号的mfcc特征及特征融合相关推荐
- 用python画玫瑰花教程-利用Python的turtle库绘制玫瑰教程
用Python的turtle库绘图是很简单的,闲来无事就画了一个玫瑰花,下面奉上源码.... 源码: ''' Created on Nov 18, 2017 @author: QiZhao ''' i ...
- 利用Python的turtle库画自行车
利用Python的turtle库画自行车 前言 前言总得说点什么.疫情在家,慕课上学习北理工嵩天等老师的<python语言程序设计>[1],觉得turtle画图,挺有意思,既然骑不了自行车 ...
- 利用Python的turtle库绘制四叶草
利用Python的turtle库绘制四叶草 turtle库的基本使用 turtle库属于Python的标准库,即可以直接用import导入,无需额外安装下载. 这个博主写的蛮好的,我就不献丑了嘿嘿嘿( ...
- 下面哪个python库不能用于提取网页信息_利用python的webscraping库采集抓取爱帮网电话号码...
利用python的webscraping模块抓取爱帮网电话号码,本文采集该页面的标题和2个电话号码, 具体的python代码: # -*- coding: UTF-8 -*- ''' Created ...
- Python使用标准库zipfile提取docx文档中所有图片
清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30 ============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔 ...
- python连接opencv库_利用Python和OpenCV库将URL转换为OpenCV格式的方法
今天的博客是直接来源于我自己的个人工具函数库. 过去几个月,有些PyImageSearch读者电邮问我:"如何获取URL指向的图片并将其转换成OpenCV格式(不用将其写入磁盘再读回)&qu ...
- 利用python的turtle库绘制玫瑰的步骤_用python turtle画玫瑰
1.turtle 库 2.画玫瑰的代码: import turtle turtle.penup() turtle.left() turtle.fd() turtle.pendown() turtle. ...
- 利用python的turtle库写生日祝福
还在简单的写生日祝福吗?自从学了python,我们可以更高大上一点,利用python的海龟画图来"画"个生日祝福. from turtle import * lf=left bd= ...
- 利用python的turtle库画一个图形
今天我们用python的turtle库制作一个简单的图形(新手必看) [注:turtle是python的标准自带库,无需安装!] 好的废话不多说我们开始写代码 #制作人:中将 #一起自学python ...
最新文章
- MySQL与MongoDB之SQL语法对比
- android文件选择器_Android存储空间的最佳实践(上)
- [Vue warn]: Error in render: TypeError: _self.$scopedSlots.default is not a function 错误解决
- HEVC代码学习0:HM使用+码流分析教程
- Linux zmap安装
- 心里窝火无语的图片_很无语的心情说说图片
- 现场总线与计算机网络的最大区别,现场总线与局域网的区别是什么
- java集合(超详细)
- SIM7600模块固件升级(模块自身升级)
- 计算机提示存储空间不足怎么办,Win7软件提示"存储空间不足,无法处理此命令"怎么办...
- .fire勒索病毒如何删除 .fire后缀文件恢复(Dharma)
- 数学建模笔记(十五):多元统计分析及R语言建模(判别分析、聚类分析、主成分分析、因子分析,含数据代码注释,均可供运行)
- [转] R 解读逻辑回归结果:回归系数,OR
- Windows10安装WDK报错setup cannot locate windows debugging wdk integration-x86_en-us.msi
- 美国智能网联最新政策动态(2021年9-11月)
- 网络检测,排错的顺序与方法
- 计算机二级系统班C语言讲义,计算机二级C语言讲义8
- 视频融合平台EasyCVR如何快速更改快照文件的raw后缀?
- 【PHP开源产品】Ecshop的商品筛选功能实现分析之一(主要对category.php进行分析)
- Windows下载安装docker详细步骤