|
- % Talkie library
- % Copyright 2011 Peter Knight
- % This code is released under GPLv2 license.
- %
- % Synthesise model parameters
-
- function samples=lpcSynth(pitch,energy,coefficients,length,poles,sampleRate)
- samples = zeros(1,length);
- u = zeros(1,poles+1);
- x = zeros(1,poles+1);
-
- % Generate excitation
- if pitch>0
- % Voiced
- excite = zeros(1,length);
- for a=1:(sampleRate/pitch):length
- excite(floor(a)) = 1;
- end
- %excite = mod((1:length)*pitch/sampleRate,1)-0.5;
- else
- % Unvoiced
- excite = rand(1,length)-0.5;
- end
- excite = excite * energy;
-
- % Run through filter
- for s=1:length
- u(poles+1) = excite(s);
- for t=poles:-1:1
- u(t) = u(t+1) - coefficients(t+1)*x(t);
- end
- for v=poles-1:-1:1
- x(v+1) = x(v) + coefficients(v+1)*u(v);
- end
- if x(1) > 1
- x(1) = 1;
- end
- if x(1) < -1
- x(1) = -1;
- end
- x(1) = u(1);
- samples(s) = u(1);
- end
- samples = samples';
|