clc
clear
close all

t_end = 3;
Fs = 42000;
nBits = 16;
Nchannel = 1;


recObj = audiorecorder(Fs, nBits, Nchannel);
recObj.StartFcn = 'disp('' Start speaking '')';
%recOnj.StopFcn = 'disp('' End of Recording '')';


input('Press to record voice');
recordblocking(recObj, t_end);
disp('End of recording. Playing back ...');
y = getaudiodata(recObj);
%[y,Fs] = audioread('Apagar1.mp3');
fileID =  fopen('Primero.txt','w');
fprintf(fileID, '%d\n', y);
fclose(fileID);
play(recObj)
plot(y)

load Primero.txt
input('Press to Continue')

jj = 0;
S = zeros(1,Fs); %Señal de Voz de entrada
for i = 1:1:Fs*t_end
%     S(i) = Prueba(:,i)*10000000;
    S(i) = Primero(i,:)*10000;
end
plot(S)
input('Press to Continue')

N = length(S);

[E,Eav,Ssr,nseg] = Eliminacion(S,N); %Función de la etapa de Eliminación del nivel de ruido
Ns = length(Ssr);


%regla de 3 con el tiempo de grabación
Fs = 50e3; %Frecuencia de muestreo a utilizar, para este caso la voz.
To = N/Fs; %Tiempo de grabación-> Señal de Entrada
Tg = Ns*To/N; %Tiempo de grabación-> Señal recortada
nm = 30e-3*Fs; % Númer

[Spp] = Pre_enfasis(Ssr,Ns);

x = fix(Ns/nm);
y = 15;
a = zeros(2*x,y);
aj = zeros(1,y);
aj1 = zeros(1,y);

%aj1=0;
for j=1:x
    
 [Sw,Swc,Seg] = Segmentacion(j,Spp,nm);
 [rxx0, rxx1, Swn, Swcn, auto] = Autocorrelacion(nm, Sw, Swc);
 m = length(rxx0);
 b = (2*j)-1;
 v = (2*j);
 rxx0b = rxx0(m:-1:1);
 a(b,1) = fix(rxx0(2)/(rxx0(1)/8));
 Ki = fix(rxx0(2)/(rxx0(1)/8));
 f1=4096;
 rxx1b = rxx1(m:-1:1);
 a(v,1) = fix(rxx1(2)/(rxx1(1)/8));
 Ki1 = fix(rxx1(2)/(rxx1(1)/8));
 for i = 2:m-1
     Ni = rxx0(i+1)-(rxx0b(i))'*Ki;
     Di = rxx0(1)-(rxx0(i))'*Ki;
     Ki = ceil(Ni/floor(Di/f1));
     
     Ni1 = rxx1(i+1)-(rxx1b(i))'*Ki1;
     Di1 = rxx1(1)-(rxx1(i))'*Ki1;
     Ki1 = ceil(Ni1/floor(Di1/f1));
     for h = 1:i-1
         aaj = floor((Ki*a(b,i-h))/f1);
         aj(h) = (a(b,h))-aaj;
         aj(i) = Ki;
         aaj1 = floor((Ki1*a(v,i-h))/f1);
         aj1(h) = (a(v,h))-aaj1;
         aj1(i) = Ki1;
     end
     a(b,:) = aj;
     a(v,:) = aj1;
 end 
end

l=0;

lpc=zeros(1,2*x*y);
for i = 1:1:2*x
    for k = 1:1:y
        l=l+1;
        lpc(l) = a(i,k);
    end
end
        

scrsz = get(0,'ScreenSize');
figure('Name','Señal de Voz','Position',[0 48 scrsz(3) scrsz(4)/1.205])
subplot(2,1,1),plot(S),title('Señal de Voz sin ruido'),xlabel('Número de Muestras'),ylabel('Amplitud de las Muestras'),grid
subplot(2,1,2),plot(Ssr),title('Señal de Voz filtrada (Pre-énfasis)'),xlabel('Número de Muestras'),ylabel('Amplitud de las Muestras'),grid
%soundsc(Ssr,50e3);


figure('Name','Coeficientes','Position',[0 48 scrsz(3) scrsz(4)/1.205])
plot(lpc,'-o','MarkerFaceColor','r'),title('Coeficientes LPC SEÑAL DE VOZ 1'),xlabel('Número de Segmentos'),ylabel('Amplitud de los Coeficientes'),grid
aa=a;


 