mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-14 13:28:31 +00:00
git status -u, learn something new every day.
This commit is contained in:
1 parent
59205c7678
commit
68913681a4
106 files changed
+10920
No files matched your search
@@ -0,0 +1,101 @@
|
||||
% sd.m
|
||||
% David Rowe Aug 2012
|
||||
% Plots the spectal distorion between twofiles of LPCs. Used for LSP
|
||||
% quantisation tuning.
|
||||
|
||||
function sd(raw_filename, dump_file_prefix, f)
|
||||
|
||||
ak1_filename = sprintf("%s_ak.txt", dump_file_prefix);
|
||||
ak2_filename = sprintf("%s_ak_.txt", dump_file_prefix);
|
||||
ak1 = load(ak1_filename);
|
||||
ak2 = load(ak2_filename);
|
||||
|
||||
[ak1_r, ak1_c] = size(ak1);
|
||||
[ak2_r, ak2_c] = size(ak1);
|
||||
|
||||
frames = max([ak1_r ak2_r]);
|
||||
sd = zeros(1,frames);
|
||||
Ndft = 512;
|
||||
A1 = zeros(frames, Ndft);
|
||||
A2 = zeros(frames, Ndft);
|
||||
|
||||
% initial helicopter view of all frames
|
||||
|
||||
for i = 1:frames
|
||||
A1(i,:) = -20*log10(abs(fft(ak1(i,:),Ndft)));
|
||||
A2(i,:) = -20*log10(abs(fft(ak2(i,:),Ndft)));
|
||||
sd(i) = sum((A1(i,:) - A2(i,:)).^2)/Ndft;
|
||||
end
|
||||
printf("sd av %3.2f dB*dB\n", sum(sd)/frames);
|
||||
|
||||
figure(1);
|
||||
clf;
|
||||
subplot(211)
|
||||
fs=fopen(raw_filename,"rb");
|
||||
s = fread(fs,Inf,"short");
|
||||
plot(s);
|
||||
subplot(212)
|
||||
plot(sd);
|
||||
|
||||
% now enter single step mode so we can analyse each frame
|
||||
|
||||
sn_name = strcat(dump_file_prefix,"_sn.txt");
|
||||
Sn = load(sn_name);
|
||||
|
||||
lsp1_filename = sprintf("%s_lsp.txt", dump_file_prefix);
|
||||
lsp2_filename = sprintf("%s_lsp_.txt", dump_file_prefix);
|
||||
lsp1 = load(lsp1_filename);
|
||||
lsp2 = load(lsp2_filename);
|
||||
|
||||
weights_filename = sprintf("%s_weights.txt", dump_file_prefix);
|
||||
if file_in_path(".",weights_filename)
|
||||
weights = load(weights_filename);
|
||||
end
|
||||
|
||||
k = ' ';
|
||||
do
|
||||
figure(2);
|
||||
clf;
|
||||
subplot(211)
|
||||
s = [ Sn(2*f-1,:) Sn(2*f,:) ];
|
||||
size(s);
|
||||
plot(s);
|
||||
axis([1 length(s) -20000 20000]);
|
||||
|
||||
subplot(212);
|
||||
plot((1:Ndft/2)*4000/(Ndft/2), A1(f,1:(Ndft/2)),";A1;r");
|
||||
axis([1 4000 -20 40]);
|
||||
hold on;
|
||||
plot((1:Ndft/2)*4000/(Ndft/2), A2(f,1:(Ndft/2)),";A2;");
|
||||
if file_in_path(".",weights_filename)
|
||||
plot(lsp1(f,:)*4000/pi, weights(f,:),";weights;g+");
|
||||
end
|
||||
|
||||
for l=1:10
|
||||
plot([lsp1(f,l)*4000/pi lsp1(f,l)*4000/pi], [0 -10], 'r');
|
||||
plot([lsp2(f,l)*4000/pi lsp2(f,l)*4000/pi], [-10 -20], 'b');
|
||||
endfor
|
||||
plot(0,0,';lsp1;r');
|
||||
plot(0,0,';lsp2;b');
|
||||
sd_str = sprintf(";sd %3.2f dB*dB;", sd(f));
|
||||
plot(0,0,sd_str);
|
||||
|
||||
hold off;
|
||||
|
||||
% interactive menu
|
||||
|
||||
printf("\rframe: %d menu: n-next b-back q-quit", f);
|
||||
fflush(stdout);
|
||||
k = kbhit();
|
||||
if (k == 'n')
|
||||
f = f + 1;
|
||||
endif
|
||||
if (k == 'b')
|
||||
f = f - 1;
|
||||
endif
|
||||
|
||||
until (k == 'q')
|
||||
printf("\n");
|
||||
|
||||
endfunction
|
||||
|
||||
Reference in new issue
Block a user