做者:桂。html
时间:2017-05-04 18:31:09python
连接:http://www.cnblogs.com/xingshansi/p/6806637.html linux
前言git
语音识别等应用离不开音频特征的提取,最近在看音频特征提取的内容,用到一个python下的工具包——pyAudioAnalysis: An Open-Source Python Library for Audio Signal Analysis,该工具包的说明文档能够点击这里下载,对应的github连接点击这里。github
这个工具包原说明文档支持的是Linux安装,且不能与python3很好地兼容,注意啦json
1、经常使用工具包简介ide
目前针对音频信号,C/C++ 、Python、MATLAB等经常使用的工具包有:工具
2、pyAudioAnalysis工具包简介测试
pyAudioAnalysis是一个音频处理工具包,主要功能如图:ui
其中Feature Extraction包括(顺序有前后):
补充说明一下:
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
这个在音乐声里可能用的比较多,目前没有接触这类特征:
什么是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:
3、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)
效果图: