Python 中未读取大型波形文件
Large Wave File not being read in Python
我正在尝试对 Python 中的一个文件进行声音分析,我有一个来自某个节目的高清声音文件,它非常大 (2.39 GB)。但是,每当我尝试使用 wave 模块打开它时,我都会收到以下错误:
wave.Error: unknown format: 65534
我通过将 .ts 文件转换为 .wav 文件得到了这个文件。我在标准清晰度节目中使用了相同的方法,效果很好。我可以使用
进行一些分析
data = np.memmap(audioclip,dtype='h',mode='r')
然而,这并没有得到准确的结果,因为它认为音频片段只有 1 小时长,而它认为 3 小时长。任何帮助将不胜感激,我有不同错误代码的类似问题,但是这些对这个问题没有多大帮助。非常感谢!
免责声明:我真的不太了解 python。
我用谷歌搜索 wave.py 并找到以下内容 link: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
的格式,用于 multi-channel wave 文件。这很不常见。
我想你有几个选择:
- 找到一种新的方法来转换不生成的文件
WAVE_FORMAT_EXTENSIBLE
- 修改
wave.py
的源代码以支持 WAVE_FORMAT_EXTENSIBLE
- 假设 SubFormat
字段是 PCM 或 IEEE_FLOAT 这没什么大不了的。从这个角度来看,它只是增加了 header 的大小。如果它是另一个 SubFormat
那么你需要 运行 一个合适的解码器才能进入 PCM。
- 使用另一种工具将
WAVE_FORMAT_EXTENSIBLE
.wav 文件转换为非此文件。 sox
或许可以解决这个问题。
关于你问题的第二部分。从您的问题中不清楚您如何确定文件的持续时间。但是,如果您对可能会让您失望的频道数量做出错误的假设。
我正在尝试对 Python 中的一个文件进行声音分析,我有一个来自某个节目的高清声音文件,它非常大 (2.39 GB)。但是,每当我尝试使用 wave 模块打开它时,我都会收到以下错误:
wave.Error: unknown format: 65534
我通过将 .ts 文件转换为 .wav 文件得到了这个文件。我在标准清晰度节目中使用了相同的方法,效果很好。我可以使用
进行一些分析data = np.memmap(audioclip,dtype='h',mode='r')
然而,这并没有得到准确的结果,因为它认为音频片段只有 1 小时长,而它认为 3 小时长。任何帮助将不胜感激,我有不同错误代码的类似问题,但是这些对这个问题没有多大帮助。非常感谢!
免责声明:我真的不太了解 python。
我用谷歌搜索 wave.py 并找到以下内容 link: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
的格式,用于 multi-channel wave 文件。这很不常见。
我想你有几个选择:
- 找到一种新的方法来转换不生成的文件
WAVE_FORMAT_EXTENSIBLE
- 修改
wave.py
的源代码以支持WAVE_FORMAT_EXTENSIBLE
- 假设SubFormat
字段是 PCM 或 IEEE_FLOAT 这没什么大不了的。从这个角度来看,它只是增加了 header 的大小。如果它是另一个SubFormat
那么你需要 运行 一个合适的解码器才能进入 PCM。 - 使用另一种工具将
WAVE_FORMAT_EXTENSIBLE
.wav 文件转换为非此文件。sox
或许可以解决这个问题。
关于你问题的第二部分。从您的问题中不清楚您如何确定文件的持续时间。但是,如果您对可能会让您失望的频道数量做出错误的假设。