在Python中读取* .wav文件

我需要分析写入.wav文件的声音。为此,我需要将此文件转换为一组数字(例如,数组)。我想我需要使用wave包。但是,我不知道它是如何工作的。例如,我做了以下工作:


import wave

w = wave.open('/usr/share/sounds/ekiga/voicemail.wav', 'r')

for i in range(w.getnframes()):

    frame = w.readframes(i)

    print frame

作为此代码的结果,我希望将声压视为时间的函数。相比之下,我看到了许多奇怪的神秘符号(不是十六进制数字)。有人可以请我帮忙吗?


千巷猫影
浏览 1529回答 3
3回答

繁星coding

我今天晚上做了一些研究,并弄清楚了:import wave, structwaveFile = wave.open('sine.wav', 'r')length = waveFile.getnframes()for i in range(0,length):&nbsp; &nbsp; waveData = waveFile.readframes(1)&nbsp; &nbsp; data = struct.unpack("<h", waveData)&nbsp; &nbsp; print(int(data[0]))希望此代码段对某人有所帮助。详细信息:使用struct模块,可以获取波形帧(在-32768; 0x8000和32767; 0x7FFF之间为2s互补二进制),这将读取MONO,16位WAVE文件。我发现此网页在制定方面非常有用。该代码段读取1帧。要读取一个以上的帧(例如13个),请使用waveData = waveFile.readframes(13)data = struct.unpack("<13h", waveData)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python