Exemplo n.º 1
0
    ##
    nframe1 = spec1.shape[1]
    nframe2 = spec2.shape[1]
    nframe = min(nframe1, nframe2)
    spec1_temp = spec1[:, 0:nframe, min_freq_bin:max_freq_bin]
    spec2_temp = spec2[:, 0:nframe, min_freq_bin:max_freq_bin]

    if options.noise is not None:
        w = wiener_filter_eigen(spec1_temp,
                                spec2_temp,
                                win_size=nframe,
                                r_step=1)
        print "# filter:", w.shape
        out_spec = apply_filter_eigen(spec1_temp, w)
        # ISTFT
        recons = simmch.istft_mch(out_spec, win, step)
        simmch.save_mch_wave(recons * 32767.0, "recons_eigen.wav")
        quit()
    #print spec1_temp.shape
    #print spec2_temp.shape
    #win_size=50
    # spec[ch, frame, freq_bin]
    # w[ch2,ch1]
    w, _, _ = wiener_filter_freq(spec1_temp,
                                 spec2_temp,
                                 win_size=nframe,
                                 r_step=1)
    print "# filter:", w.shape
    if options.tf is not None:
        tf_config = read_hark_tf(options.tf)
        if (len(w.shape) == 3):
Exemplo n.º 2
0
	spec1=simmch.stft_mch(wav1,win,step)
	spec2=simmch.stft_mch(wav2,win,step)
	##
	##
	nframe1=spec1.shape[1]
	nframe2=spec2.shape[1]
	nframe=min(nframe1,nframe2)
	spec1_temp=spec1[:,0:nframe,min_freq_bin:max_freq_bin]
	spec2_temp=spec2[:,0:nframe,min_freq_bin:max_freq_bin]

	if options.noise is not None:
		w=wiener_filter_eigen(spec1_temp,spec2_temp,win_size=nframe,r_step=1)
		print "# filter:",w.shape
		out_spec=apply_filter_eigen(spec1_temp,w)
		# ISTFT
		recons=simmch.istft_mch(out_spec, win, step)
		simmch.save_mch_wave(recons*32767.0,"recons_eigen.wav")
		quit()
	#print spec1_temp.shape
	#print spec2_temp.shape
	#win_size=50
	# spec[ch, frame, freq_bin]
	# w[ch2,ch1]
	w,_,_=wiener_filter_freq(spec1_temp,spec2_temp,win_size=nframe,r_step=1)
	print "# filter:",w.shape
	if options.tf is not None:
		tf_config=read_hark_tf(options.tf)
		if(len(w.shape)==3):
			for i in xrange(len(w.shape)):
				save_sidelobe("sidelobe_wiener%i.png"%(i+1),tf_config,w[:,:,i],sidelobe_freq_bin)
		else:
Exemplo n.º 3
0
		#w[freq_bin,:]=temp.dot(np.linalg.inv(po))
		w_mv[freq_bin,:]=np.squeeze(rz_inv.dot(av).dot(np.linalg.inv(av.conj().T.dot(rz_inv).dot(av))))
	mv_freq=wiener_filter.apply_filter_freq(spec1,w_mv)
	#mv_freq=np.array([mv_freq])
	save_sidelobe("sidelobe_mv.png",tf_config,w_mv,sidelobe_freq_bin)
### GSC for MV beamformer
	w_a,_,_=wiener_filter.wiener_filter_freq(blocked_freq,mv_freq)
	y_mv=wiener_filter.apply_filter_freq(blocked_freq,w_a)
	w_gsc_mv=np.zeros((nfreq_bin,nch),dtype=complex)
	for freq_bin in xrange(nfreq_bin):
		w_gsc_mv[freq_bin,:]=w_mv[freq_bin,:]-w_a[freq_bin,:].dot(B.dot(A[freq_bin,:,:]))
	save_sidelobe("sidelobe_gsc_mv.png",tf_config,w_gsc_mv,sidelobe_freq_bin,clear_flag=False)
###
	out_gsc_ds=ds_freq-y_ds
	out_gsc_mv=mv_freq-y_mv
	recons_out_gsc_ds=simmch.istft_mch(out_gsc_ds, win, step)
	recons_out_gsc_mv=simmch.istft_mch(out_gsc_mv, win, step)
	recons_ds_y=simmch.istft_mch(y_ds, win, step)
	recons_mv_y=simmch.istft_mch(y_mv, win, step)
	recons_b=simmch.istft_mch(blocked_freq, win, step)
	recons_ds=simmch.istft_mch(ds_freq, win, step)
	recons_mv=simmch.istft_mch(mv_freq, win, step)
	simmch.save_mch_wave(recons_mv*32767.0,"mv.wav")
	simmch.save_mch_wave(recons_ds*32767.0,"ds.wav")
	simmch.save_mch_wave(recons_ds_y*32767.0,"y_ds.wav")
	simmch.save_mch_wave(recons_mv_y*32767.0,"y_mv.wav")
	simmch.save_mch_wave(recons_out_gsc_ds*32767.0,"gsc_ds.wav")
	simmch.save_mch_wave(recons_out_gsc_mv*32767.0,"gsc_mv.wav")
	simmch.save_mch_wave(recons_b*32767.0,"b.wav")

	quit()