写点什么

人工智能下的音频还能这样玩!!!!

发布于: 1 小时前

人工智能音频处理库—librosa(安装与使用)

序言

一、libsora 安装

pypi


conda


source

二、librosa 常用功能

核心音频处理函数


音频处理


频谱表示


幅度转换


时频转换


特征提取


绘图显示

三、常用功能代码实现

读取音频


提取特征


提取 Log-Mel Spectrogram 特征


提取 MFCC 特征


绘图显示


绘制声音波形


绘制频谱图



序言

Librosa 是一个用于音频、音乐分析、处理的 python 工具包,一些常见的时频处理、特征提取、绘制声音图形等功能应有尽有,功能十分强大。本文主要介绍 librosa 的安装与使用方法。



一、libsora 安装

Librosa 官网提供了多种安装方法,详细如下:

pypi

最简单的方法就是进行 pip 安装,可以满足所有的依赖关系,命令如下:


pip install librosa
复制代码

conda

如果安装了 Anaconda,可以通过 conda 命令安装:


conda install -c conda-forge librosa
复制代码

source

直接使用源码安装,需要提前下载源码(https://github.com/librosa/librosa/releases/),通过下面命令安装:


tar xzf librosa-VERSION.tar.gzcd librosa-VERSION/python setup.py install
复制代码

二、librosa 常用功能

核心音频处理函数

这部分介绍了最常用的音频处理函数,包括音频读取函数 load( ),重采样函数 resample( ),短时傅里叶变换 stft( ),幅度转换函数 amplitude_to_db( )以及频率转换函数 hz_to_mel( )等。这部分函数很多,详细可参考 librosa 官网 http://librosa.github.io/ librosa/core.html

音频处理

频谱表示

幅度转换

时频转换

特征提取

本部分列举了一些常用的频谱特征的提取方法,包括常见的 Mel Spectrogram、MFCC、CQT 等。函数详细信息可参考 http:// librosa.github.io/librosa/feature.html


绘图显示

包含了常用的频谱显示函数 specshow( ), 波形显示函数 waveplot( ),详细信息请参考http://librosa.github.io/librosa/display. html




三、常用功能代码实现

1.读取音频

#导入库import librosa# # 读取音频# Load a wav filey, sr = librosa.load('./sample.wav')print(y)#Librosa默认的采样率是22050,如果需要读取原始采样率,需要设定参数sr=None:print(sr)y, sr = librosa.load('./sample.wav',sr=None)#可见,'beat.wav'的原始采样率为16000。如果需要重采样,只需要将采样率参数sr设定为你需要的值:print(sr)  y, sr = librosa.load('./sample.wav',sr=18000)print(sr)
复制代码




2.提取特征

提取 Log-Mel Spectrogram 特征

Log-Mel Spectrogram 特征是目前在语音识别和环境声音识别中很常用的一个特征,由于 CNN 在处理图像上展现了强大的能力,使得音频信号的频谱图特征的使用愈加广泛,甚至比 MFCC 使用的更多。在 librosa 中,Log-Mel Spectrogram 特征的提取只需几行代码:


# # 提取特征# Load a wav filey, sr = librosa.load('./sample.wav', sr=None)# extract mel spectrogram featuremelspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)# convert to log scalelogmelspec = librosa.power_to_db(melspec)print(logmelspec.shape)
复制代码



可见,Log-Mel Spectrogram 特征是二维数组的形式,128 表示 Mel 频率的维度(频域),100 为时间帧长度(时域),所以 Log-Mel Spectrogram 特征是音频信号的时频表示特征。其中,n_fft 指的是窗的大小,这里为 1024;hop_length 表示相邻窗之间的距离,这里为 512,也就是相邻窗之间有 50%的 overlap;n_mels 为 mel bands 的数量,这里设为 128。



3.提取 MFCC 特征

MFCC 特征是一种在自动语音识别和说话人识别中广泛使用的特征。关于 MFCC 特征的详细信息,有兴趣的可以参考博客 http:// blog.csdn.net/zzc15806/article/details/79246716。在 librosa 中,提取 MFCC 特征只需要一个函数:


# # 提取MFCC特征# extract mfcc featuremfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40)print(mfccs)print(mfccs.shape)
复制代码



关于 mfcc,这里就不在赘述。


Librosa 还有很多其他音频特征的提取方法,比如 CQT 特征、chroma 特征等,在第二部分“librosa 常用功能”给了详细的介绍。



4.绘图显示

4.1 绘制声音波形

Librosa 有显示声音波形函数 waveplot( ):


# # 绘图显示import librosa.displayimport matplotlib.pyplot as pltget_ipython().run_line_magic('matplotlib', 'inline')plt.figure()librosa.display.waveplot(y, sr)plt.title('sample wavform')plt.show()
复制代码




4.2 绘制频谱图

Librosa 有显示频谱图波形函数 specshow( ):


# # 绘制频谱图melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)logmelspec = librosa.power_to_db(melspec)plt.figure()librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')plt.title('sample wavform')plt.show()
复制代码





将声音波形和频谱图绘制在一张图表中:


# # 将声音波形和频谱图绘制在一张图表中:# extract mel spectrogram featuremelspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)# convert to log scalelogmelspec = librosa.power_to_db(melspec)plt.figure()# plot a wavformplt.subplot(2, 1, 1)librosa.display.waveplot(y, sr)plt.title('sample wavform')# plot mel spectrogramplt.subplot(2, 1, 2)librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')plt.title('Mel spectrogram')plt.tight_layout() #保证图不重叠plt.show()
复制代码




到这里,librosa 的安装和简单使用就介绍完了。事实上,librosa 远不止这些功能,关于 librosa 更多的使用方法还请大家参考 librosa 官网


http://librosa.github.io/librosa/index.html


正文结束!!!

发布于: 1 小时前阅读数: 2
用户头像

个人公众号:Python研究者 2021.04.26 加入

教你如何学Python,专注于Python入门与进阶、爬虫、数据分析挖掘、数据可视化。分享Python相关的技术文章、工具资源、视频教程、学习资料。

评论

发布
暂无评论
人工智能下的音频还能这样玩!!!!