2014-06-24 188 views
1

很抱歉,如果我提交了一个副本,但我想知道是否有任何lib中的python,这使得你可以从音频文件中提取声音频谱。我希望能够获取音频文件并编写一个算法,该算法将返回一组数据{TimeStampInFile;频率振幅}。从python的音频文件中提取音频频谱

我听说这通常称为节拍检测,但据我所知,节拍检测不是一种精确的方法,它只适用于可视化,而我想操纵提取的数据,然后将其转换回一个音频文件。我不需要做这个实时。

我会感谢您的任何建议和建议。

回答

1

我认为你的问题有三个独立的部分:

  1. 如何音频文件加载到蟒蛇?
  2. 如何计算python中的谱?
  3. 如何处理光谱?

1.如何在python中加载音频文件?

您可能最好使用scipy,因为它提供了很多信号处理功能。对于加载音频文件:

import scipy.io.wavfile 

samplerate, data = scipy.io.wavfile.read("mywav.wav") 

现在,你必须在samplerate采样率(样本/秒)和数据作为data一个numpy.array。您可能希望将数据转换为浮点数,具体取决于您的应用程序。

还有一个用于加载wav文件的标准python模块wave,但是numpy/scipy提供了一个更简单的接口和更多的信号处理选项。

2.如何计算频谱

简要回答:使用FFT。为了更智慧的话,请参阅:

Analyze audio using Fast Fourier Transform

较长的答案是相当长的。开窗是非常重要的,否则你会有奇怪的光谱。

3.做什么用的频谱

这是有点难度。通常对时间较长的信号进行时域滤波。也许如果你告诉我们你想完成的事情,你会收到一个很好的答案。计算频谱是一回事,在信号处理中获得有意义的结果会有点复杂。 (我知道你没有问这个,但我看到它的概率是0. 0。当然,这可能是你对音频信号处理有很好的了解,在这种情况下,这是无关紧要的。)

+0

谢谢,这真是有帮助。我打算使用scikit-learn或PyBrain编写软件,它将分析audiofiles并尝试确定它属于哪个音乐。 –

+0

晚会之后,但考虑到你的目标(写一个图书馆来分类音乐流派),你可以看看这个https://github.com/tyiannak/pyAudioAnalysis –