sensor_positions = get_sensor_positions(hor_mic_count, vert_mic_count, dHor=dHor, dVert=dVert) source_position = get_source_position(angle_h, angle_v) d_arr = propagation_vector_free_field(sensor_positions, source_position, N_fft=n_fft, F_s=sr) ################################################################# # 4 - Do align align_stft_arr = ds_align(stft_arr, d_arr.T) ################################################################# # 5 - Calc filter output result_spec, _ = zelin_filter(stft_arr=align_stft_arr, alfa=0.7, alg_type=0) ################################################################# # 6 inverse STFT and save sig_out = istft(result_spec.transpose((1, 0)), overlap=2) sf.write(r"out/out_zelin.wav", sig_out, sr) ################################################################# # 7 save ds output result_spec = align_stft_arr.sum(axis=1) / (hor_mic_count * vert_mic_count) sig_out = istft(result_spec.transpose((1, 0)), overlap=2) sf.write(r"out/ds.wav", sig_out, sr)
dHor=dHor, dVert=dVert, angle_v=angle_v, angle_h=angle_h, sr=sr) w = np.zeros((n_bins, n_sensors)) pp = apply_beamforming_vector(w, stft_mix[:, :, i:i + mvdr_step]) res_spec = pp w = np.zeros((n_bins, n_sensors)) pp = apply_beamforming_vector( w, stft_mix[:, :, i + mvdr_step:i + 2 * mvdr_step]) if res_spec is None: res_spec = pp else: res_spec = np.hstack((res_spec, pp)) print('Result shape: {}'.format(res_spec.shape)) align_stft_arr = ds_align(stft_mix, d_arr.T) _, H = zelin_filter(stft_arr=align_stft_arr, alfa=0.7, alg_type=0) res_spec = res_spec * H # 5 - inverse STFT and save sig_out = istft(res_spec.T, overlap=2) sf.write(r"out/AD_NN_du_hast.wav", sig_out, sr)