为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中读取* .wav文件

在Python中读取* .wav文件

千巷猫影 2019-11-11 13:12:19
我需要分析写入.wav文件的声音。为此,我需要将此文件转换为一组数字(例如,数组)。我想我需要使用wave包。但是,我不知道它是如何工作的。例如,我做了以下工作:import wavew = wave.open('/usr/share/sounds/ekiga/voicemail.wav', 'r')for i in range(w.getnframes()):    frame = w.readframes(i)    print frame作为此代码的结果,我希望将声压视为时间的函数。相比之下,我看到了许多奇怪的神秘符号(不是十六进制数字)。有人可以请我帮忙吗?
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

我今天晚上做了一些研究,并弄清楚了:


import wave, struct


waveFile = wave.open('sine.wav', 'r')


length = waveFile.getnframes()

for i in range(0,length):

    waveData = waveFile.readframes(1)

    data = struct.unpack("<h", waveData)

    print(int(data[0]))

希望此代码段对某人有所帮助。详细信息:使用struct模块,可以获取波形帧(在-32768; 0x8000和32767; 0x7FFF之间为2s互补二进制),这将读取MONO,16位WAVE文件。我发现此网页在制定方面非常有用。


该代码段读取1帧。要读取一个以上的帧(例如13个),请使用


waveData = waveFile.readframes(13)

data = struct.unpack("<13h", waveData)


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1520 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信