## 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):
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:
#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()