代码之家  ›  专栏  ›  技术社区  ›  Soviut

如何在没有音频库的情况下编辑原始PCM音频数据?

  •  9
  • Soviut  · 技术社区  · 16 年前

    我感兴趣的是精确提取PCM WAV文件的部分,直到样本级别。大多数音频模块似乎依赖于特定于平台的音频库。我想让这个跨平台和速度不是问题,有任何原生python音频模块可以做到这一点吗?

    如果没有,我将不得不解释PCM二进制文件。虽然我确信我可以很容易地挖掘PCM规范,并且原始格式也很容易上手,但我以前从未在Python中处理过二进制数据。有什么好的资源可以解释如何做到这一点吗?具体来说,与音频有关只是锦上添花。

    5 回复  |  直到 16 年前
        1
  •  6
  •   twasbrillig    11 年前

    我阅读了问题和答案,我觉得我一定错过了一些非常明显的东西,因为没有人提到以下两个模块:

    如果您需要示例代码,请随时提问。

    PS假设采样率为48kHz,24/1.001==23.976023976 fps的视频帧长度为2002个音频样本,25fps的长度为1920个音频样本。

        2
  •  5
  •   twasbrillig    11 年前

    我只用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 )但根据你如何阅读,你可能不需要。

        3
  •  1
  •   David Z    16 年前

    你的解决方案是纯Python真的很重要吗?还是你会接受一些可以在各种平台上与原生音频库一起工作的东西(所以它实际上是跨平台的)?后者有几个例子 http://wiki.python.org/moin/PythonInMusic

        4
  •  1
  •   basszero    16 年前

    看起来像是open(…,“rb”), struct module ,以及关于 wav/riff file format (可能有更好的参考)会做这项工作。

    只是好奇,你打算用原始样本数据做什么?

        5
  •  0
  •   Ian Conway    10 年前

    我查了一下,发现了这个: 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
    

    查看原作者的网站了解更多详细信息。

    推荐文章