【问题标题】:Python open raw audio data filePython打开原始音频数据文件
【发布时间】:2009-06-05 16:05:51
【问题描述】:

我有这些扩展名为“.adc”的文件。它们只是原始数据文件。我可以使用 File->Import->Raw data 用编码“Signed 16 bit”和采样率“16000 Khz”打开它们。

我想对 python 做同样的事情。我认为 audioop 模块是我需要的,但我似乎无法找到如何将它用于如此简单的事情的示例。

主要目标是打开文件并播放文件中的某个位置,例如从第二个 10 到第二个 20。有什么东西可以完成我的任务吗?

提前感谢。

【问题讨论】:

    标签: python audio


    【解决方案1】:

    要打开文件,您只需要file()。 要查找位置,您不需要 audioop:您只需将秒转换为字节并获取文件所需的字节。例如,如果您的文件是 16 kHz 16 位单声道,则每秒是 32,000 字节的数据。所以第 10 秒是文件的 320kB。只需寻找文件中的适当位置,然后读取适当的字节数。

    而且 audioop 无法帮助您完成最困难的部分:即播放音频。执行此操作的正确方法很大程度上取决于您的操作系统。

    编辑:抱歉,我刚刚注意到您的用户名是“thelinuxer”。考虑pyAO 在 Linux 上播放来自 Python 的音频。您可能需要更改示例格式来播放音频——audioop 将帮助您解决此问题(请参阅 ratecv、tomono/tostereo、lin2lin 和bias)

    【讨论】:

    • 16kHz 16bit 单声道不是 16,000 字节的数据吗? (如果是立体声,还有 32,000 字节?)
    • 啊,nvm,我明白了! 16 位 == 2 个字节。然后,2 字节 * 16 个样本/秒 == 32,000 字节/秒。
    【解决方案2】:

    非常感谢我能够做到以下几点:

    def play_data(filename, first_sec, second_sec):
      import ao
      from ao import AudioDevice 
      dev = AudioDevice(2, bits=16, rate=16000,channels=1)
      f = open(filename, 'r')
      data_len = (second_sec-first_sec)*32000
      f.seek(32000*first_sec)
      data = f.read(data_len)
      dev.play(data)
      f.close()
    
    play_data('AR001_3.adc', 2.5, 5)
    

    【讨论】:

      【解决方案3】:

      您可以使用PySoundFile 将文件作为 NumPy 数组打开并使用python-sounddevice 播放。

      import soundfile as sf
      import sounddevice as sd
      
      sig, fs = sf.read('myfile.adc', channels=2, samplerate=16000,
                        format='RAW', subtype='PCM_16')
      sd.play(sig, fs)
      

      您可以在 NumPy 数组上使用索引来选择音频数据的某个部分。

      【讨论】:

      • 尝试将其与原始音频流一起使用,在级别参数中出现“错误无效文件:bytearray(b'\xd8\x04\xb8\x05h\x06\xc8\x068\x07x\x07\xb8\ x06\xb8\x05\xb8\x05\xc8\x06\xc8\x06h\x06H\x06\xd8\x05\x98\x04\xd8\x03@\x03x\x02\x90\x02p\x030\x04\xf0\x03 \xa0..." 任何想法如何修复它?
      猜你喜欢
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多