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


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


序言python

1、libsora安装nginx

pypigit

condagithub

sourceweb

2、librosa经常使用功能数组

核心音频处理函数bash

音频处理微信

频谱表示app

幅度转换

时频转换

特征提取

绘图显示

3、经常使用功能代码实现

读取音频

提取特征

提取Log-Mel Spectrogram 特征

提取MFCC特征

绘图显示

绘制声音波形

绘制频谱图




序言

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




1、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


2、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



3、经常使用功能代码实现

1.读取音频

# # 2020-11-9# # 李运辰#导入库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


正文结束!!!


欢迎关注公众号:Python爬虫数据分析挖掘,方便及时阅读最新文章

记录学习python的点点滴滴;

回复【开源源码】免费获取更多开源项目源码;

公众号每日更新python知识和【免费】工具;

本文已同步到【开源中国】、【腾讯云社区】、【CSDN】;

本文分享自微信公众号 - Python爬虫数据分析挖掘(zyzx3344)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索