Exemple #1
0
    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)