10

モジュールを使用して wave ファイルを開こうとしました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

文字列fは .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 のようなプログラムや、コーデックを変換するための 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

于 2014-11-24T09:47:22.260 に答える
2

ファイルは圧縮されており、waveモジュールはこのタイプの圧縮をサポートしていません。

于 2013-06-25T14:06:45.373 に答える