Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:字符串大小必须是元素大小的倍数_Python_Scipy_Classification_Wav_Mfcc - Fatal编程技术网

Python ValueError:字符串大小必须是元素大小的倍数

Python ValueError:字符串大小必须是元素大小的倍数,python,scipy,classification,wav,mfcc,Python,Scipy,Classification,Wav,Mfcc,我正在对两类音频样本(.wav文件)进行分类。 下面是出现错误的示例代码, > for curr_class in classes: > dirname = os.path.join(data_dir_train, curr_class) > for fname in os.listdir(dirname): > with open(os.path.join(dirname, fname), 'r') as f: >

我正在对两类音频样本(.wav文件)进行分类。 下面是出现错误的示例代码,

> for curr_class in classes:
>     dirname = os.path.join(data_dir_train, curr_class)
>     for fname in os.listdir(dirname):
>         with open(os.path.join(dirname, fname), 'r') as f:
>             rate,sig = scipy.io.wavfile.read(f)
              mfcc_feat = mfcc(sig, rate)
              train_data.append(mfcc_feat[1:9, :])
运行代码时,我遇到以下错误:

C:\Python27\lib\site-packages\scipy\io\wavfile.py:267: WavFileWarning: Chunk (non-data) not understood, skipping it.
  WavFileWarning)
Traceback (most recent call last):
  File "C:/Users/NIKHIL/PycharmProjects/major1/try1.py", line 44, in <module>
    rate,sig = scipy.io.wavfile.read(f)
  File "C:\Python27\lib\site-packages\scipy\io\wavfile.py", line 258, in read
    is_big_endian, mmap)
  File "C:\Python27\lib\site-packages\scipy\io\wavfile.py", line 129, in _read_data_chunk
    data = numpy.fromstring(fid.read(size), dtype=dtype)
ValueError: string size must be a multiple of element size
C:\Python27\lib\site packages\scipy\io\wavfile.py:267:WavFileWarning:Chunk(非数据)未被理解,跳过它。
WAVFELE(警告)
回溯(最近一次呼叫最后一次):
文件“C:/Users/NIKHIL/PycharmProjects/major1/try1.py”,第44行,在
速率,sig=scipy.io.wavfile.read(f)
文件“C:\Python27\lib\site packages\scipy\io\wavfile.py”,第258行,已读
是大的吗
文件“C:\Python27\lib\site packages\scipy\io\wavfile.py”,第129行,在读取数据块中
data=numpy.fromstring(fid.read(size),dtype=dtype)
ValueError:字符串大小必须是元素大小的倍数

提前感谢

检查wav文件的格式。Scipy不支持24位文件。您使用的是哪个版本的scipy?(请使用
import scipy;print(scipy.\uuuu version\uuuuuu)
进行检查)scipy版本0.16及更高版本在尝试读取24位文件时应提供更详细的错误消息。我的wav文件为48khz和16位,我使用的是0.18.1 scipy version.hi@WarrenWeckesser,我正在尝试对两种不同语言的音频片段进行分类。请向我推荐任何分类技术(plzz提及特征提取)。是否有任何音频预处理工具只考虑音频剪辑(分割或修整音频文件)所需的部分来提取特征(节省时间):“我的WAV文件是48 KHz和16位,而我使用0.18.1SISPY版本。”好,所以问题不是样本是24位。现在我注意到您使用了
open(os.path.join(dirname,fname),'r')
。这将以“文本”模式打开文件,但对于wav文件,必须使用二进制模式。将该调用更改为
open(os.path.join(dirname,fname),'rb')
。谢谢@WarrenWeckesser它对我有用::)检查wav文件的格式。Scipy不支持24位文件。您使用的是哪个版本的scipy?(请使用
import scipy;print(scipy.\uuuu version\uuuuuu)
进行检查)scipy版本0.16及更高版本在尝试读取24位文件时应提供更详细的错误消息。我的wav文件为48khz和16位,我使用的是0.18.1 scipy version.hi@WarrenWeckesser,我正在尝试对两种不同语言的音频片段进行分类。请向我推荐任何分类技术(plzz提及特征提取)。是否有任何音频预处理工具只考虑音频剪辑(分割或修整音频文件)所需的部分来提取特征(节省时间):“我的WAV文件是48 KHz和16位,而我使用0.18.1SISPY版本。”好,所以问题不是样本是24位。现在我注意到您使用了
open(os.path.join(dirname,fname),'r')
。这将以“文本”模式打开文件,但对于wav文件,必须使用二进制模式。将该调用更改为
open(os.path.join(dirname,fname),'rb')
。谢谢@WarrenWeckesser它对我有用:)