Python3分析处理声音数据的例子
将音频文件拷贝到程序所在目录即可。
如下所示:
#!/usr/bin/envpython #encoding:utf-8 """ @Company:华中科技大学电气学院聚变与等离子研究所 @version:V1.0 @author:Victor @contact:1650996069@qq.comoryexin@hust.edu.cn2018--2020 @software:PyCharm @file:VoiceDataProcessing.py @time:2018/9/813:08 @Desc:处理声音数据 """ importwave importpylabaspl importnumpyasnp print('1650996069@qq.comoryexin@hust.edu.cn') print('working...') print("readwavdata....") #打开WAV文档,声音文件 f=wave.open(r"speak.wav","rb") fo=wave.open(r"jg.wav","wb") fi=wave.open(r"back.wav","rb") #读取波形数据 #(nchannels,sampwidth,framerate,nframes,comptype,compname) params=f.getparams() nchannels,sampwidth,framerate,nframes=params[:4] str_data=f.readframes(nframes) fi_params=fi.getparams() fi_nframes=fi_params[3] fi_str_data=fi.readframes(fi_nframes) #将波形数据转换为数组,并更改 print("updatewavdata....") wave_data=np.fromstring(str_data,dtype=np.short) fi_wave_data=np.fromstring(fi_str_data,dtype=np.short) #复制并合并声音 new_wave_data=np.hstack((wave_data,wave_data,wave_data,wave_data,wave_data,wave_data,wave_data,wave_data)) temp_wavedata=fi_wave_data[:len(new_wave_data)] new_wave_data=temp_wavedata*0.5+new_wave_data*0.5 new_wave_data=np.array(new_wave_data) new_wave_data=new_wave_data.astype(wave_data.dtype) new_str_data=new_wave_data.tostring() #写波形数据参数 print("savenewwavfiles....") fo.setnchannels(nchannels) fo.setframerate(framerate) fo.setsampwidth(sampwidth) fo.writeframes(new_str_data) #绘制波形 wave_data.shape=-1,2 wave_data=wave_data.T time=np.arange(0,nframes)*(1.0/framerate) pl.subplot(221) pl.plot(time,wave_data[0]) pl.subplot(222) pl.plot(time,wave_data[1],c="g") pl.xlabel("time(seconds)") pl.show() #绘制波形 new_wave_data.shape=-1,2 new_wave_data=new_wave_data.T new_time=np.arange(0,nframes*8)*(1.0/framerate) pl.subplot(223) pl.plot(new_time,new_wave_data[0]) pl.subplot(224) pl.plot(new_time,new_wave_data[1],c="g") pl.xlabel("time(seconds)") pl.show()
以上这篇Python3分析处理声音数据的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。