Mercurial > hg > aimc
diff trunk/matlab/bmm/carfac/CARFAC_GenerateTestData.m @ 698:cdb7fb83a03b
Unify naming scheme for test data and clean up code that generates it.
author | ronw@google.com |
---|---|
date | Thu, 27 Jun 2013 20:48:27 +0000 |
parents | 7f424c1a8b78 |
children | 597913e855fd |
line wrap: on
line diff
--- a/trunk/matlab/bmm/carfac/CARFAC_GenerateTestData.m Thu Jun 27 20:47:02 2013 +0000 +++ b/trunk/matlab/bmm/carfac/CARFAC_GenerateTestData.m Thu Jun 27 20:48:27 2013 +0000 @@ -21,90 +21,59 @@ % This function generates a set of text files in the AIMC repository that % can be used to compare the output of the C++ version of CARFAC with that % of the Matlab version. +% +% Naming convention for files containing audio samples for file test_name.wav: +% test_name-audio.txt +% Each line contains a space-separated list of samples from each channel. +% +% Naming convention for files containing CARFAC/SAI outputs: +% test_name-{matlab,cpp}-signal_name(optional_channel_number).txt +% Each line contains a space-separated list of elements from a single row. % This designates a subdirectory of the C++ CARFAC folder to store the -% test data -data_dir = '../../../carfac/test_data/'; -precision_level = 9; +% test data. +test_data_dir = '../../../carfac/test_data/'; +test_name = 'binaural_test'; +samples_to_read = [9000, 9903]; % Trim for a faster test. +signal = wavread([test_data_dir test_name '.wav'], samples_to_read); +assert(size(signal, 2) == 1, 'Expected mono signal.'); +% Construct a binaural signal by delaying the signal between the ears. +itd_offset = 22; % about 1 ms +signal = [signal((itd_offset+1):end), signal(1:(end-itd_offset))] / 10; +n_ears = size(signal, 2); +CF_struct = CARFAC_Design(n_ears); +WriteTestData(test_data_dir, 'binaural_test', signal, CF_struct); + + +test_name = 'long_test'; +samples_to_read = [80001, 82000]; % Trim for a faster test. +[signal, fs] = wavread([test_data_dir test_name '.wav'], samples_to_read); +assert(size(signal, 2) == 2, 'Expected stereo signal.'); +n_ears = size(signal, 2); +CF_struct = CARFAC_Design(n_ears, fs); +WriteTestData(test_data_dir, 'long_test', signal, CF_struct); + + +function WriteTestData(test_data_dir, test_name, signal, CF_struct) % The following section generates data for the binaural test of the C++ % version of CARFAC. -n_ears = 2; +filename_prefix = [test_data_dir test_name]; + +WriteMatrixToFile([filename_prefix '-audio.txt'], signal); + +CF_struct = CARFAC_Init(CF_struct); +[CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, signal); -file_signal = wavread('plan.wav'); -file_signal = file_signal(9000:9903); % trim for a faster test - -itd_offset = 22; % about 1 ms -test_signal = [file_signal((itd_offset+1):end), ... - file_signal(1:(end-itd_offset))] / 10; - -filename = 'file_signal_binaural_test.txt' -data = test_signal; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -CF_struct = CARFAC_Design(n_ears); -CF_struct = CARFAC_Init(CF_struct); -[CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal); - -%Store the data for each each as individual 2d text data. -nap1 = nap(:,:,1); -nap2 = nap(:,:,2); -bm1 = bm(:,:,1); -bm2 = bm(:,:,2); - -filename = 'binaural_test_nap1.txt' -data = nap1; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -filename = 'binaural_test_bm1.txt' -data = bm1; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -filename = 'binaural_test_nap2.txt' -data = nap2; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -filename = 'binaural_test_bm2.txt' -data = bm2; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); +% Store the data for each ear of each output signal in a separate file. +for ear = 1:CF_struct.n_ears + WriteMatrixToFile([filename_prefix '-matlab-nap' num2str(ear) '.txt'], ... + nap(:,:,ear)); + WriteMatrixToFile([filename_prefix '-matlab-bm' num2str(ear) '.txt'], ... + bm(:,:,ear)); +end -% Longer audio segment test - -n_ears = 2; -start = 80001; -n_timepoints = 2000; - -[test_signal, fs] = wavread([data_dir 'Anka_SLTS.wav']); -test_signal = test_signal(start:start+n_timepoints-1,:); -size(test_signal) - -filename = 'file_signal_long_test.txt' -data = test_signal; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -CF_struct = CARFAC_Design(n_ears, fs); -CF_struct = CARFAC_Init(CF_struct); -[CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal); - -%Store the data for each each as individual 2d text data. -nap1 = nap(:,:,1); -nap2 = nap(:,:,2); -bm1 = bm(:,:,1); -bm2 = bm(:,:,2); - -filename = 'long_test_nap1.txt' -data = nap1; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -filename = 'long_test_bm1.txt' -data = bm1; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -filename = 'long_test_nap2.txt' -data = nap2; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); - -filename = 'long_test_bm2.txt' -data = bm2; -dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); +function WriteMatrixToFile(filename, matrix) +precision_level = 9; +dlmwrite(filename, matrix, 'precision', precision_level, 'delimiter', ' ');