Example #1
0
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
Example #2
0
		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
Example #3
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)
Example #4
0
	
	## 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)
Example #5
0
                      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