作者:桂。

时间:2017-05-04  18:31:09

链接:http://www.cnblogs.com/xingshansi/p/6806637.html


前言

语音识别等应用离不开音频特征的提取,最近在看音频特征提取的内容,用到一个python下的工具包——pyAudioAnalysis: An Open-Source Python Library for Audio Signal Analysis,该工具包的说明文档可以点击这里下载,对应的github链接点击这里

这个工具包原说明文档支持的是Linux安装,且不能与python3很好地兼容,注意啦

一、常用工具包简介

目前针对音频信号,C/C++ 、Python、MATLAB等常用的工具包有:

二、pyAudioAnalysis工具包简介

pyAudioAnalysis是一个音频处理工具包,主要功能如图:

其中Feature Extraction包括(顺序有先后):

补充说明一下:

  • 1-Zero Crossing Rate:短时平均过零率,即每帧信号内,信号过零点的次数,体现的是频率特性
  • 2-Energy:短时能量,即每帧信号的平方和,体现的是信号能量的强弱
  • 3-Entropy of Energy:能量熵,跟频谱的谱熵(Spectral Entropy)有点类似,不过它描述的是信号的时域分布情况,体现的是连续性
  • 4-Spectral Centroid:频谱中心又称为频谱一阶距,频谱中心的值越小,表明越多的频谱能量集中在低频范围内,如:voice与music相比,通常spectral centroid较低
  • 5-Spectral Spread:频谱延展度,又称为频谱二阶中心矩,它描述了信号在频谱中心周围的分布状况
  • 6-Spectral Entropy:谱熵,根据熵的特性可以知道,分布越均匀,熵越大,能量熵反应了每一帧信号的均匀程度,如说话人频谱由于共振峰存在显得不均匀,而白噪声的频谱就更加均匀,借此进行VAD便是应用之一
  • 7-Spectral Flux:频谱通量,描述的是相邻帧频谱的变化情况
    function [vsf] = FeatureSpectralFlux (X, f_s)
    
        % difference spectrum (set first diff to zero)
    afDeltaX = diff([X(:,1), X],1,2); % flux
    vsf = sqrt(sum(afDeltaX.^2))/size(X,1);
    end
  • 8-Spectral Rolloff:频谱滚降点,给出定义:

  • 9~21-MFCCs:就是大名鼎鼎的梅尔倒谱系数,这个网上资料非常多,也是非常重要的音频特征。
  • 22~33-Chroma Vector:这个有12个参数,对应就是12级音阶,还是看原文解释:A 12-element representation of the spectral energy where the bins represent the 12 equal-tempered pitch classes of western-type music (semitone spacing).
  • 34-Chroma Deviation:这个就是Chroma Vector的标准方差。

这个在音乐声里可能用的比较多,目前没有接触这类特征:

什么是Chroma特征呢?给出一个示意图

code示例:

from pyAudioAnalysis import audioBasicIO
from pyAudioAnalysis import audioFeatureExtraction
import matplotlib.pyplot as plt
[Fs, x] = audioBasicIO.readAudioFile("sample.wav");
F = audioFeatureExtraction.stFeatureExtraction(x, Fs, 0.050*Fs, 0.025*Fs);
plt.subplot(2,1,1); plt.plot(F[0,:]); plt.xlabel('Frame no'); plt.ylabel('ZCR');
plt.subplot(2,1,2); plt.plot(F[1,:]); plt.xlabel('Frame no'); plt.ylabel('Energy'); plt.show()

如果希望了解更多的音频特征,这里给出一个链接,点击这里,包含的特征有:

对应都有graph、sound可以点击,sound是对应的音频,graph对应的是特征的效果图,比如打开zeroCross:

三、pyAudioAnalysis工具包安装 

pyAudioAnalysis对应链接点击这里。安装这个工具包需要依赖:

  A-hmmlearn安装

hmmlearn的链接点击这里。安装hmmlearn有几个前提:

下载之后,我把hmmlearn-master放在python-3.5.2-0\Lib\目录,cmd窗口下cd进去,输入:

pip install -U --user hmmlearn

  即可安装成功:

   B-Simplejson工具包安装:

Simplejson是Python的JSON编码和解码器,它具有简单、快速、完整、正确和易于扩展的特点,对应的链接点击这里。Simplejson工具包直接conda安装即可:

  C-eyed3安装:

eyed3:A tool for working with audio files, specifically MP3 files containing ID3 metadata. 它提供了读写 ID3 标签(v1.x 和 v2.3/v2.4)的功能。同时可检测 MP3 文件的头信息,包括比特率、采样频率和播放时间等。eyed3直接conda install没有成功,对应的链接点击这里。选择了这个版本:

放在了python库的Lib文件夹下:C:\Users\Nobleding\Anaconda3\pkgs\python-3.5.2-0\Lib,cd到对应目录下,pip install 文件名.whl,即可完成安装

  D-pydub安装:

pydub是音频处理常用的工具包,例如:

打开一个wav格式文件:

from pydub import AudioSegment
song = AudioSegment.from_wav("never_gonna_give_you_up.wav")

  打开一个mp3格式文件:

song = AudioSegment.from_mp3("never_gonna_give_you_up.mp3")

  或者其他音频、视频格式:

ogg_version = AudioSegment.from_ogg("never_gonna_give_you_up.ogg")
flv_version = AudioSegment.from_flv("never_gonna_give_you_up.flv") mp4_version = AudioSegment.from_file("never_gonna_give_you_up.mp4", "mp4")
wma_version = AudioSegment.from_file("never_gonna_give_you_up.wma", "wma")
aac_version = AudioSegment.from_file("never_gonna_give_you_up.aiff", "aac")

  更多细节信息可以访问其主页。我在github上下载对应的工具包,里边有对应的安装说明。

如果处理wav文件,没有其他要求,如果音频是其他格式它要求电脑安装 ffmpeg orlibav.如果没有安装,运行会有提示:

ffmpeg下载,选择版本

解压并添加环境变量,并利用ffplay测试一下打开一个mp4文件:

ffmpeg安装成功。这个时候import pydub,不再有warning信息

  E-pyAudioAnalysis安装

Github给出的是linux下的安装思路,这里下载之后将pyAudioAnalysis放在了\Anaconda3\Lib\site-packages文件夹下,输入指令:

成功调用,原数据是支持Python2的,很多细节要修改,给出一个简单读取wav的测试:

from pyAudioAnalysis import audioBasicIO
import numpy as np
import matplotlib.pyplot as plt
[Fs, x] = audioBasicIO.readAudioFile("count2.wav");
time = np.arange(0,len(x))*1.0/Fs
plt.plot(time,x)

  效果图:

python特征提取——pyAudioAnalysis工具包的更多相关文章

  1. 音频特征提取——pyAudioAnalysis工具包

    作者:桂. 时间:2017-05-04  18:31:09 链接:http://www.cnblogs.com/xingshansi/p/6806637.html 前言 语音识别等应用离不开音频特征的 ...

  2. 音频特征提取——librosa工具包使用

    作者:桂. 时间:2017-05-06  11:20:47 链接:http://www.cnblogs.com/xingshansi/p/6816308.html 前言 本文主要记录librosa工具 ...

  3. python调用word2vec工具包安装和使用指南

    python调用word2vec工具包安装和使用指南 word2vec python-toolkit installation and use tutorial 本文选译自英文版,代码注释均摘自本文, ...

  4. python数据挖掘领域工具包

    原文:http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块:Numpy和Sc ...

  5. python渗透测试工具包

    网络 Scapy, Scapy3k: 发送,嗅探,分析和伪造网络数据包.可用作交互式包处理程序或单独作为一个库.pypcap, Pcapy, pylibpcap: 几个不同 libpcap 捆绑的py ...

  6. Python之数据分析工具包介绍以及安装【入门必学】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 首先我们来看 Mac版 按照需求大家依次安装,如果你还没学到数据分析,建议你 ...

  7. Werkzeug——python web开发工具包

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826062.html 一:Werkzeug是个啥 1)Werkzeug是一个工具包,它封装了很多东西,诸如 ...

  8. Python之关于工具包简介

    1.Pandas Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的 ...

  9. python+anaconda+pycharm工具包安装

    更新额外包 $ conda update conda 更新pip python -m pip install --upgrade pip 更新所有 conda update --all 安装ffmpe ...

随机推荐

  1. springmvc框架原理

    1.  用户发送请求至前端控制器DispatcherServlet 2.  DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3.  处理器映射器根据请求url ...

  2. 手动编写JQUERY插件

    就拿一个简单的示例来说,鼠标点击输入框,提示文字消息,鼠标移开,再显示提示文字. <script type="text/javascript"> //编写插件 (fun ...

  3. xgboost-python参数深入理解

    由于在工作中应用到xgboost做特征训练预测,因此需要深入理解xgboost训练过程中的参数的意思和影响. 通过search,https://www.analyticsvidhya.com/blog ...

  4. GitHub中最强大的iOS Notifications和AlertView框架,没有之一!

    FFToast是一个非常强大的iOS message notifications和AlertView扩展.它可以很容易实现从屏幕顶部.屏幕底部和屏幕中间弹出一个通知.你可以很容易的自定义弹出的View ...

  5. 关于 Python generator(生成器)的类比

    Python 的生成器运用仿佛是最完美的 xing爱,生成器本身和循环代表男女,结束代表同时达到高潮,不是很精准,但很有趣啊!哈哈哈,一下记住了

  6. Unity 3D Framework Designing(8)——使用ServiceLocator实现对象的注入

    对象的 『注入』 是企业级软件开发经常听到的术语.如果你是一个 Java 程序员,一定对注入有着深刻的映像.不管是SSH框架还是SSM框架,Spring 全家桶永远是绕不过去的弯.通过依赖注入,可以有 ...

  7. xml学习_上篇

    xml简介: XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. xml小示例: /************************ ...

  8. FitVids,一个轻视频插件,操作简单

    最近在找一个视频插件,偶尔看见一个口碑啥的都不错的插件,FitsVids. fitvids.js 是个轻量级,易于使用的 jQuery 插件,用来在网页上播放指定宽度的嵌入视频.Fitvides.js ...

  9. tomcat配置管理员-走后门

    在Tomcat中,应用程序的部署很简单,只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压.在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为To ...

  10. iOS 文件下载和打开

    最近的项目要用到一个在线报告的下载,于是完成后自己在理一下思路,大体的实现了我要得需求. 话不多说,直接上代码 首先,取到网络文件的链接,进行判段是否需求再次下载还是直接打开 #pragma mark ...