很抱歉,如果我提交了一个副本,但我想知道是否有任何lib中的python,这使得你可以从音频文件中提取声音频谱。我希望能够获取音频文件并编写一个算法,该算法将返回一组数据{TimeStampInFile;频率振幅}。从python的音频文件中提取音频频谱
我听说这通常称为节拍检测,但据我所知,节拍检测不是一种精确的方法,它只适用于可视化,而我想操纵提取的数据,然后将其转换回一个音频文件。我不需要做这个实时。
我会感谢您的任何建议和建议。
很抱歉,如果我提交了一个副本,但我想知道是否有任何lib中的python,这使得你可以从音频文件中提取声音频谱。我希望能够获取音频文件并编写一个算法,该算法将返回一组数据{TimeStampInFile;频率振幅}。从python的音频文件中提取音频频谱
我听说这通常称为节拍检测,但据我所知,节拍检测不是一种精确的方法,它只适用于可视化,而我想操纵提取的数据,然后将其转换回一个音频文件。我不需要做这个实时。
我会感谢您的任何建议和建议。
我认为你的问题有三个独立的部分:
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。当然,这可能是你对音频信号处理有很好的了解,在这种情况下,这是无关紧要的。)
谢谢,这真是有帮助。我打算使用scikit-learn或PyBrain编写软件,它将分析audiofiles并尝试确定它属于哪个音乐。 –
晚会之后,但考虑到你的目标(写一个图书馆来分类音乐流派),你可以看看这个https://github.com/tyiannak/pyAudioAnalysis –