我需要以24位pcm格式從wav文件中讀取數據,並將其轉換爲浮點數。我正在使用Python 2.7.2。將24位wav pcm格式轉換爲浮點型的更快方法?
波包作爲一個字符串讀取數據,所以我已經試過是:
import wave
import numpy as np
import array
import struct
f = wave.open('filename.wav')
# read in entire wav file
wdata = f.readframes(nFrames)
f.close()
# unpack into signed integers and convert to float
data = array.array('f')
for i in range(0,nFrames*3,3):
data.append(float(struct.unpack('<i', '\x00'+ wdata[i:i+3])[0]))
# normalize sample values
data = np.array(data)
data = data/0x800000
這是相當多的比我以前的方法更快,但仍相當緩慢。任何人都可以提出更有效的方法嗎?
顯然你有NumPy的。爲什麼不全程使用它? – 2012-03-19 23:27:24