重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Python 读取WAV文件
站在用户的角度思考问题,与客户深入沟通,找到盂县网站设计与盂县网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟主机、企业邮箱。业务覆盖盂县地区。import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav filename = '1.wav' wavefile = wave.open(filename, 'r') # open for writing #读取wav文件的四种信息的函数。期中numframes表示一共读取了几个frames,在后面要用到滴。 nchannels = wavefile.getnchannels() sample_width = wavefile.getsampwidth() framerate = wavefile.getframerate() numframes = wavefile.getnframes() print("channel",nchannels) print("sample_width",sample_width) print("framerate",framerate) print("numframes",numframes) #建一个y的数列,用来保存后面读的每个frame的amplitude。 y = zeros(numframes) #for循环,readframe(1)每次读一个frame,取其前两位,是左声道的信息。右声道就是后两位啦。 #unpack是struct里的一个函数,用法详见http://docs.python.org/library/struct.html。简单说来就是把#packed的string转换成原来的数据,无论是什么样的数据都返回一个tuple。这里返回的是长度为一的一个 #tuple,所以我们取它的第零位。 for i in range(numframes): val = wavefile.readframes(1) left = val[0:2] #right = val[2:4] v = struct.unpack('h', left )[0] y[i] = v #framerate就是44100,文件初读取的值。然后本程序最关键的一步!specgram!实在太简单了。。。 Fs = framerate specgram(y, NFFT=1024, Fs=Fs, noverlap=900) show()