Python中没有读取大型Wave文件

2024-05-21 18:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对Python中的一个文件进行声音分析,我有一个来自一个高清晰度的声音文件,它非常大(2.39gb)。但是,每当我试图使用wave模块打开它时,都会出现以下错误:

wave.Error: unknown format: 65534

我通过将.ts文件转换为.wav文件得到了这个文件。我在标准清晰度节目中使用了同样的方法,效果很好。我可以用

^{pr2}$

然而,这并不能得到准确的结果,因为它认为音频剪辑只有一个小时长,却有3个小时长。任何帮助将不胜感激,我有类似的问题与不同的错误代码,但这些没有太大的帮助这个问题。非常感谢你!在


Tags: 模块文件format声音标准错误errorwave
1条回答
网友
1楼 · 发布于 2024-05-21 18:26:36

免责声明:我对python不是很了解。在

我在谷歌上搜索波浪.py找到了以下链接:http://www.opensource.apple.com/source/python/python-3/python/Lib/wave.py

如果您查找名为_read_fmt_chunk的函数,您将看到错误消息的来源。简而言之,wave模块只支持wave_-FORMAT_-PCM。格式65534是由Microsoft定义的名为WAVE_FORMAT_EXTENSIBLE的格式,用于多通道波形文件。这很少见。在

我想你有几个选择:

  1. 找到一种新的方法来转换不产生WAVE_FORMAT_EXTENSIBLE的文件
  2. 修改wave.py的源代码以支持WAVE_FORMAT_EXTENSIBLE-假设SubFormat字段是PCM或IEEE浮点数,这不是什么大问题。从这个角度来看,它只是增加了标题的大小。如果它是另一个SubFormat,那么您甚至需要在进入PCM之前运行一个适当的解码器。在
  3. 使用另一个工具将WAVE_FORMAT_EXTENSIBLE.wav文件转换为其他文件。sox可能能够处理这个问题。在

关于你问题的第二部分。从你的问题中不清楚你是如何确定文件的持续时间的。但是如果你对频道的数量做了不正确的假设,那可能会让你失望。在

相关问题 更多 >