【问题标题】:How to edit raw PCM audio data without an audio library?如何在没有音频库的情况下编辑原始 PCM 音频数据?
【发布时间】:2009-05-08 17:57:25
【问题描述】:

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

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

【问题讨论】:

  • 这在 python 中应该是非常有趣的。如果你必须自己动手,你应该写博客。

标签: python audio binary wav


【解决方案1】:

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

  • audioop:处理原始音频数据
  • wave:读写WAV文件

也许我来自平行宇宙,Guido 的时间机器实际上是一个时空机器 :)

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

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

【讨论】:

  • ISTM 认为 RTFMing 是一门失传已久的艺术。
  • 哇,不知道我是怎么错过的,但我想它只是被所有的音频库包装器掩埋了。希望这是跨平台且足够准确,但看起来确实如此。
【解决方案2】:

我只用 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】:

    您的解决方案是纯 Python 真的很重要,还是您会接受可以在各种平台上使用本机音频库的东西(因此它实际上是跨平台的)?后者有几个例子http://wiki.python.org/moin/PythonInMusic

    【讨论】:

      【解决方案4】:

      似乎结合了 open(..., "rb")、struct module 以及有关 wav/riff file format 的一些详细信息(可能有更好的参考)就可以完成这项工作。

      只是好奇,您打算如何处理原始样本数据?

      【讨论】:

      • 我需要将一个长波形分割成与一系列入点和出点相对应的片段。它必须是准确的,以便它可以与任何帧速率的视频精确匹配。大多数库只能精确到 1/10 秒,同时即使是我们最低的帧速率也从 12 fps 开始。我宁愿有 44,000 秒的准确度。
      【解决方案5】:

      我正在查找这个,我发现了这个: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
      

      查看原作者的网站了解更多详情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-10
        • 2012-04-28
        • 2015-12-28
        • 1970-01-01
        • 2016-09-09
        相关资源
        最近更新 更多