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
type=str, metavar="FILE") (options, args) = parser.parse_args() # argv check if len(args)<2: print >>sys.stderr, "Usage: music.py <in: src.wav> <in: desired.wav>" quit() # read tf npr.seed(1234) # read wav (src) wav_filename1=args[0] print "... reading", wav_filename1 wav_data1=simmch.read_mch_wave(wav_filename1) wav1=wav_data1["wav"]/32767.0 fs1=wav_data1["framerate"] nch1=wav_data1["nchannels"] # print info print "# channel num : ", nch1 print "# sample size : ", wav1.shape print "# sampling rate : ", fs1 print "# sec : ", wav_data1["duration"] # read wav (desired) wav_data_list=[] for wav_filename2 in args[1:]: print "... reading", wav_filename2 wav_data2=simmch.read_mch_wave(wav_filename2) wav2=wav_data2["wav"]/32767.0
help="volumes of input sound (0<=v<=1)", default=1.0, type=str, metavar="VOL") (options, args) = parser.parse_args() # argv check if len(args) < 1: quit() # npr.seed(1234) src_volume = options.volume output_filename = options.output_file data = [] # wav_filename = args[0] print "... reading", wav_filename wav_data = simmch.read_mch_wave(wav_filename) wav = wav_data["wav"] fs = wav_data["framerate"] nch = wav_data["nchannels"] amp = np.max(np.abs(wav)) print "[INFO] max amplitude:", amp g = 32767.0 / amp * src_volume print "[INFO] gain:", g wav = wav * g # save data if output_filename != None: simmch.save_mch_wave(wav, output_filename)
## read tf print "... reading", tf_filename tf_config=read_hark_tf(tf_filename) mic_pos=read_hark_tf_param(tf_filename) src_index=simmch.nearest_direction_index(tf_config,src_theta) print "# mic positions :",mic_pos print "# direction index:",src_index if not src_index in tf_config["tf"]: print >>sys.stderr, "Error: tf index",src_index,"does not exist in TF file" quit() ## read wav file print "... reading", wav_filename wav_data=simmch.read_mch_wave(wav_filename) scale=32767.0 wav=wav_data["wav"]/scale fs=wav_data["framerate"] nch=wav_data["nchannels"] ## print info print "# channel num : ", nch print "# sample size : ", wav.shape print "# sampling rate : ", fs print "# sec : ", wav_data["duration"] mono_wavdata = wav[0,:] ## apply TF fftLen = 512 step = fftLen / 4 mch_wavdata=apply_tf(mono_wavdata,fftLen, step,tf_config,src_index)
default=None, type=str, metavar="FILE") (options, args) = parser.parse_args() # argv check if len(args) < 2: print >> sys.stderr, "Usage: music.py <in: src.wav> <in: desired.wav>" quit() # read tf npr.seed(1234) # read wav (src) wav_filename1 = args[0] print "... reading", wav_filename1 wav_data1 = simmch.read_mch_wave(wav_filename1) wav1 = wav_data1["wav"] / 32767.0 fs1 = wav_data1["framerate"] nch1 = wav_data1["nchannels"] # print info print "# channel num : ", nch1 print "# sample size : ", wav1.shape print "# sampling rate : ", fs1 print "# sec : ", wav_data1["duration"] # read wav (desired) wav_data_list = [] for wav_filename2 in args[1:]: print "... reading", wav_filename2 wav_data2 = simmch.read_mch_wave(wav_filename2) wav2 = wav_data2["wav"] / 32767.0