`
jishublog
  • 浏览: 868484 次
文章分类
社区版块
存档分类
最新评论

数学之路(3)-机器学习(3)-机器学习算法-神经网络[18]

 
阅读更多

编写线性神经网络 的python代码,目标是通过输入在混杂噪声的语音中前面预留的待拟合的背景音乐,以供线性神经网络拟合背景音乐,输出能与混合后形成声音中的背景音乐尽可能一致的噪声,部分python代码如下:

#线性逼近前段噪声
b=1
a0=5e-1
a=0.0
r=1.5
x=[]
d=[]
ii=0
for audio_i in xrange(0,framerate/2):
    if fi_wave_data[audio_i]!=0.:
        x.append([])
        x[ii].append(1)
        x[ii].append(fi_wave_data[audio_i])
        d.append(new_wave_data[audio_i])
        ii+=1
    if ii>100:
        break
x=np.array(x)
d=np.array(d)

w=np.random.rand(2)*np.mean(x)#np.array([b,0])
expect_e=15
maxtrycount=10000

最后去除噪声,并绘制声音的波形,去除噪声的方式,是直接从混合了背景音乐噪声的声音波形中直接减去线性神经网络拟合后的噪声

#复制并除去背景声音

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_wavedata

for jg_i in xrange(0,len(jg_wave_data)):
    if abs(jg_wave_data[jg_i])<500:
        jg_wave_data[jg_i]=0
jg_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, 2
wave_data = wave_data.T

pl.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, 2
new_wave_data =new_wave_data.T

pl.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, 2
jg_wave_data =jg_wave_data.T

pl.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()


通过预先采集一小段噪声信号,来实现后期对语音的除噪,实现将背景音乐去除

本博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/u010255642



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics