Python3分析處理聲音資料的例子
阿新 • • 發佈:2020-01-09
將音訊檔案拷貝到程式所在目錄即可。
#!/usr/bin/env python # encoding: utf-8 """ @Company:華中科技大學電氣學院聚變與等離子研究所 @version: V1.0 @author: Victor @contact: [email protected] or [email protected] 2018--2020 @software: PyCharm @file: VoiceDataProcessing.py @time: 2018/9/8 13:08 @Desc:處理聲音資料 """ import wave import pylab as pl import numpy as np print('[email protected] or [email protected]') print('working...') print("read wav data....") # 開啟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,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("update wav data....") 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)) 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("save new wav files....") 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分析處理聲音資料的例子就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。