作者:桂。

时间: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:频谱通量,描述的是相邻帧频谱的变化情况

    1

    2

    3

    4

    5

    6

    7

    8

    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示例:

1

2

3

4

5

6

7

from pyAudioAnalysis import audioBasicIO

from pyAudioAnalysis import audioFeatureExtraction

import matplotlib.pyplot as plt

[Fs, x] = audioBasicIO.readAudioFile("sample.wav");

= 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进去,输入:

1

pip install ---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格式文件:

1

2

from pydub import AudioSegment

song = AudioSegment.from_wav("never_gonna_give_you_up.wav")

  打开一个mp3格式文件:

1

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

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

1

2

3

4

5

6

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的测试:

1

2

3

4

5

6

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工具包相关推荐

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

    转载:http://www.cnblogs.com/xingshansi/p/6806637.html 前言 语音识别等应用离不开音频特征的提取,最近在看音频特征提取的内容,用到一个python下的工 ...

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

    语音识别等应用离不开音频特征的提取,最近在看音频特征提取的内容,用到一个python下的工具包--pyAudioAnalysis: An Open-Source Python Library for ...

  3. 学术干货:看清华教授如何将深度学习引入音频信号处理

    https://www.toutiao.com/a6687760578368242180/ 人工智能论坛如今浩如烟海,有硬货.有干货的讲座却百里挑一."AI未来说·青年学术论坛"系 ...

  4. (翻译)60分钟入门深度学习工具-PyTorch

    60分钟入门深度学习工具-PyTorch 作者:Soumith Chintala 原文翻译自: https://pytorch.org/tutorials/beginner/deep_learning ...

  5. 深度学习在音频信号处理领域中的进展(截止至2019年5月)

    最近在arXiv上看到一篇关于深度学习在音频信号处理中的进展的文章,感觉写的不错,所以根据自己的理解和大家分享一下.如果有些地方博主理解的不对,或者解释不清,可以在下面评论,博主会一一回复. 论文链接 ...

  6. 【深度学习】图像特征提取与通道数问题(基于U型网络)

    [深度学习]图像特征提取与通道数问题(基于U型网络) 1 医学图像特点 2 卷积核与图像特征提取2.1 卷积2.2 图像处理2.3 边缘检测卷积核2.4 图像锐化卷积核2.5 高斯滤波 3 关于图像三 ...

  7. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)

    12 月 2 日(周日)下午,PaperWeekly 携手清华大学计算机系推出了计算未来轻沙龙第六期线下活动--深度学习工具专场.来自亚马逊 AWS.谷歌.英伟达.百度 PaddlePaddle 以及 ...

  8. 深度学习工具caffe详细安装指南

    转载自 深度学习工具caffe详细安装指南 前言: 在一台系统环境较好的linux机器上可以很容易的安装caffe,但是如果系统本身很旧,又没有GPU的话,安装就太麻烦了,所有都得从头做起,本文档旨在 ...

  9. pytorch深度学习之音频librosa库与torchaudio库的安装与使用(windows和ubuntu)

    pytorch深度学习之音频librosa库与torchaudio库的安装与使用 搭建pytorch 基本框架 与 anaconda pytorch虚拟环境创建,去看这里 导入librosa库与tor ...

最新文章

  1. Turing渲染着色器网格技术分析
  2. 路由协议有类和无类的区别
  3. 博达交换机镜像端口配置_“量身定制”的轨道交通工业以太网交换机,RT FORUM2019春季大会智慧解决方案12...
  4. mysql 改变枚举值_mysql 改变数据类型为枚举不成功?
  5. JRebel的优势与使用(基于IDEA)
  6. import lombok 报错_lombok
  7. 克隆虚拟机后需要修改的注意项
  8. pusher 创建新应用_使用 Laravel-echo-server 构建实时应用
  9. positional encoding位置编码详解:绝对位置与相对位置编码对比
  10. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---24
  11. 北林oj-算法设计与分析-Line up in the canteen(两种解法,附思路)
  12. 「PPT模板」 商务UI风格
  13. pcf8563c语言程序,PCF8563驱动程序(C语言版)
  14. favicon ico什么意思_你真的知道IPFS与Filecoin是什么吗?
  15. AI 图像识别项目从入门到上线
  16. 华为数字化转型步骤、方法和目标
  17. 数据清洗有哪些方法?
  18. java如何设置控制台打印的字体颜色、背景、字体样式(idea设置打印字体样式)工具类 - 附插件方式
  19. Opencv 入门篇学习记录(图片)
  20. 陈皓:什么是工程师文化?

热门文章

  1. 使用选项卡时嵌套优酷土豆视频同时播放的问题解决
  2. ZED使用指南(六)Camera Calibration
  3. ESP32用Arduino硬件IIC读取SHT30温湿度计的数据
  4. 【汇编】转移指令——offset 标号、jmp无条件转移,段内/段间转移区别、段内近转移/段内短转移、jcxz指令、loop指令
  5. 上计算机课玩游戏被发现检讨800,上电脑课玩游戏的检讨书模板
  6. 程序人生 - Python爬虫要违法了吗?告诉大家:守住规则,大胆去爬
  7. 智能音箱迎来第一劫:智能电视需求暴涨
  8. 进不了系统不要怕,看懂Linux系统引导分分钟搞定!
  9. 单电子双缝干涉的猜测:跃迁与反粒子
  10. OA选型分析:华天动力OA办公系统详解