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

作者:桂。

时间:2017-05-06  11:20:47

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



前言

本文主要记录librosa工具包的使用,librosa在音频、乐音信号的分析中经常用到,是python的一个工具包,这里主要记录它的相关内容以及安装步骤,用的是python3.5以及win8.1环境。

一、MIR简介

音乐信息检索(Music information retrieval,MIR)主要翻译自wikipedia.

MIR是从音乐中检索信息的跨学科科学,该领域需要心理学、乐理学、信号处理、机器学习等学科的背景知识。

目前MIR的商业应用主要包括:

  • 推荐系统
    目前音乐推荐的应用很多,但很少是基于MIR技术实现的,现在主流技术是通过人工标记或者用户的评论以及收听历史等简介数据进行分类判断,进而实现推荐,但事实上不同音乐本身的相似性是很多的
  • 背景音乐分离及乐器识别
    如实现歌声与背景音乐的分离,并从背景音乐中识别出是何种乐器在演奏
  • 自动录音
    例如根据音乐自动转换成MIDI文件或者乐谱
  • 音乐分类
    根据音乐的产地、艺术家身份、音乐节奏等特征,借助机器学习方法进行音乐分类
  • 自动生成音乐
    利用数据库训练模式,让机器自主创造音乐

MIR领域涉及到的知识包括:

  • 语料库:没有音乐库,利用机器学习挖掘历史出统计规律,是不够现实的
  • 特征提取:例如常见的MFCC,是音色的一种度量,另外和弦、和声、节奏等音乐的特性,都需要合适的特征来进行表征
  • 统计学习方法以及机器学习的相关知识

MIR用到的相关工具包可以参考isMIR主页

二、Librosa功能简介

librosa对于MIR来讲就是特征提取的工具,当然一般音频分析也可以借用librosa。

  A-主要功能

更多细节可以参考其主页

  • 音频处理

load:读取文件,可以是wav、mp3等格式;resample:重采样;get_duration:计算音频时长;autocorrelate:自相关函数;zero crossings:过零率;

  • 频谱特性

stft:短时傅里叶变换;istft:逆短时傅里叶变换;ifgram:瞬时频率;cqt:音乐中常用的CQT算法(constant-Q transform);hybrid cqt:混合CQT变换;fmt:快速梅林变换;interp harmonics:主要计算时频信号中谐波的能量;salience:谐波显示功能;phase vocoder:相位声码;magphase:相位幅值

  • 幅度

就是一些数值不同度量的转化。

  • 时频转化

这个比较直观,就不啰嗦了。

  • Pitch and tuning(音调和曲调?清楚的麻烦说一下二者具体区别)

  • Dynamic Time Warping

就是DWT,动态时间规整。

以上只是一部分,其他的功能还有很多:

例如常用的MFCC提取就是Feature extraction中的一个函数而已。

  B-常用功能

比如读取一个音频信号:

import librosa
# 1. Get the file path to the included audio example
filepath = ‘C:\\Users\\Nobleding\\Documents\\FileRecv\\‘
filename =filepath+‘bluesky.wav‘
# 2. Load the audio as a waveform `y`
#    Store the sampling rate as `sr`
y, sr = librosa.load(filename,sr=None)

  load默认的采样率是22050,如果需要读取原始采样率,需要.load(filename,sr=None)而不是load(filename)

例如读取一段音频,判断节奏,并画出时频特性:

# Beat tracking example
#from __future__ import print_function
import librosa
import matplotlib.pyplot as plt
import librosa.display

# 1. Get the file path to the included audio example
# Sonify detected beat events
y, sr = librosa.load(librosa.util.example_audio_file())
tempo, beats = librosa.beat.beat_track(y=y, sr=sr)
y_beats = librosa.clicks(frames=beats, sr=sr)

# Or generate a signal of the same length as y
y_beats = librosa.clicks(frames=beats, sr=sr, length=len(y))

# Or use timing instead of frame indices
times = librosa.frames_to_time(beats, sr=sr)
y_beat_times = librosa.clicks(times=times, sr=sr)

# Or with a click frequency of 880Hz and a 500ms sample
y_beat_times880 = librosa.clicks(times=times, sr=sr,
                                 click_freq=880, click_duration=0.5)

# Display click waveform next to the spectrogram
plt.figure()
S = librosa.feature.melspectrogram(y=y, sr=sr)
ax = plt.subplot(2,1,2)
librosa.display.specshow(librosa.power_to_db(S, ref=np.max),
                         x_axis=‘time‘, y_axis=‘mel‘)
plt.subplot(2,1,1, sharex=ax)
librosa.display.waveplot(y_beat_times, sr=sr, label=‘Beat clicks‘)
plt.legend()
plt.xlim(15, 30)
plt.tight_layout()

关于可视化多说两句,librosa.display模块并不默认包含在librosa中,所以开头两句都要有:

import librosa
import librosa.display

  例如这个时候想显示语谱图:

import librosa
import matplotlib.pyplot as plt
import numpy as np
import librosa.display

# 1. Get the file path to the included audio example
filepath = ‘C:\\Users\\Nobleding\\Documents\\FileRecv\\‘
filename =filepath+‘bluesky1.wav‘
# 2. Load the audio as a waveform `y`
#    Store the sampling rate as `sr`
y, sr = librosa.load(filename,sr=None)

plt.figure(figsize=(12, 8))
D = librosa.amplitude_to_db(librosa.stft(y), ref=np.max)
plt.subplot(4, 2, 1)
librosa.display.specshow(D, y_axis=‘linear‘)
plt.colorbar(format=‘%+2.0f dB‘)
plt.title(‘Linear-frequency power spectrogram‘)

例如想观察CQT变换:

CQT = librosa.amplitude_to_db(librosa.cqt(y, sr=16000), ref=np.max)
plt.subplot(4, 2, 3)
librosa.display.specshow(CQT, y_axis=‘cqt_note‘)
plt.colorbar(format=‘%+2.0f dB‘)
plt.title(‘Constant-Q power spectrogram (note)‘)

  其他以此类推。

MFCC提取:

import librosa
import librosa.display

# 1. Get the file path to the included audio example
# Sonify detected beat events
y, sr = librosa.load(librosa.util.example_audio_file())
librosa.feature.mfcc(y=y, sr=sr)

librosa在youtube上有简要的教程

三、librosa的安装

libsora对应的链接点击这里。安装报错两个:

关于microsoft visual c++ 14.0 :

解决思路是:

  • Download Microsoft Visual C++ Build Tools 2015
  • Install this, making sure in the install options to select the “Windows SDK” appropriate for your version of Windows. Windows 7 systems should use Windows 8.1 SDK.

找到visual C++下载页面,点击这里

安装完成后,安装resampy。

关于resampy(同样依赖microsoft visual c++ 14.0):

resampy是采样率转化工具,github关于resampy的安装包点击这里

cd到对应文件夹,我放在了\pkgs\lib文件夹内,输入:

pip install resampy

  可以看到resampy已经成功安装:

进一步安装librosa,同样放在\pkgs\lib文件夹内,cd到对应目录,输入:

pip install librosa

  即可完成librosa的安装。

参考:

时间: 2024-10-19 14:52:28

音频特征提取——librosa工具包使用的相关文章

音频特征提取

音频特征提取--librosa工具包使用 - 桂. - 博客园 https://www.cnblogs.com/xingshansi/p/6816308.html 采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示.采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔.通俗的讲采样频率是指计算机每秒钟采集多少个信号样本. www.baike.com/wiki/采样频率 音频 在数字音频领域,常用的采样率有: 8,000 Hz

音频特征提取——常用音频特征

作者:桂. 时间:2017-05-05  21:45:07 链接:http://www.cnblogs.com/xingshansi/p/6815217.html 前言 主要总结一下常用的音频特征,并给出具体的理论分析及代码. 一.过零率 过零率的表达式为: 其中N为一帧的长度,n为对应的帧数,按帧处理. 理论分析:过零率体现的是信号过零点的次数,体现的是频率特性.因为需要过零点,所以信号处理之前需要中心化处理. code(zcr1即为过零率): for i=1:fn z=X(:,i); % 取

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

下载TensorFlow https://github.com/tensorflow/tensorflow/tree/v1.1.0 .Tags选择版本,下载解压. pip安装.pip,Python包管理工具,PyPI(Python Packet Index) https://pypi.python.org/pypi . Mac环境.安装virtualenv.virtualenv,Python沙箱工具,创建独立Python环境.pip install virtralenv --upgrade 安装

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

概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库?让我们知道! 介绍 我是Python语言的忠实粉丝,它是我在数据科学方面学到的第一门编程语言.Python有三个特点: 它的易用性和灵活性 全行业的接受度:它是业内最流行的数据科学语言 用于数据科学的庞大数量的Python库 事实上,有如此多的Python库,要跟上它们的发展速度可能会变得非常困难

38个常用Python库:数值计算、可视化、机器学习等8大领域都有了

一.数值计算 数值计算是数据挖掘.机器学习的基础.Python提供多种强大的扩展库用于数值计算,常用的数值计算库如下所示. 1. NumPy 支持多维数组与矩阵运算,也针对数组运算提供大量的数学函数库.通常与SciPy和Matplotlib一起使用,支持比Python更多种类的数值类型,其中定义的最重要的对象是称为ndarray的n维数组类型,用于描述相同类型的元素集合,可以使用基于0的索引访问集合中元素. 2. SciPy 在NumPy库的基础上增加了众多的数学.科学及工程计算中常用的库函数,

TensorFlow入门:安装常用的依赖模块

TensorFlow运行中常用到一些Python第三方模块: numpy 存储和处理大型矩阵的科学计算包 maplotlib 最著名的绘图库 jupyter scikit-image 图像预处理 librosa 音频特征提取的第三方库 nltk 包含着大量的语料库,方便完成自然语言处理的任务,包含分词.词性标注.命名实体识别(NER)及句法分析 keras tflearn

Wavenet运行

作者:桂. 时间:2017-05-10  19:17:32 链接:http://www.cnblogs.com/xingshansi/p/6832219.html 一.环境 python3.5 Win8.1,64位 二.Wavenet安装 Wavenet安装环境: Tensorflow:1.0.1以上版本,查看自己的版本: librosa工具包:用来读写audio文件,之前已经安装; 有了上面的条件, 在Github上下载Wavenet工具包,关于Wavenet工具包,也有学者提出了Fast w

音乐检索MIR » 音乐检索研究中使用的工具

音乐检索MIR » 音乐检索研究中使用的工具 工欲善其事,必先利其器.最近在ISMIR邮件列表上大家把自己知道的MIR工具都列了一遍,我整理成这篇文章. jMIR是一个工具集.能够对音频.曲谱.歌词等进行特征提取,挖掘并分析元数据.并基于Weka添加了机器学习模块.这个倒是经常用,不过只是用来提取音频特征. Yaafe是有效的特征提取程序库. Aubio特征提取不多,主要做鼓点.音高.起始点(onset)检测. CLAM是一个无所不包的框架. Scikits-learn是基于python的工具.

转:基于内容的视频分析与检索

摘要 文章简要介绍了从基于内容的视频分析与检索问题的提出到所涉及的关键技术以及目前研究状况,并简要介绍了现阶段在这方面的研究热点及以后要做的工作. 一.问题的提出: 互联网的出现给人类带来了很大的便利,特别是实现资源共享之后的互联网,但面对这浩如烟海的资源到底哪些是对自己有利用价值的呢?而90年代以来,多媒体技术和网络技术的突飞猛进,人们正快速的进入一个信息化社会.现代技术已能运用各种手段采集和生产大量各种类型的多媒体信息数据,出现了数字图书馆.数字博物馆.数字电影.可视电话.交互电视.会议电视