3

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

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

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

在上面的代码之前,我readscipy库中导入函数如下:

从 scipy.io.wavfile 导入读,写

numpy我进口:

从 numpy 导入 linspace,sin,pi,int16

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

该代码适用于不同的 .wav 文件,我想知道如何(如果可能)更改代码以读取此文件,或者是否必须更改 .wav 文件才能读取它。

以下是文件的属性:

  1. 文件:吉他.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

第一个文件不起作用,第二个文件起作用。

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

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

编辑:

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

4

1 回答 1

4

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

查看https://pypi.python.org/pypi/wavio或在https://github.com/WarrenWeckesser/wavio获取源代码

于 2013-06-06T15:40:01.370 回答