我对精确提取 PCM WAV 文件的部分感兴趣,直到样本级别。大多数音频模块似乎都依赖于特定于平台的音频库。我想让这个跨平台和速度不是问题,有没有可以做到这一点的本机 python 音频模块?
如果没有,我将不得不解释 PCM 二进制文件。虽然我确信我可以相当容易地挖掘 PCM 规范,并且原始格式很容易理解,但我以前从未真正处理过 Python 中的二进制数据。有没有很好的资源可以解释如何做到这一点?特别与音频有关的只是结冰。
我只用 C++ 和 Java 编写了一个 PCM 阅读器,但格式本身相当简单。可以在这里找到一个不错的描述:http: //ccrma.stanford.edu/courses/422/projects/WaveFormat/
过去,您应该能够将其读取(二进制文件读取,http://www.johnny-lin.com/cdat_tips/tips_fileio/bin_array.html)并处理生成的数组。您可能需要使用一些位移来获得正确的对齐方式(https://docs.python.org/reference/expressions.html#shifting-operations),但根据您的阅读方式,您可能不需要。
综上所述,我仍然倾向于大卫的方法。
你的解决方案是纯 Python 真的很重要,还是你会接受可以在各种平台上使用原生音频库的东西(所以它实际上是跨平台的)?在http://wiki.python.org/moin/PythonInMusic有后者的几个例子
似乎 open(..., "rb")、struct module和有关wav/riff 文件格式的一些细节(可能是更好的参考)的组合可以完成这项工作。
只是好奇,您打算如何处理原始样本数据?
我正在查找这个,我发现了这个:http : //www.swharden.com/blog/2009-06-19-reading-pcm-audio-with-python/ 它需要 Numpy(如果你想绘制它,还需要 matplotlib )
import numpy
data = numpy.memmap("test.pcm", dtype='h', mode='r')
print "VALUES:",data
查看原作者的网站了解更多详情。