Python u-law问题:未知格式:7

将要

我正在尝试比较两组大型的wav文件,以删除重复项。问题是一组是PCM,另一组是u-law'd。当我尝试读取PCM wav时,没问题,但是u-law文件给出以下错误:

>>> wav = wave.open("C:\\soundfiles\\Olympus Recordings\\1019.wav")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\WinPython-64bit-3.4.3.3\python-3.4.3.amd64\lib\wave.py", line 497, in open
    return Wave_read(f)
  File "C:\WinPython-64bit-3.4.3.3\python-3.4.3.amd64\lib\wave.py", line 163, in __init__
    self.initfp(f)
  File "C:\WinPython-64bit-3.4.3.3\python-3.4.3.amd64\lib\wave.py", line 143, in initfp
    self._read_fmt_chunk(chunk)
  File "C:\WinPython-64bit-3.4.3.3\python-3.4.3.amd64\lib\wave.py", line 259, in _read_fmt_chunk
    raise Error('unknown format: %r' % (wFormatTag,))
wave.Error: unknown format: 7

因此,我在wave.py中查找:

 def _read_fmt_chunk(self, chunk):
        wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<HHLLH', chunk.read(14))
        if wFormatTag == WAVE_FORMAT_PCM:
            sampwidth = struct.unpack_from('<H', chunk.read(2))[0]
            self._sampwidth = (sampwidth + 7) // 8
        else:
            raise Error('unknown format: %r' % (wFormatTag,))

这是否意味着python只处理非法律的wavs?我对音频了解不多,想尝试破解我的python。

我可以同时播放这两种文件,但是在GSpot中查看ulaw'd文件显示我缺少编解码器。

未安装编解码器

有任何想法吗?也许不使用python?我喜欢那个numpy有一个快速傅立叶变换,我宁愿不要尝试编写一个。

伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)

文档(重点是我的):

wave模块为WAV声音格式提供了方便的界面。它不支持压缩/解压缩,但确实支持单声道/立体声。

您将需要找到一个实际上支持解压缩音频的模块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章