diff --git a/matlab/tfgm/scripts/exp_all_tff1.m b/matlab/tfgm/scripts/exp_all_tff1.m index 841da385679d1042b107719c81c9abc43e5251ca..f1eaa1dfb5fe7a88f71c358022624b89a16e0858 100644 --- a/matlab/tfgm/scripts/exp_all_tff1.m +++ b/matlab/tfgm/scripts/exp_all_tff1.m @@ -1,23 +1,35 @@ clc; clear; close all; %% -% This script executes algorithm 1 (TFF-1: filtering out one TF region) +% This script executes algorithm 1 (TFF-1: filtering out one TF region) % proposed in paper [1] on multiple datasets. % % [1] Time-frequency fading algorithms based on Gabor multipliers, % A. Marina Kreme Valentin Emiya, Caroline Chaux, and Bruno Torresani %% -wb_list ={'car','plane','train'}; -loc_list = {'beeps','bird','clicks','finger_snaps','modulations'}; -win_list = {'gauss 256', 'hann 512'}; +wideband_name ={'car','plane','train'}; +localized_name = {'beeps','bird','chirps','clicks','finger_snaps',..., + 'modulations'}; +wins_params = struct('Gauss256', struct('win_type','gauss','win_len',..., + 256,'hop_ratio',1/4,'nbins_ratio', 4, 'win_dur',256/8000),..., + 'Hann512', struct('win_type','hann','win_len', 512,..., + 'hop_ratio',1/8,'nbins_ratio', 2, 'win_dur',512/8000)); + +keys = fieldnames(wins_params); + +%% tol_subregions = 0; gamma=0.7; + +fs = 8000; +sig_len =16384; +signal_params = generate_signal_parameters(fs, sig_len); %% -f = fopen('exp_1area_cuicui.csv', 'w'); +f = fopen('exp_tff1_car_bird.csv', 'w'); fprintf(f, '%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s \n','loc_src', 'wb_src',..., 'win_type','win_len','t_oracle','t_true_energy','t_est','t_arrf',..., 't_evdn','t_ut_x','sdr_mix','sdr_interp', 'sdr_zero','sdr_est',..., @@ -25,37 +37,53 @@ fprintf(f, '%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s \n','l %% -for win =1:length(win_list) + +for win_param = 1 :length(keys) + - [win_type, win_dur, win_len, hop_ratio, nbins_ratio] = get_win_params(win_list{win}); + + win_len = wins_params.(keys{win_param}).win_len; + win_type = wins_params.(keys{win_param}).win_type; + win_dur = wins_params.(keys{win_param}).win_dur; + hop_ratio = wins_params.(keys{win_param}).hop_ratio; + nbins_ratio = wins_params.(keys{win_param}).nbins_ratio; + + params = get_params(win_len, win_type); + + fprintf("window %s:\n\n",win_type); fprintf("window: %s - length: %.f\n", win_type, win_len); - for wb = 1:1%length(wb_list) - wideband_src = wb_list{wb}; + + % DGT parameters + dgt_params = generate_dgt_parameters(win_type, win_len, params.hop,..., + params.nbins, sig_len); + + %DGT operators + [dgt, idgt] = get_stft_operators(dgt_params, signal_params); + + for wb = 1: length(wideband_name) + wideband_src =wideband_name{wb}; fprintf("**************************************\n\n") - fprintf("This is the %.f ieme run. wideband source is:%s \n",wb ,wb_list{wb}); + fprintf("This is the %.f ieme run. wideband source is:%s \n", wb , wideband_src); fprintf("**************************************\n\n") - for loc=1:1%length(loc_list) - - pwd; - fig_dir =['fig_', wb_list{wb},'_',loc_list{loc},'_', win_type,'_',num2str(win_len)]; + for loc=1:length(localized_name) + loc_source = localized_name{loc}; + fprintf("loalized source number %.f : %s \n",loc,loc_source) ; + fprintf("**************************************\n\n") + %% + fig_dir =['fig_', wideband_src,'_',loc_source,'_', win_type,'_',num2str(win_len)]; if ~exist(fig_dir,'dir') mkdir(fig_dir); end addpath(fig_dir) %% - fprintf("loalized source number %.f : %s \n",loc,loc_list{loc}) ; - fprintf("**************************************\n\n") - loc_source=loc_list{loc}; - %% - [alpha, seuil, radius] = set_smooth_mask_params(wideband_src, loc_source, win_type); + [alpha, thres, radius] = set_smooth_mask_params(wideband_src, loc_source, win_type); [signals, dgt_params, signal_params, mask, mask_area, dgt,..., idgt] = get_mix(loc_source, wideband_src, gamma, win_dur, hop_ratio,..., - nbins_ratio, win_type, alpha, seuil, radius, fig_dir); - + nbins_ratio, win_type, alpha, thres, radius, fig_dir); fprintf('win_len:%.f\n', length(dgt_params.win)); fprintf('hop:%.f\n', dgt_params.hop); @@ -179,7 +207,7 @@ for win =1:length(win_list) plot(lambda_est,sdr_wideband(lambda_est),'o','MarkerSize',12) plot(lambda_true_energy,sdr_wideband(lambda_true_energy),'*','MarkerSize',12) plot(1,sdr_wideband(1),'o','MarkerSize',12) - legend('SDR', 'TFF-O','TFF-1', 'TFF-E','Zero fill'); + legend('SDR', 'TFF-O','TFF-1', 'TFF-P','Zero fill'); xlabel('$\lambda$','Interpreter','latex') ylabel('SDR(dB)') @@ -207,7 +235,7 @@ for win =1:length(win_list) ylabel('IS (dB)') set(gca,'XScale','log'); grid() - legend('SDR','TFF-O','TFF-1','TFF-E','Zero fill') + legend('SDR','TFF-O','TFF-1','TFF-P','Zero fill') axis tight; saveas(gcf,fullfile(fig_dir, 'tuning_lambda_IS.pdf')); @@ -237,7 +265,7 @@ for win =1:length(win_list) axis tight; - legend('SDR','TFF-1','TFF-E','TFF-O','Zero fill','Location','northwest'); + legend('SDR','TFF-1','TFF-P','TFF-O','Zero fill','Location','northwest'); xlabel('$\lambda$','Interpreter','latex') ylabel('IS divergence') set(gca, 'FontSize', 20, 'fontName','Times'); @@ -247,7 +275,7 @@ for win =1:length(win_list) %% Reconstructed signals - tf_mat_mix = compute_dgt(signals.mix, dgt ); + x_oracle = x_rec(lambda_oracle); wav_write('x_oracle.wav', x_oracle, signal_params.fs); @@ -259,10 +287,12 @@ for win =1:length(win_list) wav_write('x_true_energy.wav', x_true_energy, signal_params.fs); - x_zero = solver_tfgm_zero(tf_mat_mix, mask, idgt); + x_zero = zero_fill_solver(x_mix, mask, dgt, idgt, dgt_params,..., + signal_params, fig_dir); wav_write('x_zero_fill.wav', x_zero, signal_params.fs); - x_interp= solver_tfgm_interp(tf_mat_mix, mask, idgt); + x_interp= interpolation_solver(x_mix, mask, dgt, idgt, dgt_params,..., + signal_params, fig_dir); wav_write('x_interp.wav', x_zero, signal_params.fs); @@ -352,9 +382,9 @@ for win =1:length(win_list) figure; plot_spectrogram(x_true_energy, dgt_params, signal_params,dgt) - title(['TFF-E SDR= ', num2str(sdr_true_energy,4),'dB ','IS=',num2str(is_true_energy) ]) + title(['TFF-P SDR= ', num2str(sdr_true_energy,4),'dB ','IS=',num2str(is_true_energy) ]) set(gca, 'FontSize', 20, 'fontName','Times'); - saveas(gcf,fullfile(fig_dir, 'spectrogram_TFF-E.pdf')); + saveas(gcf,fullfile(fig_dir, 'spectrogram_TFF-P.pdf')); %% @@ -366,14 +396,11 @@ for win =1:length(win_list) %% save in csv fprintf(f,'%s %s %s %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f \n',..., - wb_list{wb},loc_list{loc},win_list{win},win_len,t_oracle,t_true_energy,..., + wideband_src,loc_source,win_type ,win_len,t_oracle,t_true_energy,..., t_est,t_arrf,t_evdn,t_ut_x,sdr_mix, sdr_interp,..., sdr_zero,sdr_est,sdr_oracle, is_interp, is_mix, is_est, is_zero, is_oracle); - - - end end