人工智能音频处理库—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.读取音频

# # 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绘画音频_人工智能下的音频还能这样玩!!!!相关推荐

  1. python播放url音频_从URL获取音频并播放i

    有一个指向mp3文件的链接,该文件需要从URL流式传输,并在计算机上播放.在互联网上,虽然有流媒体音频的例子,但它们主要是针对Python2,对于Python3已经没有这样的库了,我试着这样做:imp ...

  2. python绘画梦想_用python实现你的绘画梦想

    导语: ? 你是否还在为当时年少时没有选择自己的梦想而伤心,是否还在为自己的无法成为绘画名家而苦恼,这一切都不需要担心.python都能帮你实现,诶!python怎么能画画呢,一些简单的图案没问题,但 ...

  3. python 螺旋数组_人工智能首选语言是什么 究竟Python有多强大

    人工智能首选语言是什么?究竟Python有多强大?众所周知,Python入门简单.功能强大,是人工智能时代最佳的编程语言.但很多人好奇Python究竟有多强大,为什么那么受欢迎?下面就来给大家揭晓答案 ...

  4. 人工智能python好学吗_人工智能“速成班”Python好学吗 小心别被忽悠了

    "学完Python,可以上天";"零基础入门,小白三天也能学会"--据8月3日新华社报道,近期,不少人工智能"速成班"被炒得火热,声称通过几 ...

  5. python智能机器人原理_人工智能和Python是什么关系?详细分析!

    提及到人工智能很多人都会想到Python语言,对于很多人来说Python和人工智能几乎为等号模式,那么Python和人工智能属于什么关系呢?为大家简单的介绍一下. Python是一种计算机程序设计语言 ...

  6. python特效源代码_人工智能python代码实现魔幻换天视频特效

    魔幻换天视频: python实现魔幻换天特效,特效前,特效后对比视频 视频前后特效对比图 前几期的视频,我们分享了python代码实现的魔幻换天的视频特效,如何使用python代码实现?本期文章我们简 ...

  7. 浙江python信息技术教材_人工智能、Python…浙江省三到九年级将使用信息技术新修订教材...

    浙江省教研室相关负责人表示,目前根据现行的高中教材,对小学.初中的老教材进行了修订,新教材将于今年9月投入使用,最新的线上教师培训也刚刚结束.扣哒世界作为全球最大的中小学人工智能和Python代码编程 ...

  8. python死机_请问下为什么我用PYTHON写编译器一旦用READ就死机

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 请问下为什么我用PYTHON写编译器一旦用READ就死机 read代码如下: def praseRead(self, fsys, lev): self.n ...

  9. python控制灯泡_人工智能应用-手把手教你用Python硬件编程实现打开或关闭电灯泡...

    之前我们已经给广大爱好者或程序员朋友们,带来了硬件版的或者说物联网版本的Hello World C++Builder版.Delphi.Visual Basic.Net等的程序源码和教学资料,让大家对硬 ...

最新文章

  1. c程序设计语言_习题1-9_将输入流复制到输出流,并将多个空格过滤成一个空格...
  2. .Net异步编程知多少
  3. linux wc -l 对io,linux设备驱动归纳总结(五):2.操作硬件——IO内存
  4. yum 来安装 nodejs
  5. 常用html字符的转义字符串(html代码),全部转义字符备用
  6. sangfor设备升级系统_H3C IPS入侵防御系统配置
  7. 路灯干扰者视频2021-08-10
  8. .net mvc html.row,ASP.NET MVC4中的WebGrid
  9. Netbean 打开报 Cannot locate java installation in specified jdkhome: ***错误
  10. 原生小说APP源码出售,可二次开发,小说阅读app源码
  11. Markdown表格之表格内换行
  12. 电脑版微信提示音mp3_短的微信提示音什么好?40首好听的微信提示音试听下载...
  13. 兄弟一脸懵逼,刚才是发生了什么?
  14. 01-名词冠词(思维导图记录)
  15. target is not existed: .page-component__scroll .el-scrollbar__wrap
  16. 用外部html圆形里装数字,如何使用CSS用圆圈包围数字?
  17. 五组数据告诉你倒闭企业的“死亡画像”
  18. 论python在金融行业的重要性论文_金融业发展的现状、问题与策略毕业论文
  19. 为了疫情防控,发短信可查自己的行踪轨迹,是什么技术在帮忙?
  20. laravel mysql 悲观锁_[笔记] 悲观锁与乐观锁

热门文章

  1. 如何手动修改oracle表空间,ORACLE数据库创建和修改表空间
  2. java node websocket_nodejs怎么实现webSocket接口即时通讯服务?
  3. redis 缓存 key常量命名规则
  4. 可能是最好理解的二叉树的层序遍历
  5. 同步容器和并发容器的区别
  6. mysql安装im,mysql安装记录
  7. cmd pc如何开多个微信_抖音打击刷赞刷粉,240多个百万粉丝大V被封;微信PC版再更新...
  8. 计算机接口教程,运用接口实现计算机各组件信息
  9. Storm的BaseBasicBolt源码解析ack机制
  10. J2EE应用与移动互联网-写在前头