2017-05-24 75 views
1

你好,stackoverflow用户,
目前我面临以下问题,我有一个函数来打开一个.wav文件,它返回采样率,长度和样本。我已经尝试过它将小文件,它的工作完美,现在我正试图加载1GB的WAV文件,它返回我“MemoryError被用户代码未处理”窗口。 这里是我的功能:打开1GB波形文件导致内存错误

def OpenWavFile(fileName): 
    waveFile = wave.open(fileName, 'r') 
    sampFreq = waveFile.getframerate() 
    length = waveFile.getnframes() 

    byteList = np.fromstring(waveFile.readframes(length), dtype = np.int16) 

    return sampFreq, length, byteList 

我与断点尝试过了,我注意到,长度变量的值是472289280,在int范围内最适合自己的。我已经在这个位置dtype = np.int16尝试过这个功能,有不同的类型。

numpy有没有限制?或者问题在哪里?

我的笔记本电脑的内存大小是8Gb。

+0

您是否尝试过的语法'开放的(文件名,“R” )作为wavefile:...'? –

+2

你有没有发现异常并检查了它? https://docs.python.org/2/library/exceptions.html#exceptions.MemoryError – Attie

+0

你如何在内部存储音频样本?如果它们不是以原始二进制格式存储的,则可以大大增加使用的成员数量。 – pcarter

回答

0

因此根据上述建议,我检查了Python版本,它是32位的,我把它改成64和它的作品现在