Example #1
0
        # 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:
            save_sidelobe("sidelobe_wiener.png", tf_config, w,
                          sidelobe_freq_bin)
    # filter
    out_spec = apply_filter_freq(spec1_temp, w)
    # ISTFT
    recons = simmch.istft_mch(out_spec, win, step)

    #recons.reshape((recons.shape[0],1))
    simmch.save_mch_wave(recons * 32767.0, "recons_wiener.wav")
Example #2
0
		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:
			save_sidelobe("sidelobe_wiener.png",tf_config,w,sidelobe_freq_bin)
	# filter
	out_spec=apply_filter_freq(spec1_temp,w)
	# ISTFT
	recons=simmch.istft_mch(out_spec, win, step)

	#recons.reshape((recons.shape[0],1))
	simmch.save_mch_wave(recons*32767.0,"recons_wiener.wav")
	
	
Example #3
0
	nch=spec1.shape[0]
	nframe=spec1.shape[1]
	nfreq_bin=spec1.shape[2]
	sidelobe_freq_bin=int(np.floor(2000/df))
### DS beamformer & blocked signals
	ds_freq=np.zeros((nframe,nfreq_bin),dtype=complex)
	blocked_freq=np.zeros((spec1.shape[0]-1,spec1.shape[1],spec1.shape[2]),dtype=complex)
	for t in xrange(spec1.shape[1]):
		for freq_bin in xrange(spec1.shape[2]):
			blocked_freq[:,t,freq_bin]=B.dot(A[freq_bin,:,:].dot(spec1[:,t,freq_bin]))
			ds_freq[t,freq_bin]=np.dot(a_vec[freq_bin,:],spec1[:,t,freq_bin])/nch
	ds_freq=np.array([ds_freq])
### GSC for DS beamformer
	w_a,_,_=wiener_filter.wiener_filter_freq(blocked_freq,ds_freq)
	y_ds=wiener_filter.apply_filter_freq(blocked_freq,w_a)
	save_sidelobe("sidelobe_ds.png",tf_config,a_vec,sidelobe_freq_bin)
	w_gsc_ds=np.zeros((nfreq_bin,nch),dtype=complex)
	for freq_bin in xrange(nfreq_bin):
		w_gsc_ds[freq_bin,:]=a_vec[freq_bin,:]-w_a[freq_bin,:].dot(B.dot(A[freq_bin,:,:]))
	save_sidelobe("sidelobe_gsc_ds.png",tf_config,w_gsc_ds,sidelobe_freq_bin,clear_flag=False)
### MV beamformer
	#rz=estimate_correlation(spec1,spec1,nframe,1)
	rz=estimate_self_correlation(spec1)
	#rz=np.array([rz])
	w_mv=np.zeros((nfreq_bin,nch),dtype=complex)
	for freq_bin in xrange(nfreq_bin):
		rz_inv=np.linalg.inv(rz[0,freq_bin,:,:])
		av=a_vec[freq_bin,:].reshape((nch,1))
		temp=rz_inv.dot(av)
		po=av.T.conj().dot(temp)
		#w[freq_bin,:]=temp.dot(np.linalg.inv(po))