以python打开wave文件:未知格式:49.出了什么问题?

Lew*_*ick 8 python format wave

我尝试用wave模块打开一个wave文件,但是无论我尝试什么,我都会遇到同样的错误.出错的行如下:

wav = wave.open(f)
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

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
Run Code Online (Sandbox Code Playgroud)

String f是.WAV文件的路径,在我的任何媒体播放器中播放时都可以使用.我当然导入了wave模块.我试过f两个作为亲戚和绝对的道路.我尝试用"wav"替换"WAV".

引起的错误是什么?

Leo*_*ade 10

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

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

您可以使用Audacity或某些lib等程序来转换编解码器以更改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