我会安装Debian/Ubuntu的软件包
libav-tools,并调用
avconv
将mp3解码为临时wav文件:
编辑:你的另一个问题已经关闭,所以我会在这里稍微扩展一下我的答案,附带一个简单的带通滤波器示例。在你链接的文件中,大部分鸟鸣集中在4 kHz - 5.5 kHz。
import os
from subprocess import check_call
from tempfile import mktemp
from scikits.audiolab import wavread, play
from scipy.signal import remez, lfilter
from pylab import *
mp3filename = 'XC124158.mp3'
wname = mktemp('.wav')
check_call(['avconv', '-i', mp3filename, wname])
sig, fs, enc = wavread(wname)
os.unlink(wname)
bands = array([0,3500,4000,5500,6000,fs/2.0]) / fs
desired = [0, 1, 0]
b = remez(513, bands, desired)
sig_filt = lfilter(b, 1, sig)
sig_filt /= 1.05 * max(abs(sig_filt))
subplot(211)
specgram(sig, Fs=fs, NFFT=1024, noverlap=0)
axis('tight'); axis(ymax=8000)
title('Original')
subplot(212)
specgram(sig_filt, Fs=fs, NFFT=1024, noverlap=0)
axis('tight'); axis(ymax=8000)
title('Filtered')
show()
play(sig_filt, fs)
![Bird Song Spectrgrams](https://istack.dev59.com/pjnTz.webp)
data = data[:, 0]
将其转换为单声道。 - undefined