Python WAV“TypeError:数据类型不理解”错误

时间:2013-06-03 09:32:17

标签: python numpy scipy wav

我在使用Python读取.wav文件时遇到了问题。我想读取文件的幅度和采样率。

我尝试使用以下代码读取文件:

import os
folder = os.getcwd() + '\\WAV'
file_name = 'Guitar.ff.sul_E.C5Bb5'
path = folder + '\\' + file_name + '.wav'
rate,data=read(path)

在上面的代码之前,我从read库导入了scipy函数,如下所示:

  

从scipy.io.wavfile导入读取,写入

numpy我导入:

  

来自numpy import linspace,sin,pi,int16

我收到错误“TypeError:数据类型未理解”。

代码完全适用于不同的.wav文件,我想知道如何(如果可能的话)我可以更改代码来读取这个,或者如果我必须更改.wav文件才能读取它

以下是文件的属性:

  1. 文件:Guitar.ff.sul_E.C5Bb5.wav
    • 大小:38.87 MB
    • 长度:1分10秒
    • 采样率:96 KHz
    • 样本大小:24位
    • 比特率:4,608 kbps
    • 频道:尝试了1和2
  2. 文件:440hzAtone.wav
    • 大小:173 KB
    • 长度:2秒
    • 采样率:44.1 KHz
    • 样本大小:16位
    • 比特率:705 kbps
    • 频道:1
  3. 第一个文件无效,第二个文件无效。

    对于1和2通道,我得到了完全相同的错误。

    更改文件名以使其没有点无关紧要。它似乎以任何一种方式到达文件但无法读取它。

    修改

    将位深度从24更改为16后,问题就消失了。感谢Warren Weckesser的评论。

1 个答案:

答案 0 :(得分:2)

不幸的是,scipy的wavfile阅读器无法读取24位文件:scipy issue 1930 on github

结帐https://pypi.python.org/pypi/wavio或在https://github.com/WarrenWeckesser/wavio

获取来源