librosa是一个音频和音乐处理的Python包,我用它来做音频的特征提取。但是在使用时,发现librosa.load将音乐文件转化为时间序列的过程中,速度实在难以忍受,cpu跑的非常高,程序好像假死的状态。 查阅官方文档发现,默认情况下,librosa会使用scipy.signal进行音频信号的重采样,这在实际使用时是很慢的。如果要获得很高的性能,官方建议安装libsamplerate和其相应的python模块scikits.samplerate。 这就是说,在Windows下进行安装的话,要先编译libsamplerate得到相应的lib和dll文件,再安装python的接口模块。 我试着在linux下进行安装,过程是很流畅的,因为使用apt-get可以方便安装libsamplerate,pip进行scikits.samplerate安装的时候,系统可以直接找到libsamplerate编译好的lib文件。
虽然这个软件比较小众,但如果有读者遇到相同的问题,希望能对你有所帮助。
libsamplerate官方说明 编译步骤:
如果要使用pip进行安装的话,系统可能找不到libsamplerate的lib文件,导致安装失败。 下载了scikits.samplerate的源码包之后,需要对site.cfg文件进行配置,制定samplerate库的lib文件名和所在目录才可以正常的安装,不然也会导致失败。
在scikits.samplerate目录下,打开site.cfg文件,修改内容为:
[samplerate]
library_dirs = c:\libsamplerate-0.1.8
libraries = libsamplerate-0
这样就可以进行python setup.py install
安装了。
这里还要注意,安装成功之后,在python的第三方库文件夹中找到scikits.samplerate,在scikits\samplerate文件夹中将libsamplerate编译好的dll文件放进去,这样就可以使用了。
频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。
为了减少计算复杂度和存储复杂度,采样速率转换技术是十分必要的,音频重采样算法可以用来实现音频信号任意采样速率之间的转换。
对于采样率为Fs,长度为M个采样点的音频信号x[n],,通过采样因子P/Q进行重采样后,这个信号的样本数可以增大或者减小。该过程可以分为如下三个步骤[17]: (1)上采样:在原信号相邻两点内插入P-1个零点,即创建一个有P (M-1)+1个采样点的信号xu[n],当n=1,2,…,M时,xu[P(n-1)+1] = x[n];否则,xu[n]=0。 (2)插值:xu[n]和一个低通插值滤波器h[n]作卷积:xi[n]= xu[n]h[n]。 (3)下采样:每隔Q-1个点抽取一个点,即创建有Q个点的信号xd[n],当n=1,2,…,+1时,xd[n]=xi[1+Q (n-1)],则重采样信号y[n]=xd[n]。(符号表示向下取整数) 不同类型的重采样算法都可以分为上述三个过程,它们的唯一的区别就在于步骤2中所采用的插值滤波器的不同。
注意事项: 1.上采样时,会造成镜像信息,因此需要使用低通滤波器滤除(线性插值本身就是低通滤波器,因此不需要额外处理)。 2.下采样时,可能会造成频谱混淆,因此在下采样之前用低通去混淆滤波器滤除。 3.重采样算法非常消耗时间,使用多相滤波器与一些条件限制,可以大大提高运算速度。
转载请注明作者Jason Ding及其出处 GitCafe博客主页(http://jasonding1354.gitcafe.io/) Github博客主页(http://jasonding1354.github.io/) CSDN博客(http://blog.csdn.net/jasonding1354) 简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles) 百度搜索jasonding1354进入我的博客主页
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181026.html原文链接:https://javaforall.cn