fs,
                                        window=window_type,
                                        nperseg=window_size,
                                        noverlap=window_overlap,
                                        nfft=nfft)
        est_s_t = est_s_t[:, :audio_file_length_samples]

        # Parameters
        filtersize = ir.shape[0]
        winsize = 8 * filtersize
        hopsize = winsize / 16

        # IR ESTIMATION FROM ESTIMATED ANECHOIC SIGNAL
        ir_est_derv = np.zeros((filtersize, dimM))
        for m in range(dimM):
            ir_est_derv[:, m] = sid_stft2(est_s_t[m], y_t[m], winsize, hopsize,
                                          filtersize)

        # %% RT60 estimation
        # True computed
        est_derv = compute_t60(ir_est_derv[:, 0], fs, rt60_f)[0, 1]  # rt10
        rt60_estimated = est_derv

# %% PLOT

print('------------------------')
print('RT60 computed (true):', rt60_true)
print('RT60 estimated:', rt60_estimated)

if plot:
    plt.figure()
    plt.plot(ir)
예제 #2
0
                                            fs,
                                            window=window_type,
                                            nperseg=window_size,
                                            noverlap=window_overlap,
                                            nfft=nfft)
            est_s_t = est_s_t[:, :audio_file_length_samples]

            # %% Akis STFT System Identification

            # Parameters
            filtersize = ir.shape[0]
            winsize = 8 * filtersize
            hopsize = winsize / 16

            # IR ESTIMATION FROM TRUE ANECHOIC SIGNAL
            ir_est_true = sid_stft2(s_t, y_t[0], winsize, hopsize, filtersize)

            # IR ESTIMATION FROM ESTIMATED ANECHOIC SIGNAL
            ir_est_derv = sid_stft2(est_s_t[0], y_t[0], winsize, hopsize,
                                    filtersize)

            # %% RT60 estimation

            # Oracle
            est_true = compute_t60(ir_est_true, fs, rt60_f)[0, rt_method_idx]
            rt60_estimated[ir_idx, af_idx, rt_estimation_method_idx] = est_true

            # True computed
            rt_estimation_method_idx += 1
            est_derv = compute_t60(ir_est_derv, fs, rt60_f)[0, rt_method_idx]
            rt60_estimated[ir_idx, af_idx, rt_estimation_method_idx] = est_derv
예제 #3
0
                # plt.show()

                # coefs over frequency
                # plt.figure()
                # plt.plot(np.abs(C.squeeze()))
                # plt.show()


                # %% AKIS STFT SYSTEM IDENTIFICATION

                winsize = 8 * ir_length_samples # true, groundtruth
                hopsize = winsize / 16

                # IR ESTIMATION FROM ESTIMATED ANECHOIC SIGNAL
                for m in range(dimM):
                    ir_est_derv = sid_stft2(est_s_t[m], y_t[m], winsize, hopsize, ir_length_samples)
                    irs_estimated[rt60_0_idx, audio_file_idx, L_idx, m] = ir_est_derv


                    # %% t60 estimation

                    plot = False
                    est_derv = compute_t60(ir_est_derv, sr, band_centerfreqs, plot=plot, title='Estimated IR, derv signal')
                    est_derv = est_derv[0] # first band
                    # store
                    results[rt60_0_idx, audio_file_idx, L_idx, m] = est_derv


np.save('/Users/andres.perez/source/dereverberation/ctf/ctf_data/results_'+str(sh_order)+'_'+str(tau),results)
np.save('/Users/andres.perez/source/dereverberation/ctf/ctf_data/irs_estimated_'+str(sh_order)+'_'+str(tau),irs_estimated)