数学之路(3)-机器学习(3)-机器学习算法-神经网络[18]
编写线性神经网络 的python代码,目标是通过输入在混杂噪声的语音中前面预留的待拟合的背景音乐,以供线性神经网络拟合背景音乐,输出能与混合后形成声音中的背景音乐尽可能一致的噪声,部分python代码如下:
#复制并除去背景声音jg_wave_data=copy.deepcopy(new_wave_data)jg_temp_wavedata=np.hstack((fi_wave_data,fi_wave_data))[:len(new_wave_data)]jg_temp_wavedata=jg_temp_wavedata[:len(new_wave_data)]*w[1]+w[0]jg_wave_data=jg_wave_data-jg_temp_wavedatafor jg_i in xrange(0,len(jg_wave_data)): if abs(jg_wave_data[jg_i])<500: jg_wave_data[jg_i]=0jg_wave_data[:framerate]=0 jg_wave_data =jg_wave_data.astype(wave_data.dtype)jg_str_data=jg_wave_data.tostring()print "save output wav...."fend.setnchannels(nchannels)fend.setframerate(framerate)fend.setsampwidth(sampwidth)fend.writeframes(jg_str_data)# 绘制波形time = np.arange(0, nframes) * (1.0 / framerate)wave_data.shape = -1, 2wave_data = wave_data.Tpl.subplot(321)pl.plot(time, wave_data[0])pl.subplot(322)pl.plot(time, wave_data[1], c="g")pl.xlabel("time (seconds)") # 绘制波形new_wave_data.shape = -1, 2new_wave_data =new_wave_data.Tpl.subplot(323)pl.plot(time,new_wave_data[0])pl.subplot(324)pl.plot(time, new_wave_data[1], c="g")pl.xlabel("time (seconds)")pl.show()# 绘制波形jg_wave_data.shape = -1, 2jg_wave_data =jg_wave_data.Tpl.subplot(325)pl.plot(time,jg_wave_data[0])pl.subplot(326)pl.plot(time, jg_wave_data[1], c="g")pl.xlabel("time (seconds)")pl.show()