Mercurial > hg > aimc
comparison 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 |
comparison
equal
deleted
inserted
replaced
697:c64fdcc4f250 | 698:cdb7fb83a03b |
---|---|
19 function CARFAC_GenerateTestData() | 19 function CARFAC_GenerateTestData() |
20 % function GenerateTestData() | 20 % function GenerateTestData() |
21 % This function generates a set of text files in the AIMC repository that | 21 % This function generates a set of text files in the AIMC repository that |
22 % can be used to compare the output of the C++ version of CARFAC with that | 22 % can be used to compare the output of the C++ version of CARFAC with that |
23 % of the Matlab version. | 23 % of the Matlab version. |
24 % | |
25 % Naming convention for files containing audio samples for file test_name.wav: | |
26 % test_name-audio.txt | |
27 % Each line contains a space-separated list of samples from each channel. | |
28 % | |
29 % Naming convention for files containing CARFAC/SAI outputs: | |
30 % test_name-{matlab,cpp}-signal_name(optional_channel_number).txt | |
31 % Each line contains a space-separated list of elements from a single row. | |
24 | 32 |
25 % This designates a subdirectory of the C++ CARFAC folder to store the | 33 % This designates a subdirectory of the C++ CARFAC folder to store the |
26 % test data | 34 % test data. |
27 data_dir = '../../../carfac/test_data/'; | 35 test_data_dir = '../../../carfac/test_data/'; |
28 precision_level = 9; | |
29 | 36 |
37 test_name = 'binaural_test'; | |
38 samples_to_read = [9000, 9903]; % Trim for a faster test. | |
39 signal = wavread([test_data_dir test_name '.wav'], samples_to_read); | |
40 assert(size(signal, 2) == 1, 'Expected mono signal.'); | |
41 % Construct a binaural signal by delaying the signal between the ears. | |
42 itd_offset = 22; % about 1 ms | |
43 signal = [signal((itd_offset+1):end), signal(1:(end-itd_offset))] / 10; | |
44 n_ears = size(signal, 2); | |
45 CF_struct = CARFAC_Design(n_ears); | |
46 WriteTestData(test_data_dir, 'binaural_test', signal, CF_struct); | |
47 | |
48 | |
49 test_name = 'long_test'; | |
50 samples_to_read = [80001, 82000]; % Trim for a faster test. | |
51 [signal, fs] = wavread([test_data_dir test_name '.wav'], samples_to_read); | |
52 assert(size(signal, 2) == 2, 'Expected stereo signal.'); | |
53 n_ears = size(signal, 2); | |
54 CF_struct = CARFAC_Design(n_ears, fs); | |
55 WriteTestData(test_data_dir, 'long_test', signal, CF_struct); | |
56 | |
57 | |
58 function WriteTestData(test_data_dir, test_name, signal, CF_struct) | |
30 % The following section generates data for the binaural test of the C++ | 59 % The following section generates data for the binaural test of the C++ |
31 % version of CARFAC. | 60 % version of CARFAC. |
32 n_ears = 2; | 61 filename_prefix = [test_data_dir test_name]; |
62 | |
63 WriteMatrixToFile([filename_prefix '-audio.txt'], signal); | |
64 | |
65 CF_struct = CARFAC_Init(CF_struct); | |
66 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, signal); | |
33 | 67 |
34 file_signal = wavread('plan.wav'); | 68 % Store the data for each ear of each output signal in a separate file. |
35 file_signal = file_signal(9000:9903); % trim for a faster test | 69 for ear = 1:CF_struct.n_ears |
36 | 70 WriteMatrixToFile([filename_prefix '-matlab-nap' num2str(ear) '.txt'], ... |
37 itd_offset = 22; % about 1 ms | 71 nap(:,:,ear)); |
38 test_signal = [file_signal((itd_offset+1):end), ... | 72 WriteMatrixToFile([filename_prefix '-matlab-bm' num2str(ear) '.txt'], ... |
39 file_signal(1:(end-itd_offset))] / 10; | 73 bm(:,:,ear)); |
40 | 74 end |
41 filename = 'file_signal_binaural_test.txt' | |
42 data = test_signal; | |
43 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
44 | |
45 CF_struct = CARFAC_Design(n_ears); | |
46 CF_struct = CARFAC_Init(CF_struct); | |
47 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal); | |
48 | |
49 %Store the data for each each as individual 2d text data. | |
50 nap1 = nap(:,:,1); | |
51 nap2 = nap(:,:,2); | |
52 bm1 = bm(:,:,1); | |
53 bm2 = bm(:,:,2); | |
54 | |
55 filename = 'binaural_test_nap1.txt' | |
56 data = nap1; | |
57 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
58 | |
59 filename = 'binaural_test_bm1.txt' | |
60 data = bm1; | |
61 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
62 | |
63 filename = 'binaural_test_nap2.txt' | |
64 data = nap2; | |
65 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
66 | |
67 filename = 'binaural_test_bm2.txt' | |
68 data = bm2; | |
69 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
70 | 75 |
71 | 76 |
72 % Longer audio segment test | 77 function WriteMatrixToFile(filename, matrix) |
73 | 78 precision_level = 9; |
74 n_ears = 2; | 79 dlmwrite(filename, matrix, 'precision', precision_level, 'delimiter', ' '); |
75 start = 80001; | |
76 n_timepoints = 2000; | |
77 | |
78 [test_signal, fs] = wavread([data_dir 'Anka_SLTS.wav']); | |
79 test_signal = test_signal(start:start+n_timepoints-1,:); | |
80 size(test_signal) | |
81 | |
82 filename = 'file_signal_long_test.txt' | |
83 data = test_signal; | |
84 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
85 | |
86 CF_struct = CARFAC_Design(n_ears, fs); | |
87 CF_struct = CARFAC_Init(CF_struct); | |
88 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal); | |
89 | |
90 %Store the data for each each as individual 2d text data. | |
91 nap1 = nap(:,:,1); | |
92 nap2 = nap(:,:,2); | |
93 bm1 = bm(:,:,1); | |
94 bm2 = bm(:,:,2); | |
95 | |
96 filename = 'long_test_nap1.txt' | |
97 data = nap1; | |
98 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
99 | |
100 filename = 'long_test_bm1.txt' | |
101 data = bm1; | |
102 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
103 | |
104 filename = 'long_test_nap2.txt' | |
105 data = nap2; | |
106 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); | |
107 | |
108 filename = 'long_test_bm2.txt' | |
109 data = bm2; | |
110 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); |