def compute_music_power(wav_filename,tf_config, normalize_factor, fftLen,stft_step, min_freq,max_freq,src_num, music_win_size,music_step): setting={} # read wav print "... reading", wav_filename wav_data=simmch.read_mch_wave(wav_filename) wav=wav_data["wav"]/normalize_factor fs=wav_data["framerate"] # print info print "# #channels : ", wav_data["nchannels"] setting["nchannels"]=wav_data["nchannels"] print "# sample size : ", wav.shape[1] setting["nsamples"]=wav.shape[1] print "# sampling rate : ", fs,"Hz" setting["framerate"]=fs print "# duration : ", wav_data["duration"],"sec" setting["duration"]=wav_data["duration"] # reading data df=fs*1.0/fftLen # cutoff bin min_freq_bin=int(np.ceil(min_freq/df)) max_freq_bin=int(np.floor(max_freq/df)) print "# min freq. :",min_freq_bin*df , "Hz" setting["min_freq"]=min_freq_bin*df print "# max freq. :",max_freq_bin*df , "Hz" setting["max_freq"]=max_freq_bin*df print "# freq. step:",df, "Hz" setting["freq_step"]=df print "# min freq. bin index:",min_freq_bin print "# max freq. bin index:",max_freq_bin # apply STFT win = hamming(fftLen) # ハミング窓 spec=simmch.stft_mch(wav,win,stft_step) spec_m=spec[:,:,min_freq_bin:max_freq_bin] # apply MUSIC method ## power[frame, freq, direction_id] print "# src_num:",src_num setting["src_num"]=src_num setting["step_ms"]=1000.0/fs*stft_step setting["music_step_ms"]=1000.0/fs*stft_step*music_step power=compute_music_spec(spec_m,src_num,tf_config,df,min_freq_bin, win_size=music_win_size, step=music_step) p=np.sum(np.real(power),axis=1) m_power=10*np.log10(p+1.0) m_full_power=10*np.log10(np.real(power)+1.0) return spec,m_power,m_full_power,setting
step = 160 #fftLen / 4 df=fs1*1.0/fftLen # cutoff bin min_freq=0 max_freq=10000 min_freq_bin=int(np.ceil(min_freq/df)) max_freq_bin=int(np.floor(max_freq/df)) sidelobe_freq_bin=int(np.floor(2000/df)) print "# min freq:",min_freq print "# max freq:",max_freq print "# min fft bin:",min_freq_bin print "# max fft bin:",max_freq_bin # STFT win = hamming(fftLen) # ハミング窓 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)
step = 160 #fftLen / 4 df = fs1 * 1.0 / fftLen # cutoff bin min_freq = 0 max_freq = 10000 min_freq_bin = int(np.ceil(min_freq / df)) max_freq_bin = int(np.floor(max_freq / df)) sidelobe_freq_bin = int(np.floor(2000 / df)) print "# min freq:", min_freq print "# max freq:", max_freq print "# min fft bin:", min_freq_bin print "# max fft bin:", max_freq_bin # STFT win = hamming(fftLen) # ハミング窓 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