Dear User,

     I am very happy to share this software source with
you for the benefit of all.  This software is a 
bio-metric(voice) based speaker-identification which
uses wave-file format input for adding user and for 
recognition. This software adds one more tier of 
security over pin/password mechanism.

Regards,
K. Manigandan

PseudoCode for Speaker Identification Program:-
-----------------------------------------------

Feature Extraction :-
-------------------------

1. Read input Wave file and store data in SignalArray[M]
2. Split signalarray[M] into N-Frames  [ no of  samples  on each frame based on Sampling     Frequency such that 5 - 100ms time period samples are taken]
3.  Construct Hamming-Window and multiply each Samples in frame with this value
4. Calculate Autocorrelation values for each N-frames 
         R[I]  =    Sum( signalarray[x]*signalarray[x+I])  x varies from 0 to N - p
                        and I varies from I  to p  ; 
                               p is the order of LP Coefficients; [ p = 12 ]
                               
5.  Solve for Linear Prediction Coefficients using Levinson_Durbin's algorithm

       E(0)    =  R(0)
       K(i)    =  (R(i) - SUM(a(j,i-1) *R(i - j)) / E(i-1)    
                          J : 1 -> i-1 ; 1 <= i <= p;
       a(i,i)   =  k(i)
       a(j,i)   =  a(j, i-1) - k(i) * a(i-j, i-1)                          1<= j <= i-1
       E(i)    =  (1 - K(i) * K(i) ) * E(i-1)

      For i: 1 - p
             For j: 1 - i-1
                  {
		K(i)    =  (R(i) - SUM(a[j][i-1] * R(i-j)) / E(i-1)
                     	a[i][i]  = K(i)
                       E(i)     =  ( 1 - K(i) * K(i) )* E(i-1)
	           LinearCoeff[i][j]   =  K(i) 
                   }
           
6.  Compute Gain for LPCoefficients and Multiply Gain with LPCoefficients
7.  Calculate the sum array
	for  i: 1 - P
                  for j: 1-p
                      {
                          Sum[i]  += LinearCoeff[j][i]
                      }
8 . store sum array in codebook file
9.  Iteration:  repeat steps 1,2,3,4,5 for each Frame till end of samples are reached



Recognition:-

1. Read Wave file and construct codebook for the voice sample
2.  Compare codebook with existing database to find minimum Euclidean distance
3.  Minimum Euclidean distance codebook is the recognized speaker 
     {Assumption only trained user will be using the system}
