2 DURBIN
 
         Name: DURBIN
         Type: Assembler Program
      Version: 1.0
 Date Entered: 10-Nov-87
  Last Change: 10-Nov-87
 
 Description: Durbin Solution for LPC Coefficients in Floating Point
 
 This program uses the the DURBIN algorithm to find a set of
 linear predictive coefficients (LPC) given an autocorrelation
 vector.  This program uses the floating point library (FPLIB)
 to perform the calculations.  LPC coefficients can be used in
 speech analysis/synthesis systems such as: vocoding, stochastic
 speech coding, multipulse speech coding, speech recognition, etc.
 
 Approximate execution time for ten LPC coefficients on DURBIN
 using a 20.5 Mhz DSP56000/1 is 855  microseconds.
 
 Since the description of the DURBIN algorithm is beyond the scope
 of this help file, only the method of coding the algorithm from
 a FORTRAN program is given.  A complete description of the DURBIN
 algorithm is given in ref. 1 and a FORTRAN program is shown below:
 
       DIMENSION R(0:10),ALPHA(10)
       DOUBLE PRECISION Q
       DATA R/1.0,.65,.6,.5,.1,.1,-.05,-.03,-.05,-.07,.01/
       CALL DURBIN(R,ALPHA,10)
       PRINT *,ALPHA
       END
 C
 C      DURBINS RECURSIVE SOLUTION OF AR ESTIMATE
 C
       SUBROUTINE DURBIN(RN,ALPHA,NCOEF)
       DIMENSION RN(0:*),ALPHA(*),ANEW(100)
       REAL K
 
       E=RN(0)
       ALPHA(1)=RN(1)/E
       E=(1.0-ALPHA(1)*ALPHA(1))*E
       DO 1000 I=2,NCOEF
       SUM=0
       DO 10 J=1,I-1
 10          SUM=SUM+ALPHA(J)*RN(I-J)
       K=(RN(I)-SUM)/E
       ALPHA(I)=K
       DO 40 J=1,I-1
 40          ANEW(J)=ALPHA(J)-K*ALPHA(I-J)
       DO 70 J=1,I-1
 70          ALPHA(J)=ANEW(J)
       E=(1.0-K*K)*E
 1000      CONTINUE
       RETURN
       END
 
 The program can be slightly rearranged as shown below:
 
       DIMENSION R(0:10),ALPHA(10)
       DOUBLE PRECISION Q
       DATA R/1.0,.65,.6,.5,.1,.1,-.05,-.03,-.05,-.07,.01/
       CALL DURBIN(R,ALPHA,10)
       PRINT *,ALPHA
       END
 C
 C      DURBINS RECURSIVE SOLUTION OF AR ESTIMATE
 C
       SUBROUTINE DURBIN(RN,ALPHA,NCOEF)
       DIMENSION RN(0:*),ALPHA(*),ANEW(100)
       REAL K
 
       E=RN(0)
       ALPHA(1)=RN(1)/E
       E=(1.0-ALPHA(1)*ALPHA(1))*E
 
       I=2
       M=1
       DO 1000 IXX=1,NCOEF-1
       SUM=0
       IPTR=M
       DO 10 J=1,M
           SUM=SUM+ALPHA(J)*RN(IPTR)
           IPTR=IPTR-1
 10    CONTINUE
       K=(RN(I)-SUM)/E
       ALPHA(I)=K
       IPTR=M
       DO 40 J=1,M
           ANEW(J)=ALPHA(J)-K*ALPHA(IPTR)
           IPTR=IPTR-1
 40    CONTINUE
       DO 70 J=1,M
 70          ALPHA(J)=ANEW(J)
       E=(1.0-K*K)*E
       I=I+1
       M=M+1
 1000  CONTINUE
       RETURN
       END
 
 The second version is easier to implement on the DSP56000.
 The assembly program DURBIN.ASM is directly coded from the
 second FORTRAN program.
 
 
 References
 ----------
 1.  "Digital Processing of Speech Signals", L.R. Rabiner,R.W.Schafer
 
 
 
 
