0001 function [Fmts,LPCcoeff,idxValid,F] = synth2(vtm,varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 global RELEASE
0015
0016
0017
0018
0019
0020
0021
0022 X = varargin{1};
0023
0024 if (nargin>2),
0025 data.fs = varargin{2};
0026 else,
0027 data.fs = 10000;
0028 end;
0029
0030 if nargin>3,
0031 data.duration = varargin{3};
0032 else,
0033 data.duration = 300;
0034 end;
0035 tf = data.duration;
0036
0037 if nargin >4,
0038 data.Ag0 = varargin{4};
0039 data.AgP = varargin{5};
0040 data.F0 = varargin{6};
0041 else,
0042 data.Ag0 = [0. 0.0 0;tf 0.0 1];
0043 data.AgP = [0. 0.1 0;tf 0.2 1];
0044 data.F0 = [0. 100. 0;tf 100. 1];
0045 end
0046
0047
0048 diva_data;
0049
0050
0051 preemp = -0.95;
0052
0053
0054 for i=1:size(X,2),
0055 [F,B,A,Af] = doAM(X(:,i));
0056 if length(F)<3,
0057 F(length(F)+1:3) = NaN;
0058 F = F(:);
0059 end;
0060
0061 data.Af = [];data.dx = [];
0062 data.Af(:,1) = Af(1,:)';
0063 data.Af(:,2) = Af(1,:)';
0064 data.dx = mean(Af(2,:));
0065
0066
0067 out = diva_synth2(data);
0068
0069
0070 y = filter([1 preemp],1,out);
0071
0072 [A,G]=lpc(hamming(length(y)).*y(:),14);
0073 A = real(A);
0074
0075
0076 if length(find(isnan(A)))==0,
0077 F1 = frmnts1(A(:),data.fs);
0078 else,
0079 F1 = zeros(3,1);
0080 end;
0081
0082 F1 = F1(1:3);
0083 F1 = F1(:);
0084 Fmts(:,i) = F1;
0085 LPCcoeff(:,i) = A(:);
0086
0087
0088 idxValid(i) = 0;
0089 if ( ...
0090 sum(abs(F1-F(1:3))<[25;50;100])==3 & ...
0091 (F(1)>minF1) & (F(1)<maxF1) & ...
0092 (F(2)>minF2) & (F(2)<maxF2) & ...
0093 (F(3)>minF3) & (F(3)<maxF3)),
0094 idxValid(i) = 1;
0095 end;
0096 end