Python u-law 问题:未知格式:7
Python u-law issues: unknown format: 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 只能处理非法的 wav?我对音频知之甚少,无法尝试破解我的 python.
我可以毫无问题地播放这两种文件,但在 GSpot 中查看非法文件显示我缺少编解码器。
有什么想法吗?也许不使用 python?我喜欢 numpy 有一个快速傅里叶变换,我宁愿不尝试写一个。
来自 the documentation(强调我的):
The wave
module provides a convenient interface to the WAV sound format. It does not support compression/decompression, but it does support mono/stereo.
您需要找到一个真正支持解压缩音频的模块。
我正在尝试比较两组大型 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 只能处理非法的 wav?我对音频知之甚少,无法尝试破解我的 python.
我可以毫无问题地播放这两种文件,但在 GSpot 中查看非法文件显示我缺少编解码器。
有什么想法吗?也许不使用 python?我喜欢 numpy 有一个快速傅里叶变换,我宁愿不尝试写一个。
来自 the documentation(强调我的):
The
wave
module provides a convenient interface to the WAV sound format. It does not support compression/decompression, but it does support mono/stereo.
您需要找到一个真正支持解压缩音频的模块。