无法使用读取某些.wav文件scipy.io.wavread公司。读取()

2024-09-28 22:25:33 发布

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

我试图用scipy.io.wavread公司. 它可以正确地读取一些文件。 对于某些文件,它给出以下错误。。。在

Warning (from warnings module):
  File "D:\project\cardiocare-1.0\src\scipy\io\wavfile.py", line 121
    warnings.warn("chunk not understood", WavFileWarning)
WavFileWarning: chunk not understood
Traceback (most recent call last):
  File "D:\project\cardiocare-1.0\src\ccare\plot.py", line 37, in plot
    input_data = read(p.bitfile)
  File "D:\project\cardiocare-1.0\src\scipy\io\wavfile.py", line 119, in read
    data = _read_data_chunk(fid, noc, bits)
  File "D:\project\cardiocare-1.0\src\scipy\io\wavfile.py", line 56, in _read_data_chunk
    data = data.reshape(-1,noc)
ValueError: total size of new array must be unchanged

谁能给我提个解决办法吗?在


Tags: 文件inpyiosrcprojectreaddata
1条回答
网友
1楼 · 发布于 2024-09-28 22:25:33

我用下面的代码来读取wav文件。我知道它不能解决你的问题,但是也许你可以用这段代码读你的wav文件,也许能找出什么是错误的?在

我的经验是,wav文件有时包含“奇怪”的东西,必须处理或删除。在

希望它能帮到你

Rgds

西力士

import wave
import struct                     

def wavRead(fileN):
  waveFile = wave.open(fileN, 'r')   
  NbChanels = waveFile.getnchannels()
  data = []
  for x in range(NbChanels):
      data.append([])
  for i in range(0,waveFile.getnframes()):               
      waveData = waveFile.readframes(1)   
      data[i%(NbChanels)].append(int(struct.unpack("<h", waveData)[0]))

  RetAR = []
  BitDebth = waveFile.getsampwidth()*8
  for x in range(NbChanels):
       RetAR.append(np.array(data[x]))
       RetAR[-1] = RetAR[-1]/float(pow(2,(BitDebth-1)))
  fs = waveFile.getframerate()
  return RetAR,fs   

相关问题 更多 >