---------------
[ ] Important Open Issues
- [ ] Why zero phase model doesn't work for mmt1
- [ ] residual noise on zero phase model
+ [X] Why zero phase model doesn't work for mmt1
+ + error in LPC window and accidental random phase component and
+ effect of background noise on interformant harmonics
+ [X] residual noise on zero phase model
+ "navy" on hts1a, "frog" on morig
+ perhaps due to mis-alignment of phases at frame boundaries?
+ or possibly pitch errors
+ need a way to research this
- [ ] Pitch errors on mmt1, morig
+ [X] Pitch errors on mmt1, morig
+ we may need a tracker
+ suggest manually step through each file, check for
pitch errors, design tracker and check again
+ or develop manual pitch tracks and check estimator
with tracker against these.
- [ ] removal of LPC modelling errors for males
+ [X] removal of LPC modelling errors for males
+ first few haromic energies (e.g. mmt1, hts1a) get raised
[ ] good quality LSP quantisation of {Am}
[ ] conversion to 20ms frames
[ ] Go through papers referenced in thesis and credit various
techniques to papers.
- + sure there was somthing about zero phase synthesis is those papers
+ + sure there was something about zero phase synthesis is those papers
[ ] voicing errors can be clearly seen in synthesised speech using pl2.m
snr = load(snr_name);
endif
+ k = ' ';
do
figure(1);
clg;
hold off;
+ if (k == 'p')
+ pngname = sprintf("%s_%d_sn_",samname,f)
+ png(pngname);
+ endif
+
if (file_in_path(".",phase_name))
figure(3);
plot((1:L)*Wo*4000/pi, phase(f,1:L), ";phase;");
sn_ = fread(fs_,Inf,"short");
endif
+ k = ' ';
do
figure(1);
clg;
plot(s);
grid;
axis([1 length(s) -20000 20000]);
+ if (k == 'p')
+ pngname = sprintf("%s_%d_sn",samname,f);
+ png(pngname);
+ endif
figure(2);
Wo = model(f,1);
endif
hold off;
+ if (k == 'p')
+ pngname = sprintf("%s_%d_sw",samname,f);
+ png(pngname);
+ endif
if (file_in_path(".",phase_name))
figure(3);
grid
hold off;
endif
+ if (k == 'p')
+ pngname = sprintf("%s_%d_phase",samname,f);
+ png(pngname);
+ endif
endif
% synthesised speech
s_ = sn_((f-3)*80+1:(f+1)*80);
plot(s_);
axis([1 length(s_) -20000 20000]);
+ if (k == 'p')
+ pngname = sprintf("%s_%d_sn_",samname,f)
+ png(pngname);
+ endif
endif
if (file_in_path(".",ak_name))
subplot(212);
plot(angle(H(1:4000))*180/pi,";LPC phase spec;");
grid;
+ if (k == 'p')
+ % stops multimode errors from gnuplot, I know not why...
+ figure(2);
+ figure(5);
+
+ pngname = sprintf("%s_%d_lpc",samname,f);
+ png(pngname);
+ endif
endif
- hold off;
% autocorrelation function to research voicing est
% optional print to PNG
if (k == 'p')
-
- pngname = sprintf("%s_%d",samname,f);
-
- % small image
-
- __gnuplot_set__ terminal png size 420,300
- ss = sprintf("__gnuplot_set__ output \"%s.png\"", pngname);
- eval(ss)
- replot;
-
- % larger image
-
- __gnuplot_set__ terminal png size 800,600
- ss = sprintf("__gnuplot_set__ output \"%s_large.png\"", pngname);
- eval(ss)
- replot;
-
- % for some reason I need this to stop large plot getting wiped
- __gnuplot_set__ output "/dev/null"
-
+ pngname = sprintf("%s_%d",samname,f);
+ png(pngname);
endif
until (k == 'q')
--- /dev/null
+% Copyright David Rowe 2009
+% This program is distributed under the terms of the GNU General Public License
+% Version 2
+%
+% Replot current plot as a png, generates small and large versions
+
+function png(pngname)
+ % small image
+
+ __gnuplot_set__ terminal png size 420,300
+ ss = sprintf("__gnuplot_set__ output \"%s.png\"", pngname);
+ eval(ss)
+ replot;
+
+ % larger image
+
+ __gnuplot_set__ terminal png size 800,600
+ ss = sprintf("__gnuplot_set__ output \"%s_large.png\"", pngname);
+ eval(ss)
+ replot;
+
+ % for some reason I need this to stop large plot getting wiped
+ __gnuplot_set__ output "/dev/null"
+
+endfunction
--- /dev/null
+% Copyright David Rowe 2009
+% This program is distributed under the terms of the GNU General Public License
+% Version 2
+%
+% Plot postfilter doing its thing
+
+function postfilter(samname)
+ p = load(samname);
+ figure(1);
+ plot(p(:,1),";energy;");
+ hold on;
+ plot(p(:,2),";bg_est;");
+ hold off;
+ grid;
+ pngname=sprintf("%s_postfilter_1", samname);
+ png(pngname);
+
+ figure(2);
+ plot(p(:,3),";% unvoiced;");
+ grid;
+ pngname=sprintf("%s_postfilter_2", samname);
+ png(pngname);
+endfunction
+