【发布时间】:2012-03-19 23:25:38
【问题描述】:
我需要从 24 位 pcm 格式的 wav 文件中读取数据,然后转换为浮点数。我正在使用 Python 2.7.2。
wave包以字符串的形式读取数据,所以我尝试的是:
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。为什么不一直使用它呢?