10

我尝试使用该wave模块打开一个波形文件,但无论我尝试什么,我都会收到相同的错误。有错误的行如下:

wav = wave.open(f)

这是错误消息:

Traceback (most recent call last):
  File "annotate.py", line 47, in <module>
    play(file)
  File "annotate.py", line 33, in play
    wav = wave.open(f)
  File "C:\Program Files (x86)\Python\lib\wave.py", line 498, in open
    return Wave_read(f)
  File "C:\Program Files (x86)\Python\lib\wave.py", line 163, in __init__
    self.initfp(f)
  File "C:\Program Files (x86)\Python\lib\wave.py", line 143, in initfp
    self._read_fmt_chunk(chunk)
  File "C:\Program Files (x86)\Python\lib\wave.py", line 269, in _read_fmt_chunk
    raise Error('unknown format: %r' % (wFormatTag,))
wave.Error: unknown format: 49

Stringf是 .WAV 文件的路径,在我的任何媒体播放器中播放时都可以使用。

我当然已经导入了wave模块。我尝试f了相对路径和绝对路径。我尝试用“wav”替换“WAV”。

错误是由什么引起的?

4

2 回答 2

13

Python 的 wave 模块适用于特定类型的 WAV:PCM ( WAVE_FORMAT_PCM: 0x0001)。

在您的情况下,您使用的是WAVE_FORMAT_GSM610[0x0031 = hex(49)] 类型的 WAV。

您可以使用 Audacity 之类的程序或一些库来转换编解码器以更改 WAV 文件的类型。

您可以在此处查看 WAV 类型列表: https ://www.videolan.org/developers/vlc/doc/doxygen/html/vlc__codecs_8h.html

Python的wave模块源码: https ://github.com/python/cpython/blob/master/Lib/wave.py

于 2014-11-24T09:47:22.260 回答
2

The file is compressed and the wave module does not support this type of compression.

于 2013-06-25T14:06:45.373 回答