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

时间:2021-10-31 06:04:14

作者:桂。

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

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

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


前言

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

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

一、常用工具包简介

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

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

二、pyAudioAnalysis工具包简介

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

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

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

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

补充说明一下:

  • 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:频谱滚降点,给出定义:

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

  • 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的标准方差。

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

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

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

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

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()

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

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

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

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

三、pyAudioAnalysis工具包安装 

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

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

  A-hmmlearn安装

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

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

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

pip install -U --user hmmlearn

  即可安装成功:

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

   B-Simplejson工具包安装:

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

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

  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没有成功,对应的链接点击这里。选择了这个版本:

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

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

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

  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上下载对应的工具包,里边有对应的安装说明。

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

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

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

ffmpeg下载,选择版本

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

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

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

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

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

  E-pyAudioAnalysis安装

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

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

成功调用,原数据是支持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)

  效果图:音频特征提取——pyAudioAnalysis工具包

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

  1. python特征提取——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. librosa音频特征提取,python librosa库在centos上依赖llvm的问题?

    win10下安装使用: https://blog.csdn.net/qq_39516859/article/details/80679718 https://blog.csdn.net/qq_3951 ...

  4. pyAudioAnalysis-audioFeatureExtraction 错误纠正

    1. TypeError: mfccInitFilterBanks() takes 2 positional arguments but 7 were given The issue In the f ...

  5. *Python库

    绝不能错过的24个*Python库 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 事实 ...

  6. 一文总结数据科学家常用的Python库(下)

    用于建模的Python库 我们已经到达了本文最受期待的部分 - 构建模型!这就是我们大多数人首先进入数据科学领域的原因,不是吗? 让我们通过这三个Python库探索模型构建. Scikit-learn ...

  7. 总结数据科学家常用的Python库

    概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...

  8. 学习笔记TF046:TensoFlow开发环境,Mac、Ubuntu/Linux、Windows,CPU版本、GPU版本

    下载TensorFlow https://github.com/tensorflow/tensorflow/tree/v1.1.0 .Tags选择版本,下载解压. pip安装.pip,Python包管 ...

  9. html的视频插件 (转)

         1)jMedia Element是一个基于jQuery/jQuery UI实现的HTML5音频/视频开发工具包.提供非常多的功能来控制页面中的音频和视频内容.当旧的浏览器不兼容HTML5时, ...

随机推荐

  1. linux下libevent安装

    wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz tar –xzvf libevent-1.4.13-stable.tar.gz ...

  2. rt—移植笔记2(Lwip)

    首先参考f107已经有的目录结构添加Lwip这一组,添加各种.c文件及.文件. 还有drive下边的很重要的eth.c 到此,工程编译通过.(刚开始,小编是一个一个 的比对...一个一个错误排查... ...

  3. [moka同学笔记]Yii2 自定义class、自定义全局函数(摘录)

    1.在app\components下新建MyComponent.PHP namespace app\components; use Yii; use yii\base\Component; use y ...

  4. [c#]RabbitMQ的简单使用

    摘要 Message Queue消息队列,简称MQ,是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通 ...

  5. javasctipt显示几分钟前、几天前等

    jsp页面: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ...

  6. alloc &amp&semi; init &amp&semi; dealloc

    在Objective-C中,alloc,init和dealloc是经常使用的函数,那么它们内部到底是如何实现的呢?通过查看libobjc运行时库,可以发现他们的工作原理. 1 alloc alloc的 ...

  7. 201521123029《Java程序设计》第三周学习总结

    1.本周学习总结 2.书面作业 Q1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; pu ...

  8. java 向上转型与向下转型

    转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象 ...

  9. canvas实现3D魔方

    摘要:使用canvas实现可交互的3D魔方 一.简单分析 魔方物理性质: 1.中心块(6个):中心块与中心轴连接在一起,但可以顺着轴的方向*的转动. 2.棱块(12个):棱块的表面是两个正方形,结构 ...

  10. TeamViewer连CentOS

    用过TeamViewer的人都会感叹其远程连接的强大,昨天有将Windows和CentOS在同一网段内互相连接打通了,今天在外网环境下突然想到是否可以用TeamViewer在外网环境下连到CentOS ...