ReSpeaker DSP V02

Dependencies:   mbed MbedJSONValue

Matlab_Script/wav2sounddata.txt

Committer:
Arkadi
Date:
2019-06-20
Revision:
14:8a4699aa69b5
Parent:
1:574b54755983

File content as of revision 14:8a4699aa69b5:

%Script for preparation of predefined signal code from wav file
% Generates file sounddata.h which should be uploaded into mbed environment
% and compiled together with C++ file

% this line should be corrected depended on location of WAV file
mainfilename ='C:\Users\Igor\OneDrive\dev\Bats\tests\kuhlii_like_chirp.wav';
% this line should be corrected depended on desired location of sounddata.h file
sounddatafilename = 'C:\Users\Igor\OneDrive\dev\Bats\tests\sounddata.h'

[ybat,Fs] = audioread(mainfilename,'double');
len = length(ybat);

fprintf('Amount of samples: %d; Sampling frequency %d\n',len, Fs)
num_of_leading_zeros=0;
num_of_trailing_zeros = 0;
count_leading_zeros = true;
count_trailing_zeros = true;
for i = 1:len
    if (ybat(i) == 0.0 && count_leading_zeros)
        num_of_leading_zeros = num_of_leading_zeros + 1;
    else
        count_leading_zeros = false;
    end
    if (ybat(len-i+1) == 0.0 && count_trailing_zeros)
        num_of_trailing_zeros = num_of_trailing_zeros + 1;
    else
        count_trailing_zeros = false;
    end
end

fprintf('Amount of leading zeros: %d\n',num_of_leading_zeros);
fprintf('Amount of trailing zeros: %d\n',num_of_trailing_zeros);
fprintf('Amount of significant signal samples: %d\n',len - num_of_trailing_zeros - num_of_leading_zeros);

fileID = fopen(sounddatafilename,'w');
fprintf(fileID, '#define SAMPLING_FREQUENCY %d\n', Fs);
fprintf(fileID, '#define AMOUNT_OF_LEADING_ZEROS %d\n', num_of_leading_zeros);
fprintf(fileID, '#define AMOUNT_OF_TRAILING_ZEROS %d\n', num_of_trailing_zeros);
fprintf(fileID, '#define AMOUNT_OF_SIGNIFICANT_SAMPLES %d\n', len - num_of_leading_zeros - num_of_trailing_zeros + 1);
fprintf(fileID, 'float sounddata[AMOUNT_OF_SIGNIFICANT_SAMPLES] = {\n');

for i = num_of_leading_zeros+1 : len - num_of_trailing_zeros
    fprintf(fileID,'%f,', ybat(i));
    if (mod(i,12) == 0) 
        fprintf(fileID,'\n');
    end
end
fprintf(fileID, '0.0};\n');
fclose(fileID);