Loading scripts/binauralRenderer_interface/check_ivas_binaural_gains.m +78 −18 Original line number Diff line number Diff line Loading @@ -41,7 +41,18 @@ clc; %% Add path to routines needed scripts addpath('./matlab_hrir_generation_scripts/'); % mc_mode 5.1 = MCMASA MCMASA MCMASA MCMASA PARAMMC PARAMMC PARAMMC MCT MCT MCT MCT MCT MCT MCT % renderer = param param param param fastconv fastconv fastconv crend crend crend crend crend crend crend % mc_mode 7.1 = MCMASA MCMASA MCMASA MCMASA PARAMMC PARAMMC PARAMMC MCT MCT MCT MCT MCT MCT MCT % renderer = param param param param fastconv fastconv fastconv fastconv crend crend crend crend crend crend % mc_mode 7.1.4 = MCMASA MCMASA MCMASA MCMASA PARAMMC PARAMMC PARAMMC MCT MCT MCT MCT MCT MCT MCT % renderer = param param param param param param param param fastconv fastconv crend crend crend crend % sba renderer = param param param param param param param fastconv fastconv fastconv fastconv fastconv fastconv fastconv bitrates = [13200, 16400, 24400, 32000, 48000, 64000, 80000, 96000, 128000, 160000, 192000, 256000, 384000, 512000]; bitrates_MC_5_1 = [32000,80000, 256000]; bitrates_MC_7_1_4 = [80000, 160000,256000]; bitrates_MC_TDREND = [128000, 256000]; bitrates_SBA = [80000, 96000]; inFilesPath = { Loading @@ -56,34 +67,83 @@ inFilesPath = { {'5_1','../testv/6_Channel_ID_48khz_pn_duplicated.wav'},... {'5_1','../testv/6_Channel_ID_48khz_pn_different.wav'},... {'5_1','../testv/6_Channel_ID_48khz.wav'},... {'7_1_4','../testv/FL_FR_C_LFE_Lss_Rss_Ls_Rs_Lv_Rv_Lvr_Rvr_714_48k.wav'},... {'5_1', '../testv/6_Channel_ID_48khz_pn.wav'}, ... {'5_1', '../testv/stv51MC48c.wav'}, ... {'7_1_4','../testv/FL_FR_C_LFE_Lss_Rss_Ls_Rs_Lv_Rv_Lvr_Rvr_714_48k.wav'},... {'7_1_4', '../testv/stv714MC48c.wav'}}; level_hrir = zeros(size(inFilesPath,2),size(bitrates,2)); level_hrir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); gain_hrir = zeros(size(inFilesPath,2),size(bitrates,2)); gain_hrir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); level_hoa2bin = zeros(3,size(bitrates_SBA,2)); level_hoa2bin_bin = zeros(3,size(bitrates_SBA,2)); gain_hoa2bin = zeros(3,size(bitrates_SBA,2)); gain_hoa2bin_bin = zeros(3,size(bitrates_SBA,2)); % sba parambin fastconv for ind=1:size(inFilesPath,2) if (contains(inFilesPath{ind}{1}, 'OA')) [level_hoa2bin_bin(ind,:), level_hoa2bin(ind,:), gain_hoa2bin(ind,:), gain_hoa2bin_bin(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_SBA, 'BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels hoa2bin " + inFilesPath{ind}{2} + " : " + num2str(level_hoa2bin(ind,:))); disp("levels hoa2bin with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_hoa2bin_bin(ind,:))); end end % td rend level_tdrend = zeros(10,size(bitrates_MC_TDREND,2)); level_tdrend_bin = zeros(10,size(bitrates_MC_TDREND,2)); gain_tdrend = zeros(10,size(bitrates_MC_TDREND,2)); gain_tdrend_bin = zeros(10,size(bitrates_MC_TDREND,2)); for ind=1:size(inFilesPath,2) if (contains(inFilesPath{ind}{1}, '5_1')) [level_tdrend_bin(ind,:), level_tdrend(ind,:), gain_tdrend_bin(ind,:), gain_tdrend(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_TDREND, '-t ../testv/headRot_no_rot.csv BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels tdrend hrir " + inFilesPath{ind}{2} + " : " + num2str(level_tdrend(ind,:))); disp("levels tdrend hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_tdrend_bin(ind,:))); end end % parambin fastconv crend level_hrir = zeros(12,size(bitrates_MC_5_1,2)); level_hrir_bin = zeros(12,size(bitrates_MC_5_1,2)); gain_hrir = zeros(12,size(bitrates_MC_5_1,2)); gain_hrir_bin = zeros(12,size(bitrates_MC_5_1,2)); for ind=1:size(inFilesPath,2) [inFilesPath{ind}{3}{1},inFilesPath{ind}{3}{2},inFilesPath{ind}{3}{3},inFilesPath{ind}{3}{4}]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates, 'BINAURAL'); if (contains(inFilesPath{ind}{1}, '7_1_4')) [level_hrir_bin(ind,:), level_hrir(ind,:), gain_hrir_bin(ind,:), gain_hrir(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_7_1_4, 'BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(level_hrir(ind,:))); disp("levels hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_hrir_bin(ind,:))); end if (contains(inFilesPath{ind}{1}, '5_1')) [level_hrir_bin(ind,:), level_hrir(ind,:), gain_hrir_bin(ind,:), gain_hrir(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_5_1, 'BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{2})); disp("levels hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1})); disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(level_hrir(ind,:))); disp("levels hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_hrir_bin(ind,:))); end end level_brir = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); level_brir_bin = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); gain_brir = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); gain_brir_bin = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); level_brir = zeros(size(inFilesPath,2),size(bitrates,2)); level_brir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); gain_brir = zeros(size(inFilesPath,2),size(bitrates,2)); gain_brir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); for ind=1:size(inFilesPath,2) [inFilesPath{ind}{4}{1},inFilesPath{ind}{4}{2},inFilesPath{ind}{4}{3},inFilesPath{ind}{4}{4}] = levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates, 'BINAURAL_ROOM_IR'); if (contains(inFilesPath{ind}{1}, '7_1_4')) [level_brir_bin(ind,:), level_brir(ind,:), gain_brir_bin(ind,:), gain_brir(ind,:)] = levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_7_1_4, 'BINAURAL_ROOM_IR'); % disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{1}) + " " + num2str(inFilesPath{ind}{4}{2})+ " " + num2str(inFilesPath{ind}{4}{3})+ " " + num2str(inFilesPath{ind}{4}{4})); disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{2})); disp("levels brir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{1})); disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(level_brir(ind,:))); disp("levels brir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_brir_bin(ind,:))); end if (contains(inFilesPath{ind}{1}, '5_1')) [level_brir_bin(ind,:), level_brir(ind,:), gain_brir_bin(ind,:), gain_brir(ind,:)] = levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_5_1, 'BINAURAL_ROOM_IR'); % disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{1}) + " " + num2str(inFilesPath{ind}{4}{2})+ " " + num2str(inFilesPath{ind}{4}{3})+ " " + num2str(inFilesPath{ind}{4}{4})); disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(level_brir(ind,:))); disp("levels brir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_brir_bin(ind,:))); end end scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/binauralizeAudio.m→scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/levelsBinauralizeAudio.m +3 −1 Original line number Diff line number Diff line function [binauralSignal, gain_bin, gain] = binauralizeAudio(audioFile, matFile ) function [level_bin, level, gain_bin, gain] = levelsBinauralizeAudio(audioFile, matFile ) debug = 0; Loading Loading @@ -163,6 +163,8 @@ function [binauralSignal, gain_bin, gain] = binauralizeAudio(audioFile, matFile delete(pcm_in); delete(pcm_out); level_bin = lev_out_bin; level = lev_out; gain = 20*log10(fac_output); gain_bin = 20*log10(fac_output_bin); Loading scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/binauralizeAudioWithIvas.m→scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/levelsBinauralizeAudioWithIvas.m +119 −0 Original line number Diff line number Diff line function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) function [level_bin, level, gain_bin, gain] = levelsBinauralizeAudioWithIvas(audioFile,spk_layout, bitRates, output_format ) BINAURAL_LFE_GAIN = 10 ^ (5.5 / 20); BINAURAL_LFE_GAIN = 0; Loading Loading @@ -48,7 +48,9 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) [audioMulticanal, Fs] = audioread(audioFile); % put lfe to zero if spk_config.lfe_index >= 0 audioMulticanal(:,spk_config.lfe_index) = zeros(1,size(audioMulticanal,1)); end audioMulticanal = audioMulticanal * fac_input; Loading @@ -56,31 +58,25 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) audiowrite(inputFile, audioMulticanal, Fs); numChannels = size(audioMulticanal, 2); switch spk_layout case {'mono_l', 'MONO_L', 'mono_r', 'MONO_C','mono_ls', 'MONO_LS'} expectedChannels = 1; % case {'5.1', '5_1'} expectedChannels = 6; % 7.1 case {'7.1', '7_1'} expectedChannels = 8; % 7.1 case {'5.1.2', '5_1_2'} expectedChannels = 8; % 5.1.2 case {'5.1.4', '5_1_4'} expectedChannels = 10; % 5.1.4 case {'7.1.4', '7_1_4'} expectedChannels = 12; % 7.1.4 otherwise error('audio format not supported.'); end expectedChannels = spk_config.nb_channel; if numChannels ~= expectedChannels error('number of channels of audio file and matfile not consistent.'); end bitrate = 512000; coded_file = [erase(inputFile,'.wav') '.bin']; command = ['..' filesep() '..' filesep() 'IVAS_cod' ' -MC ' spk_layout ' ' ... num2str(bitrate) ' 48 ' inputFile ' ' coded_file]; input_format = ''; if spk_config.sba_order > 0 input_format = ['-SBA ' num2str(spk_config.sba_order)]; else input_format = ['-MC ' spk_layout]; end for ind = 1 : size(bitRates,2) coded_file = [erase(inputFile,'.wav') '.' num2str(bitRates(ind))]; command = ['..' filesep() '..' filesep() 'IVAS_cod ' input_format ' ' ... num2str(bitRates(ind)) ' 48 ' inputFile ' ' coded_file]; [status, cmdout] = system(command); if status ~= 0 Loading @@ -88,10 +84,9 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) return end delete(inputFile); outputFile = [erase(inputFile,'.wav') '_-26LKFS_bin.wav']; command = ['..' filesep() '..' filesep() 'IVAS_dec' ' BINAURAL 48 ' coded_file ' ' outputFile]; command = ['..' filesep() '..' filesep() 'IVAS_dec ' output_format ' 48 ' coded_file ' ' outputFile]; [status, cmdout] = system(command); if status ~= 0 Loading @@ -106,12 +101,18 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) pcm_out = [erase(pcm_in,'.pcm') '_out.pcm']; [lev_out,lev_out_output,fac_output] = bs1770(pcm_in,pcm_out,2, target_lev, '00'); [lev_out_bin,lev_out_output_bin,fac_output_bin] = bs1770(pcm_in,pcm_out,2, target_lev, '00', true); [lev_out(ind),lev_out_output(ind),fac_output(ind)] = bs1770(pcm_in,pcm_out,2, target_lev, '00'); [lev_out_bin(ind),lev_out_output_bin(ind),fac_output_bin(ind)] = bs1770(pcm_in,pcm_out,2, target_lev, '00', true); delete(pcm_in); delete(pcm_out); end delete(inputFile); level_bin = lev_out_bin; level = lev_out; gain = 20*log10(fac_output); gain_bin = 20*log10(fac_output_bin); Loading Loading
scripts/binauralRenderer_interface/check_ivas_binaural_gains.m +78 −18 Original line number Diff line number Diff line Loading @@ -41,7 +41,18 @@ clc; %% Add path to routines needed scripts addpath('./matlab_hrir_generation_scripts/'); % mc_mode 5.1 = MCMASA MCMASA MCMASA MCMASA PARAMMC PARAMMC PARAMMC MCT MCT MCT MCT MCT MCT MCT % renderer = param param param param fastconv fastconv fastconv crend crend crend crend crend crend crend % mc_mode 7.1 = MCMASA MCMASA MCMASA MCMASA PARAMMC PARAMMC PARAMMC MCT MCT MCT MCT MCT MCT MCT % renderer = param param param param fastconv fastconv fastconv fastconv crend crend crend crend crend crend % mc_mode 7.1.4 = MCMASA MCMASA MCMASA MCMASA PARAMMC PARAMMC PARAMMC MCT MCT MCT MCT MCT MCT MCT % renderer = param param param param param param param param fastconv fastconv crend crend crend crend % sba renderer = param param param param param param param fastconv fastconv fastconv fastconv fastconv fastconv fastconv bitrates = [13200, 16400, 24400, 32000, 48000, 64000, 80000, 96000, 128000, 160000, 192000, 256000, 384000, 512000]; bitrates_MC_5_1 = [32000,80000, 256000]; bitrates_MC_7_1_4 = [80000, 160000,256000]; bitrates_MC_TDREND = [128000, 256000]; bitrates_SBA = [80000, 96000]; inFilesPath = { Loading @@ -56,34 +67,83 @@ inFilesPath = { {'5_1','../testv/6_Channel_ID_48khz_pn_duplicated.wav'},... {'5_1','../testv/6_Channel_ID_48khz_pn_different.wav'},... {'5_1','../testv/6_Channel_ID_48khz.wav'},... {'7_1_4','../testv/FL_FR_C_LFE_Lss_Rss_Ls_Rs_Lv_Rv_Lvr_Rvr_714_48k.wav'},... {'5_1', '../testv/6_Channel_ID_48khz_pn.wav'}, ... {'5_1', '../testv/stv51MC48c.wav'}, ... {'7_1_4','../testv/FL_FR_C_LFE_Lss_Rss_Ls_Rs_Lv_Rv_Lvr_Rvr_714_48k.wav'},... {'7_1_4', '../testv/stv714MC48c.wav'}}; level_hrir = zeros(size(inFilesPath,2),size(bitrates,2)); level_hrir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); gain_hrir = zeros(size(inFilesPath,2),size(bitrates,2)); gain_hrir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); level_hoa2bin = zeros(3,size(bitrates_SBA,2)); level_hoa2bin_bin = zeros(3,size(bitrates_SBA,2)); gain_hoa2bin = zeros(3,size(bitrates_SBA,2)); gain_hoa2bin_bin = zeros(3,size(bitrates_SBA,2)); % sba parambin fastconv for ind=1:size(inFilesPath,2) if (contains(inFilesPath{ind}{1}, 'OA')) [level_hoa2bin_bin(ind,:), level_hoa2bin(ind,:), gain_hoa2bin(ind,:), gain_hoa2bin_bin(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_SBA, 'BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels hoa2bin " + inFilesPath{ind}{2} + " : " + num2str(level_hoa2bin(ind,:))); disp("levels hoa2bin with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_hoa2bin_bin(ind,:))); end end % td rend level_tdrend = zeros(10,size(bitrates_MC_TDREND,2)); level_tdrend_bin = zeros(10,size(bitrates_MC_TDREND,2)); gain_tdrend = zeros(10,size(bitrates_MC_TDREND,2)); gain_tdrend_bin = zeros(10,size(bitrates_MC_TDREND,2)); for ind=1:size(inFilesPath,2) if (contains(inFilesPath{ind}{1}, '5_1')) [level_tdrend_bin(ind,:), level_tdrend(ind,:), gain_tdrend_bin(ind,:), gain_tdrend(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_TDREND, '-t ../testv/headRot_no_rot.csv BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels tdrend hrir " + inFilesPath{ind}{2} + " : " + num2str(level_tdrend(ind,:))); disp("levels tdrend hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_tdrend_bin(ind,:))); end end % parambin fastconv crend level_hrir = zeros(12,size(bitrates_MC_5_1,2)); level_hrir_bin = zeros(12,size(bitrates_MC_5_1,2)); gain_hrir = zeros(12,size(bitrates_MC_5_1,2)); gain_hrir_bin = zeros(12,size(bitrates_MC_5_1,2)); for ind=1:size(inFilesPath,2) [inFilesPath{ind}{3}{1},inFilesPath{ind}{3}{2},inFilesPath{ind}{3}{3},inFilesPath{ind}{3}{4}]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates, 'BINAURAL'); if (contains(inFilesPath{ind}{1}, '7_1_4')) [level_hrir_bin(ind,:), level_hrir(ind,:), gain_hrir_bin(ind,:), gain_hrir(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_7_1_4, 'BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(level_hrir(ind,:))); disp("levels hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_hrir_bin(ind,:))); end if (contains(inFilesPath{ind}{1}, '5_1')) [level_hrir_bin(ind,:), level_hrir(ind,:), gain_hrir_bin(ind,:), gain_hrir(ind,:)]= levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_5_1, 'BINAURAL'); % disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1}) + " " + num2str(inFilesPath{ind}{3}{2})+ " " + num2str(inFilesPath{ind}{3}{3})+ " " + num2str(inFilesPath{ind}{3}{4})); disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{2})); disp("levels hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{3}{1})); disp("levels hrir " + inFilesPath{ind}{2} + " : " + num2str(level_hrir(ind,:))); disp("levels hrir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_hrir_bin(ind,:))); end end level_brir = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); level_brir_bin = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); gain_brir = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); gain_brir_bin = zeros(size(inFilesPath,2),size(bitrates_MC_5_1,2)); level_brir = zeros(size(inFilesPath,2),size(bitrates,2)); level_brir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); gain_brir = zeros(size(inFilesPath,2),size(bitrates,2)); gain_brir_bin = zeros(size(inFilesPath,2),size(bitrates,2)); for ind=1:size(inFilesPath,2) [inFilesPath{ind}{4}{1},inFilesPath{ind}{4}{2},inFilesPath{ind}{4}{3},inFilesPath{ind}{4}{4}] = levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates, 'BINAURAL_ROOM_IR'); if (contains(inFilesPath{ind}{1}, '7_1_4')) [level_brir_bin(ind,:), level_brir(ind,:), gain_brir_bin(ind,:), gain_brir(ind,:)] = levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_7_1_4, 'BINAURAL_ROOM_IR'); % disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{1}) + " " + num2str(inFilesPath{ind}{4}{2})+ " " + num2str(inFilesPath{ind}{4}{3})+ " " + num2str(inFilesPath{ind}{4}{4})); disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{2})); disp("levels brir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{1})); disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(level_brir(ind,:))); disp("levels brir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_brir_bin(ind,:))); end if (contains(inFilesPath{ind}{1}, '5_1')) [level_brir_bin(ind,:), level_brir(ind,:), gain_brir_bin(ind,:), gain_brir(ind,:)] = levelsBinauralizeAudioWithIvas(inFilesPath{ind}{2}, inFilesPath{ind}{1},bitrates_MC_5_1, 'BINAURAL_ROOM_IR'); % disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(inFilesPath{ind}{4}{1}) + " " + num2str(inFilesPath{ind}{4}{2})+ " " + num2str(inFilesPath{ind}{4}{3})+ " " + num2str(inFilesPath{ind}{4}{4})); disp("levels brir " + inFilesPath{ind}{2} + " : " + num2str(level_brir(ind,:))); disp("levels brir with bin corr " + inFilesPath{ind}{2} + " : " + num2str(level_brir_bin(ind,:))); end end
scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/binauralizeAudio.m→scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/levelsBinauralizeAudio.m +3 −1 Original line number Diff line number Diff line function [binauralSignal, gain_bin, gain] = binauralizeAudio(audioFile, matFile ) function [level_bin, level, gain_bin, gain] = levelsBinauralizeAudio(audioFile, matFile ) debug = 0; Loading Loading @@ -163,6 +163,8 @@ function [binauralSignal, gain_bin, gain] = binauralizeAudio(audioFile, matFile delete(pcm_in); delete(pcm_out); level_bin = lev_out_bin; level = lev_out; gain = 20*log10(fac_output); gain_bin = 20*log10(fac_output_bin); Loading
scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/binauralizeAudioWithIvas.m→scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/levelsBinauralizeAudioWithIvas.m +119 −0 Original line number Diff line number Diff line function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) function [level_bin, level, gain_bin, gain] = levelsBinauralizeAudioWithIvas(audioFile,spk_layout, bitRates, output_format ) BINAURAL_LFE_GAIN = 10 ^ (5.5 / 20); BINAURAL_LFE_GAIN = 0; Loading Loading @@ -48,7 +48,9 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) [audioMulticanal, Fs] = audioread(audioFile); % put lfe to zero if spk_config.lfe_index >= 0 audioMulticanal(:,spk_config.lfe_index) = zeros(1,size(audioMulticanal,1)); end audioMulticanal = audioMulticanal * fac_input; Loading @@ -56,31 +58,25 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) audiowrite(inputFile, audioMulticanal, Fs); numChannels = size(audioMulticanal, 2); switch spk_layout case {'mono_l', 'MONO_L', 'mono_r', 'MONO_C','mono_ls', 'MONO_LS'} expectedChannels = 1; % case {'5.1', '5_1'} expectedChannels = 6; % 7.1 case {'7.1', '7_1'} expectedChannels = 8; % 7.1 case {'5.1.2', '5_1_2'} expectedChannels = 8; % 5.1.2 case {'5.1.4', '5_1_4'} expectedChannels = 10; % 5.1.4 case {'7.1.4', '7_1_4'} expectedChannels = 12; % 7.1.4 otherwise error('audio format not supported.'); end expectedChannels = spk_config.nb_channel; if numChannels ~= expectedChannels error('number of channels of audio file and matfile not consistent.'); end bitrate = 512000; coded_file = [erase(inputFile,'.wav') '.bin']; command = ['..' filesep() '..' filesep() 'IVAS_cod' ' -MC ' spk_layout ' ' ... num2str(bitrate) ' 48 ' inputFile ' ' coded_file]; input_format = ''; if spk_config.sba_order > 0 input_format = ['-SBA ' num2str(spk_config.sba_order)]; else input_format = ['-MC ' spk_layout]; end for ind = 1 : size(bitRates,2) coded_file = [erase(inputFile,'.wav') '.' num2str(bitRates(ind))]; command = ['..' filesep() '..' filesep() 'IVAS_cod ' input_format ' ' ... num2str(bitRates(ind)) ' 48 ' inputFile ' ' coded_file]; [status, cmdout] = system(command); if status ~= 0 Loading @@ -88,10 +84,9 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) return end delete(inputFile); outputFile = [erase(inputFile,'.wav') '_-26LKFS_bin.wav']; command = ['..' filesep() '..' filesep() 'IVAS_dec' ' BINAURAL 48 ' coded_file ' ' outputFile]; command = ['..' filesep() '..' filesep() 'IVAS_dec ' output_format ' 48 ' coded_file ' ' outputFile]; [status, cmdout] = system(command); if status ~= 0 Loading @@ -106,12 +101,18 @@ function [gain_bin, gain] = binauralizeAudio(audioFile,spk_layout ) pcm_out = [erase(pcm_in,'.pcm') '_out.pcm']; [lev_out,lev_out_output,fac_output] = bs1770(pcm_in,pcm_out,2, target_lev, '00'); [lev_out_bin,lev_out_output_bin,fac_output_bin] = bs1770(pcm_in,pcm_out,2, target_lev, '00', true); [lev_out(ind),lev_out_output(ind),fac_output(ind)] = bs1770(pcm_in,pcm_out,2, target_lev, '00'); [lev_out_bin(ind),lev_out_output_bin(ind),fac_output_bin(ind)] = bs1770(pcm_in,pcm_out,2, target_lev, '00', true); delete(pcm_in); delete(pcm_out); end delete(inputFile); level_bin = lev_out_bin; level = lev_out; gain = 20*log10(fac_output); gain_bin = 20*log10(fac_output_bin); Loading