我正在尝试使用Python对文件进行声音分析,并且我有一个来自高清晰度的节目的声音文件,它非常大(2.39 GB)。但是,每当我尝试使用wave模块打开它时,我都会收到以下错误:
wave.Error: unknown format: 65534
我通过将.ts文件转换为.wav文件来获取此文件。我在标准清晰度节目中使用了相同的方法,它工作得很好。我可以使用
进行一些分析data = np.memmap(audioclip,dtype='h',mode='r')
然而,这并没有得到准确的结果,因为它认为当只有一个小时的时候,音障单是3小时。任何帮助将不胜感激,我有不同的错误代码的类似问题,但是这些对这个问题没有多大帮助。非常感谢你!
答案 0 :(得分:7)
免责声明:我对python的了解并不多。
我用Google搜索wave.py并找到以下链接:http://www.opensource.apple.com/source/python/python-3/python/Lib/wave.py
如果您查找名为_read_fmt_chunk
的函数,您将看到错误消息的来源。简而言之,波形模块仅支持WAVE_FORMAT_PCM。格式65534
是Microsoft定义的名为WAVE_FORMAT_EXTENSIBLE
的格式,用于多通道波文件。这很不常见。
我认为你有几个选择:
WAVE_FORMAT_EXTENSIBLE
wave.py
的来源以支持WAVE_FORMAT_EXTENSIBLE
- 假设SubFormat
字段是PCM或IEEE_FLOAT,这不是什么大问题。从这个角度来看,它只会增加标题的大小。如果它是另一个SubFormat
,那么在你甚至可以进入PCM之前,你需要运行一个合适的解码器。WAVE_FORMAT_EXTENSIBLE
.wav文件转换为非{。 sox
可以处理此问题。关于问题的第二部分。从您的问题中不清楚如何确定文件的持续时间。但是如果你对可能会让你失望的频道数做出错误的假设。