首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python u-law问题:未知格式:7

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

Stack Overflow用户
提问于 2015-06-05 15:17:25
回答 1查看 2.2K关注 0票数 1

我试图比较两组大的wav文件以删除重复文件。问题是,一组是PCM,另一组是u-law。当我尝试在PCM wav中阅读时,没有问题,但是u-law文件给出了以下错误:

代码语言:javascript
复制
>>> 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中发现:

代码语言:javascript
复制
 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,))

这是否意味着蟒蛇只处理非标准的wavs?我对音频还不太了解,不想尝试破解我的蟒蛇。

我可以播放两种类型的文件没有问题,但是查看GSpot中的超级文件显示我缺少编解码器。

有什么想法吗?也许不用蟒蛇?我喜欢那个numpy有一个快速傅里叶变换,我不想尝试写一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 15:26:04

来自文献资料 (重点雷):

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

您需要找到一个真正支持解压缩音频的模块。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30670121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档