`
`FED-STD 1016
`February 14, 1991
`
`—
`
`FEDERAL STANDARD
`
`TELECOMMUNICATIONS: ANALOG TO DIGITAL CONVERSION OF RADIO
`VOICE BY 4,800 BIT/SECOND CODE EXCITED LINEAR PREDICTION (CELP)
`
`This standard is issued by the General Services Administration pursuant to
`the Federal Property and Administrative Services Act of 1949, as amended.
`
`1. SCOPE
`
`1.1 Description. This standard specifies interoperability -related requirements for the conversion of
`analog voice to a 4,800 bit/s digitized form for digital radio transmission by a method known as Code
`Excited Linear Prediction (CELP) and the reverse process, the synthesis of analog voice from
`4,800 bit/s CELP-digitized voice. In addition to digital radio applications, CELP is also very suitable
`for encrypted telephone use and other applications wherein voice must be digitized prior to
`encryption.
`
`1.2 Pur~ose. This standard is to facilitate interoperability between radio telecommunication facilities
`and systems of the Federal Government.
`
`1.3 Am3]ication. This standard shall be used by all Federal departments and agencies in the design
`and procurement of all radio equipment employing 4,800 bit/s digitized voice.
`
`2. CONVENTIONS AND DEFINITIONS
`
`a. Frame. A CELP frame is 144 bits in length. A frame interval is 30 ms f.01 percent in
`duration and contains 240 voice samples (8,000 samples/s).
`
`A CELP subframe is 1/4 the length of a frame.
`b . Subframe.
`ms t.01 percent in duration and contains 60 voice samples.
`
`7.5
`
`Thus, a subframe is
`
`3.
`
`REQUIREMENTS
`
`3.1
`
`Voice Svnthesis
`
`3.1.1 General Description.
`Since Code Excited Linear Prediction (CELP) is an analysis-
`by-synthesis type of technique, voice synthesis is described first. As shown in the diagram below,
`CELP synthesis involves the excitation of a parameter-adjusted Linear Prediction Filter by the sum
`of gain-scaled codes selected from a fixed, stochastically- derived “stochastic code book” and an
`adaptive “code book,” utilizing parameters transmitted in a 144-bit frame structure.
`
`“Stochtistic” Codes
`511
`
`Adaptive Codes
`. . .
`
`;
`
`Linear
`Prediction
`Filter
`
`LSPS
`
`<
`
`Subframe
`Delay
`
`)
`
`l l
`
`l
`
`()
`
`,
`
`l l
`
`l
`
`O
`
`ZTE EXHIBIT 1014
`
`Page 1 of 24
`
`(cid:228)
`
`
`FED-STD 1016
`
`Downloaded from http://www.everyspec.com
`
`The fixed, stochastically-derived ''stochastic" codes aredescribed infection 3.3. “Stochastic’’c odeg ain
`is described in section 3.4. Adaptive codes are described in section 3.5 and adaptive code gain is
`described in section 3.6. Section 3.7 describes the Linear Prediction Filter and the Line Spectral
`Parameters (LSPS) that adjust it. Section 3.8 shows transmission format, including bit assignments for
`the transmitted information. Single bit error correction on some of the most sensitive bits is described
`in section 3.9.
`
`3.1.2 Postfiltering. Postfiltering may be used to enhance the synthesized voice coming out of the
`CELP Linear Prediction Filter.
`
`3.1.3 Lowpass Filtering. Lowpass (i.e., reconstruction) filtering shall be employed. A typical
`lowpass filter has a 3 dB attenuation point at 3,800 Hz, less than 1 dB of passband ripple, and
`minimum attenuations of 18 dB at 4,000 Hz and 46 dB above 4,400 Hz. In certain applications, mild
`highpass filtering (e.g., 175 Hz second-order Butterworth) may also be of benefit.
`
`3.2 Voice Analvsi~
`
`3.2.1 Voice Input Filtering. The analog voice input bandpass should be essentially flat from 200
`to 3,400 Hz. A typical input filter has 3 dB attenuation points at 100 and 3,800 Hz; less than 1 dB of
`inband ripple; and minimum attenuations of 18 dB at 50 Hz, 18 dB at 4,000 Hz, and 46 dB above
`4,400 Hz.
`
`3.2.2 Analog-to-Digital Conversion. Analog-to-digital conversion shall use an 8 kHz A 0.1 percent
`sampling frequency and have a dynamic range of at least 12 bits.
`
`3.2.3 Amplitude Scaling. To maintain proper receiver voice levels, analysis shall be based upon use
`of input digitized voice whose peak values are -32,768 and +32,767.
`
`3.2.4 Analysis. As reflected in the following diagram, CELP is an analysis-by-synthesis type of
`
`CELP Synthesizer
`
`Error Minimization
`
`/
`
`I
`
`4
`
`e
`
`PCM Input
`(8 kHz Sampling)
`
`Perceptual Weighting Filter
`
`technique. The objective of CELPanalysis is to minimize the perceptual difference (i.e., find the best
`match) between the actual digitized voice and the synthesized voice resulting from use of the
`parameters to be transmitted. As shown in the diagram, linear Pulse Code Modulated (PCM) voice
`sampled at 8 kHz is subtracted from the CELP synthesizer approximation and passed through a
`perceptual weighting filter (see section 3.2.5). The synthesizer parameters to be transmitted are
`adjusted for minimum perceptual error with respect to the actual input voice signal.
`
`It is recommended that a perceptual weighting filter be the
`3.2.5 Perceptual Weighting Filter.
`cascade of a linear predictive whitening filter and a bandwidth expanded linear predictive synthesis
`filter. The bandwidth expanded linear predictive synthesis filter’s poles are moved radially toward
`the origin by a weighting factor, typically 0.8.
`
`3.3 “Stochastic” Codes. There are 512 fixed, stochastically-derived codes (i.e., vectors). During voice
`analysis, a code may be selected from a set smaller than 512 in order to reduce computational
`complexity (at the expense of voice reproduction quality). All 512 fixed, stochastical ly-derived codes
`
`-2-
`
`Page 2 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`
`shall be available for voice synthesis. Each of the fixed, stochastically-derived codes contains 60
`ternary (i.e., either -1, 0, or 1 ) elements, representing information used to form the excitation for the
`Linear Prediction Filter over a subframe period (i.e., 8,000 elements/s for 7.5 ins). The fixed,
`stochastically-derived codes, 512 overlapped codes of 60 elements each, are created from a 1,082
`element “stochastic code book” as described below.
`
`3.3.1
`“Stochastic Code Book”. The 1,082 element “stochastic code book” is defined by the following
`FORTRAN computer program.
`
`program codebook
`implicit none
`integer M, L, MAXCODE, WIDTH, j, k
`parameter (M=512, L=60)
`parameter (MAXCODE=2*(M- l)+L)
`parameter (WIDTH= 20)
`real x( O: MAXCODE+l), THRESH
`parameter (THRESH=l .2)
`open (unit=lO, file= ’codebook.h’, status=’new’)
`do 50 k=O, MAXCODE, 2
`call noise(x(k), x(k+l))
`do 20 j=O, 1
`if(abs(x(k+j)) .lt. THRESH) then
`x(k+j) = 0.0
`el se
`x(k+j) = sign(l.0, x(k+j))
`end if
`continue
`20
`50 continue
`do 80 k=l, MAXCODE-WIDTH, WIDTH
`write (10,90) (int(x(j)), j=k, k+WIDTH-1)
`80 continue
`write (10,91) (int(x(j)), j=MAXCODE/WIDTH*WIDTH+l, MAXCODE)
`stop ‘codebook.h generated’
`90 format(lx, 20(i3, ‘,’))
`91 format(lx, 20(i3:, ‘,’))
`end
`subroutine noise(xl, x2)
`implicit none
`real xl, x2
`integer random, i, j
`r e a l f ( 2 ) , f l , f 2 , s
`10 do 30 i=l, 2
`do 20 j=l, 4
`f(i) = (float (randomo + 32768 ))/65535.
`20
`continue
`30 continue
`fl=2.*f(l)-l.
`f2=2.*f(2)-l.
`s=fl*fl+f2*f2
`if(s .ge. 1.) goto 10
`s = s q r t ( - 2 . * s l o g ( s ) / s)
`xl=fl*s
`x2=f2*s
`return
`end
`
`-3-
`
`Page 3 of 24
`
`
`
`FED-STD 1016
`
`Downloaded from http://www.everyspec.com
`
`function random ( )
`implicit none
`integer random
`integer MIDTAP, MAXTAP
`parameter (MIDTAP=2, MAXTAP=5)
`integer y(MAXTAP), j, k, temp
`save y, j, k
`datay/-2ll6l, -8478, 30892, -10216, 16950/
`data j/MIDTAP/, k/MAXTAP/
`temp=iand(y(k)+y(j), 65535)
`if (temp .gt. 32767) temp=temp-65536
`y(k)=temp
`random=temp
`k=k-1
`if (k le. O) k=MAXTAP
`j=j-1
`if (j le. O) j=MAXTAP
`return
`end
`
`The first and last 200 elements generated by the above FORTRAN program are shown below. The
`left-most and highest elements are lowest numbered (e.g., the element in the first row and third
`column is numbered 2).
`
`1,
`o,
`0,
`0,
`0,
`-1,
`0,
`0,
`0,
`1,
`0,
`0,
`-1,
`0,
`1,
`0,
`0,
`o,
`0, -1,
`
`0,
`0,
`0,
`-1,
`0,
`-1,
`-1,
`0,
`0,
`1,
`0,
`0,
`0,
`-1,
`-1,
`0,
`
`0,
`
`0,
`
`0,
`-1,
`-1,
`0,
`-1,
`0,
`0,
`0,
`-1,
`0,
`
`0,
`0,
`0,
`
`0,
`-1,
`
`1,
`0,
`0,
`0,
`1,
`0,
`0,
`-1,
`-1,
`0,
`
`0,
`1,
`-1,
`0,
`0,
`0,
`0,
`-1,
`
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`
`0,
`-1,
`0,
`
`0,
`0,
`1,
`
`0,
`
`0,
`
`0, 1, 0, 1, 0, 0, 0, 0? -1>
`0,
`0,
`0, 0, -1, 0, -1, -19 0! 03
`0,
`0,
`0,
`0,
`-1, 0, 0, 0, 1, 09
`0,
`0,
`0,
`0, 0, 0, 0, 1, -1, 0,
`0,
`0,
`0,
`1, 0, 0, 0, -1, 0,
`-1,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0, 0, 0, -1, -1,
`1, 0, 0, 0, 0, 0, 0, 0? O*
`0,
`-1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
`-1, 0, 1, 0, 0, 0, 0, 0,
`0,
`0,
`
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`0,
`
`0,
`0,
`0,
`0,
`0,
`0,
`
`0,
`0,
`0,
`
`. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
`
`0,
`
`0,
`0,
`0,
`
`0,
`0,
`1,
`0,
`0,
`-1,
`0,
`
`0,
`
`1,
`0,
`1,
`0,
`0,
`0,
`0,
`-1,
`0,
`0,
`
`0,
`0,
`0,
`-1,
`1,
`0,
`0,
`0,
`1,
`0,
`
`0,
`0,
`0,
`0.
`0,
`0,
`0,
`0,
`0,
`
`0,
`0,
`1,
`0,
`o,
`0,
`0,
`0,
`0,
`0, 0,
`
`0,
`0,
`0,
`0,
`0,
`1,
`0,
`-1,
`-1,
`1,
`
`0,
`0,
`0,
`
`0,
`0,
`0,
`-1,
`0,
`0,
`0,
`
`0,
`0,
`0,
`1,
`
`-1,
`0,
`0,
`
`1, 0, 0, 0, 0, -1,
`0,
`0,
`1,
`-1, 0, 0, 0, 1, 0, 0> 1$ 0> 0>
`0,
`0,
`0, 1, 0, 0, 0, 09 09 0, 03
`-1,
`1, 0, 0, 0, 0, 0, 0, 0> 0? 0>
`0,
`0,
`0, 1, 0, 0, -1, 1, -1, 0s 1? 0> 03 0?
`0, 0, 0, 0, 0, 0, -1, 1, 09 0? 09 0,
`0, 0, 0, 0, -1, 0, 0, 0, 0, -1! 0,
`0,
`0, 0, 0, 0, -1, 0, 0, -1> 0? 0? 03 0? 0>
`0, 0, -1, 0> 1, 0? 0, 1, 0> 0? 0, 0> -13
`0, 0, -1, 0, 0, -1, 0, 0> 0> 03 0$ 0> 1>
`
`0,
`0,
`0,
`
`3.3.2 Creation of Stochastically-derived Codes. The 512 fixed codes of 60 elements each are
`assembled from the l,082stochastically-derived “stochasticc odebook’’elements asshown below. The
`left-most code elements are first-most in time.
`
`-4-
`
`Page 4 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`
`Elements In Codes
`
`0, 1, 2,...
`2, 3, 4,...
`
`. . . . 58, 59
`. . . . 60, 61
`
`2(51 l-n), 2(511 -n)+l,..
`
`. . . . 2(511 -n)+59
`
`1,020, 1,021, 1,022,...
`1,022, 1,023, 1,024,...
`
`. . . . 1,078, 1,079
`. . . . 1,080, 1,081
`
`Index
`
`511
`510
`
`.n
`
`. i
`
`0
`
`—
`
`3.4 “Stochastic” Code Gain. The relative amplitude (to the nearest table value) to be applied to the
`stochastically-derived code elements of each subframe is determined during analysis and coded into
`5 bits according to the following table. The decimal index number is then transmitted in binary form.
`At the receiver, in voice synthesis, the gain index number is used to decode the relative amplitude
`of the stochastically - derived code elements during the subframe.
`
`Index
`
`Gain
`
`Index
`
`Gain
`
`Index Gain
`
`Index
`
`Gain
`
`16
`17
`18
`19
`20
`21
`22
`23
`
`1
`3
`13
`35
`64
`98
`136
`178
`
`24
`25
`26
`27
`28
`29
`30
`31
`
`224
`278
`340
`418
`520
`660
`870
`1,330
`
`-178
`-136
`98
`-64
`-35
`-13
`-3
`-1
`
`89
`
`10
`11
`12
`13
`14
`15
`
`o
`1
`2
`3
`4
`5
`6
`7
`
`-1,330
`-870
`-660
`-520
`-418
`-340
`-278
`-224
`
`3.5 AdaDtive Codes
`
`3.5.1 Adaptive “Code
`Book” and Integer-delay Codes. The adaptive “code book” is a 147-elen~ent,
`shifting storage register that is updated at the start of every subframe with the previous 60 elements
`(subframe interval) of Linear Prediction Filter excitation. Element ordering is such that the first
`excitation elements into the Linear Prediction Filter are the first into the adaptive “code book”.
`Elements already in the storage register are shifted up during the update process and the oldest
`elements are discarded. The 128 integer-delay overlapped adaptive codes, of 60 elements each, are
`generated from the information in the adaptive “code book” as follows. Adaptive codes 60 through
`147 are composed of elements -60 to -1, -61 to -2, . . . through -147 to -88, respectively (where
`element -1 was the last element into the adaptive “code book”). Adaptive code “n”, where n ranges
`from 20 to 59, repeats the adaptive “code book” elements sequentially from -n to -1 to form a
`60-element code. As examples, adaptive code 20 repeats adaptive “code book” elements -20 ...-1
`three times and adaptive code 59’s elements run -59 . . . -1, -59. Regarding order of utilization, the
`most negatively numbered (i.e., most delayed) element of a particular adaptive code is used to
`compute the first element in time of Linear Prediction Filter excitation for a particular subframe
`period.
`
`3.5.2 Noninteger-delay Codes. An additional 128 impli’tit, noninteger-delay codes, defined in
`section 3.5.4, can optionally be made available through interpolation during voice analysis. All 256
`adaptive codes shall be available for voice synthesis. Forty point interpolation, or the equivalent, shall
`be used in both voice analysis and voice synthesis. (However, this does not preclude interpolating
`with fewer points, perhaps as few as 8 points, during preliminary code search computations). The
`process of interpolation is described in section 3.5.3.
`
`-.
`
`-5-
`
`Page 5 of 24
`
`
`
`FED-STD 1016
`
`Downloaded from http://www.everyspec.com
`
`3.5.3 Interpolation. Anoninteger-delay adaptive codeisinterpolated fromthe nearest lower-valued
`integer-delay code (e.g., noninteger-delay code 49.67 is determined by interpolating from
`integer-delay code 49). The 60 elements of the integer-delay code are first renumbered as RO . . . R59
`for purposes of description, where RO is normally the most negatively numbered (i.e., most delayed)
`element under the previous numbering system (i.e., -1 to - 147), R1 is the next most negatively
`numbered element, etc. For example, for integer-delay code 66, RO=element -66, R 1 =element -65,
`and R59=element -7. For integer-delay code 21, because of the repetition within lower numbered
`integer-delay codes, RO=element -21, Rl=element -20, R58=element -4, and R59=element -3.
`L i k e w i s e , f o r i n t e g e r - d e l a y c o d e 5 8 , RO=element -58, Rl=element -57, R57=element -1,
`R58=element -58, and R59=element -57.
`
`The next step in explaining the process of interpolation is to show the computation of the weighting
`factors. The following FORTRAN program gives interpolation weighting factors for the interpolation
`of even numbers of points (N) equal to and less than 40. Note: interpolation with less than 8 points
`is not recommended and interpolation with other than 40 points is only for preliminary computations
`during voice analysis.
`
`program weights
`implicit none
`integer N, nf, i, j, k
`parameter (N=40, nf=5)
`real h(-6*N:6*N), w(-N/2:N/2-l, nf), f(nf), pi
`data f/O.25, 0.33333333, 0.5, 0.66666667, 0.75/
`pi = 4oO*atan(l .0)
`open(unit=l O, file= ’weights’, status= ’new’)
`do 10 k = -6*N, 6*N
`h(k) = 0.54 + 0.46* cos(pi*k/(6*N))
`10 continue
`do 30 i = 1, nf
`d o 2 0 j= -N/2, N/2-l
`w(j, i) = h(nint(12*(j+f( i)))) *sin(pi*(j+f( i)))/ (pi*(j+f(i )))
`continue
`20
`30 continue
`write (10,69) f
`d o 4 0 j= -N/2, N/2-l
`write (10,70) j, (w(j, k), k = 1, nf)
`40 continue
`69 format (7x, 5f14. 5)
`70 format(3x, i4, 5e14.5)
`end
`
`For N-point interpolation, the above program yields N weighting factors, numbered from -N/2 to
`N/2-l. Asthefinal step showing theprocess ofinterpolation, these weighting factors are multiplied
`by the values of the adaptive code elements within a “window” around the element being interpolated
`(R). The sum of these multiplications is the interpolated value of that element (R’). For example,
`for 40 point interpolation, to find noninteger-delay code 66.67 (i.e., integer= 66, fraction= .67), element
`-66 becomes RO. Weighting factor -20 (i.e., -.001 1766) is multiplied by the value of element -86,
`weighting factor -19 (i.e., .0014386) is multiplied by the value of element -85, . . . . weighting factor
`O (i.e., .41245) is multiplied by the value of element -66, . . . , up to weighting factor 19 (i.e.,
`-.001 1302) being multiplied by the value of element -47, The sum of these becomes the interpolated
`value of element -66 (i.e., R’O). The same operation takes place in a “window” around the remaining
`elements (Rl - R59). However, in the example given, the samples run out beyond R46 (i.e., for R46
`weighting factor 19 is multiplied by the value of element - 1).
`In such cases, the previously
`interpolated values for elements RO, Rl, R2, . . . (i.e., R’0, R*1, R’2, . . . ) are used to complete
`interpolation of the remaining elements. Thus, in the example given, when interpolating R58 (i.e.,
`element -8), weighting factor -20 is multiplied by the value of element -28 and weighting factor 19
`
`-6-
`
`Page 6 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`
`is multiplied by the value of already interpolated element R’11 (i.e., interpolated element -56). The
`sum of the 40 values found by multiplying the 40 weighting factors by the 40 element values (i.e.,
`element -28, element -27, element -26, . . . element -1, R’0, R*1, . . . R’ 10, R’1 1 ) becomes the value of
`R’58 (i.e., interpolated element -8).
`
`3.5.4 Coding Within 1st and 3rd Subframes for Transmission. The following table identifies the
`8-bit values transmitted to represent each of the 256 (128 integer-delay and 128 noninteger-delay
`(implicit)) adaptive codes. The notation is such that, for example, hexadecimal ($) AF is expressed
`as 10101111 in binary form, where bit 7 is on the left and bit O is on the right.
`
`Adaptive Hex
`Code
`20.00 $42
`20.33 $46
`20.67 $47
`21.00 $57
`21.33 $56
`21.67 $59
`22.00 $58
`22.33 $AE
`22.67 $BE
`23.00 $BA
`23.33 $B8
`23.67 $BC
`24.00 $AC
`24.33 $A8
`24.67 $94
`25.00 $84
`25.33 $8C
`25.67 $9C
`26.00 $9E
`26.25 $8E
`26.50 $86
`26.75 $96
`27.00 $OA
`27.25 $02
`27.50 $OB
`27.75 $03
`28.00 $lB
`28.25 $13
`28.50 $09
`28.75 $01
`29.00 $19
`29.25 $11
`29.50 $F3
`29.75 $F7
`30.00 $E7
`30.25 $E3
`30.50 $E5
`30.75 $El
`31.00 $Fl
`31.25 $F5
`31.50 $61
`31.75 $65
`32.00 $75
`
`Adaptive Hex
`Code
`34.67 $CO
`35.00 $C3
`35.33 $C2
`35.67 $D2
`36.00 $D3
`36.33 $Dl
`36.67 $DO
`37.00 $30
`37.33 $32
`37.67 $3A
`38.00 $31
`38.33 $33
`38.67 $3B
`39.00 $3F
`39.33 $37
`39.67 $3E
`40.00 $36
`40.33 $34
`40.67 $4A
`41.00 $4B
`41.33 $4E
`41.67 $4F
`42.00 $5F
`42.33 $5E
`42.67 $5C
`43.00 $5D
`43.33 $54
`43.67 $55
`44.00 $50
`44.33 $51
`44.67 $AA
`45.00 $A6
`45.33 $A2
`45.67 $B6
`46.00 $B2
`46.33 $BB
`46.67 $BO
`47.00 $B9
`47.33 $B4
`47.67 $BD
`48.00 $A4
`48.33 $AO
`48.67 $A9
`
`Adaptive Hex
`Code
`51.67 $98
`52.00 $90
`52.33 $80
`52.67 $9A
`53.00 $8A
`53.33 $82
`53.67 $92
`54.00 $lA
`54.33 $12
`54.67 $00
`55.00 $08
`55.33 $06
`55.67 $OE
`56.00 $OF
`56.33 $07
`56.67 $17
`57.00 $lF
`57.33 $OD
`57.67 $05
`58.00 $lD
`58.33 $15
`58.67 $FB
`59.00 $FF
`59.33 $EB
`59.67 $EF
`60.00 $ED
`60.33 $EA
`60.67 $EE
`61.00 SEC
`61.33 $E6
`61.67 $E2
`62.00 $E4
`62.33 $EO
`62.67 $F4
`63.00 $FO
`63.33 $60
`63.67 $64
`64.00 $74
`64.33 $70
`64.67 $73
`65.00 $72
`65.33 $6C
`65.67 $7C
`(continued)
`
`- 7-
`
`Adaptive Hex
`Code
`68.67 $C5
`69.00 $C9
`69.33 $C8
`69.67 $C7
`70.00 $CB
`70.33 $C6
`70.67 $CA
`71.00 $D6
`71.33 $DA
`71.67 $DB
`72.00 $D7
`72.33 $D9
`72.67 $D5
`73.00 $D8
`73.33 $D4
`73.67 $20
`74.00 $28
`74.33 $38
`74.67 $22
`75.00 $2A
`75.33 $39
`75.67 $29
`76.00 $21
`76.33 $23
`76.67 $2B
`77.00 $27
`77.33 $2F
`77.67 $25
`78.00 $2D
`78.33 $3D
`78.67 $35
`79.00 $3C
`79.33 $2E
`79.67 $2C
`80.00 $26
`81.00 $24
`82.00 $49
`83.00 $48
`84.00 $4C
`85.00 $4D
`86.00 $44
`87.00 !$45
`88.00 $40
`
`Adaptive Hex
`Code
`97.00 $Al
`98.00 $97
`99.00 $87
`100.0 $9F
`101.0 $8F
`102.0 $81
`103.0 $91
`1 0 4 . 0 $9B
`105.0 $8B
`106.0 $83
`107.0 $93
`108.0 $18
`109.0 $10
`110.0 $04
`111.0 $Oc
`112.0 $16
`1 1 3 . 0 $lE
`114.0 $14
`1 1 5 . 0 $lC
`116.0 $F9
`117.0 $ FA
`118.0 $FD
`119.0 $E9
`120.0 $FE
`121.0 $E8
`122.0 $FC
`123.0 $43
`124.0 $F2
`125.0 $F6
`126.0 $F8
`127.0 $5B
`128.0 $5A
`129.0 $63
`130.0 $62
`131.0 $77
`132.0 $76
`133.0 $52
`134.0 $53
`135.0 $66
`136.0 $67
`137.0 $Cc
`138.0 $CD
`139.0 $AB
`
`—
`
`Page 7 of 24
`
`
`
`FED-STD 1016
`
`32.25 $71
`32.50 $6D
`32.75 $7D
`33.00 $69
`33.25 $79
`33.50 $7B
`33.75 $7F
`34.00 $6B
`34.33 $Cl
`
`Downloaded from http://www.everyspec.com
`
`49.00 $ AD
`49.33 $95
`49.67 $85
`50.00 $9D
`50.33 $8D
`50.67 $89
`51.00 $99
`51.33 $88
`
`66.00 $68
`66.33 $78
`66.67 $7A
`67.00 $7E
`67.33 $6A
`67.67 $6E
`68.00 $6F
`68.33 $C4
`
`89.00 $41
`90.00 $A7
`91.00 $A3
`92.00 $B7
`93.00 $B3
`94.00 $Bl
`95.00 $B5
`96.00 $A5
`
`140.0 $CF
`141.0 $CE
`142.0 $DE
`143.0 $BF
`144.0 $DF
`145.0 $ DD
`146.0 $DC
`147.0 $AF
`
`Note: Before an adaptive code is selected for transmission, consideration shouldbe
`given to the possibility that amultiple of actual ’’pitch’’ is being selected. Submultiple
`of aselected code’s pitch equivalent should reexamined and maybe utilized instead
`if results are found to be within approximately 0.5 dB ofa selected code’s squared
`prediction error.
`
`3.5.5 Coding Within 2nd and 4th Subframes for Transmission. The adaptive code selected for
`transmissions representedin 6bits, based upon the adaptive code selected in the previous subframe,
`Utilizing the table of adaptive codes in section 3.5.4, if aprevious subframe’s adaptive code wasin
`the range of20.00 - 29.25, the adaptive code tobe transmitted could run from 20.00 to 38.33. If the
`previous subframe’s adaptive code was inthe rangeof 115.0- 147.0, the adaptive code could run
`from 84.00 to 147,0. otherwise, the 6bits will code the range from 31 codes lower to 32 codes higher
`than the previous subframe’s adaptive code (considering both integer-delay and noninteger-dela!’
`adaptive codes). This is true even if an implementation uses only integer adaptive codes. Binar~
`coding is such that the lowest numbered adaptive code is coded as 000000 and the highest numbered
`adaptive code is coded as 111111. For example, for previous subframe adaptive codes between 29.50
`and 114.0, binary 011111 indicates no difference from the adaptive code of the previous subframe.
`
`AdaDtive Code Gain. The relative amplitude (to the nearest table value) to be applied to the
`3.6
`adaptive code elements of each subframe is determined during analysis and coded into 5 bits
`according to the following table. The decimal index number is then transmitted in binary form. At
`the receiver, in voice synthesis, the adaptive code gain index number is used to decode the relative
`amplitude of the adaptive code elements during the subframe.
`
`Index
`
`16
`17
`18
`19
`20
`21
`22
`23
`
`Gain
`
`0.780
`0.816
`0.850
`0.881
`0.915
`0.948
`0.983
`1.020
`
`Index
`
`Gain
`
`24
`25
`26
`27
`28
`29
`30
`31
`
`1.062
`1.117
`1.193
`1.289
`1.394
`1.540
`1.765
`1.991
`
`Gain
`
`0.255
`0.368
`0.457
`0.531
`0.601
`0.653
`0.702
`0.745
`
`Index
`
`89
`
`10
`11
`12
`13
`14
`15
`
`Gain
`
`-.993
`-.831
`-.693
`-.555
`-.414
`-.229
`0.000
`0.139
`
`Index
`
`o1234567
`
`3.7 Linear Prediction
`
`3.7.1 Linear Prediction Filter. A 10th order Linear Prediction Filter is excited by the sum of the
`gain-adjusted “stochastic” and adaptive codes to synthesize voice.
`
`3.7.2 Line Spectral Parameters. During voice analysis, the parameters of the Linear Prediction
`Filter are determined and transmitted on a 30 ms frame basis as 10 Line Spectral Parameters (LSPS),
`It is recommended that LSPS be determined with no
`on the basis of 10th order linear prediction.
`preemphasis, 15 Hz bandwidth expansion (i.e., 0.994 weighting factor), and a 30 ms nonoverlapped
`Hamming window spanning the last two subframes of the present frame and first two subframes of
`the next frame. Shown below is the coding to be employed for the 10 LSPS. Note: LSPS are
`
`-8-
`
`Page 8 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`
`expressed in terms of frequency (Hz) and must be monotonic (i.e., higher numbered LSPS must not
`contain lower frequencies than lower numbered LSPS).
`
`.
`
`Index
`
`LSP 1
`(Hz)
`
`LSP2
`(Hz)
`
`LSP3
`(Hz)
`
`LSP4
`(Hz)
`
`LSP5
`(Hz)
`
`LSP6
`(Hz)
`
`LSP7
`(Hz)
`
`LSP8
`(Hz)
`
`LSP9
`(Hz)
`
`LSP1O
`(Hz)
`
`1,470
`1,570
`1,690
`1,830
`2,000
`2,200
`2,400
`2,600
`
`1,800
`1,880
`1,960
`
`2,100
`2,300
`
`2,480
`2,700
`2,900
`
`2,225
`2,400
`2,525
`2,650
`2,800
`
`2,950
`
`3,150
`3,350
`
`2,760
`2,880
`
`3,000
`3,100
`3,200
`3,310
`3,430
`3,550
`
`3,190
`3,270
`3,350
`
`3,420
`3,490
`3,590
`3,710
`3,830
`
`100
`170
`225
`
`250
`280
`340
`420
`
`500
`
`210
`235
`265
`295
`
`325
`360
`400
`440
`480
`520
`560
`610
`670
`740
`
`810
`
`880
`
`420
`460
`
`500
`
`540
`585
`640
`705
`775
`
`850
`950
`1,050
`1,150
`1,250
`
`1,350
`1,450
`
`1,550
`
`620
`660
`720
`795
`880
`970
`1,080
`1,170
`1,270
`1,370
`1,470
`1,570
`1,670
`
`1,770
`
`1,870
`
`1,970
`
`1,000
`1,050
`1,130
`1,210
`1,285
`1,350
`1,430
`1,510
`1,590
`1,670
`1,750
`1,850
`1,950
`
`2,050
`2,150
`
`2,250
`
`0 1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`
`13
`14
`
`15
`
`LSP Weighted Averaging. To determine the LSP values to be used for each subframe,
`3.7.3
`weighted averaging is used between the LSPS transmitted with the previous frame and the LSPS
`transmitted with the present frame. For each of the subframes of a given frame, the following
`weighting is given to the LSPS transmitted with the previous and present frames before they are
`utilized.
`
`Subframe
`
`Previous LSPS
`
`Present LSPS
`
`1
`2
`3
`4
`
`7/8
`5/8
`3/8
`1/8
`
`1/8
`3/8
`5/8
`7/8
`
`Thus, for example, if LSP 1 of a frame is 250 Hz and LSP 1 of the previous frame was 340 Hz, the
`value used for subframe 1 of the present frame is: 7/8(340 Hz) + 1 /8(250 Hz) = 328.75 Hz. For each
`subframe, this method of weighted averaging is employed for all 10 LSPS.
`
`3.8 Transmission Format
`
`3.8.1 Transmission Rate. The transmission rate for CELP shall be 4,800 bits/s f.01 percent.
`
`3.8.2 Bit Assignment. The table below gives the assignment of the 144 bits in each CELP frame
`(30 ms at 4,800 bits/s). Order of transmission is from bit 1 to bit 144. Abbreviations used in the
`following table are:
`
`-9-
`
`.
`
`—
`
`Page 9 of 24
`
`
`
`FED-STD 1016
`
`Downloaded from http://www.everyspec.com
`
`i = bit number, with O being the least significant bit
`n = subframe number
`CG(n)-i = Fixed, Stochastically-derived Code Gain
`CI(n)-i = Fixed, Stochastically-derived Code Index
`HP-i = Parity
`LSP j-i = Line Spectral Parameter (LSP), where j = LSP number
`PD(n)-i = Adaptive Code Index
`PG(n)-i = Adaptive Code Gain
`SP = Expansion Bit
`SY = Synchronization Bit
`
`Bit
`
`Description
`
`Bit
`
`Description
`
`Bit
`
`Description
`
`Bit
`
`Description
`
`109
`110
`111
`112
`113
`114
`115
`116
`117
`118
`119
`120
`121
`122
`123
`124
`125
`126
`127
`128
`129
`130
`131
`132
`133
`134
`135
`136
`137
`138
`139
`140
`141
`142
`143
`144
`
`CI(l)-2
`PG(2)-1
`CI(3)-7
`LSP 4-O
`CI(2)-5
`PD(l)-7
`PG(l)-O
`CG(4)-4
`LSP 5-O
`PD(4)-2
`CI(l)-3
`CI(3)-1
`LSP 7-2
`CI(4)-2
`PD(l)-1
`PG(2)-4
`CG(3)-3
`LSP 3-1
`CI(l)-7
`PD(3)-2
`CI(2)-6
`LSP 9-2
`PG(4)-1
`CG(l)-1
`PD(2)-4
`HP-3
`LSP 6-O
`PG(3)-3
`CI(4)-6
`PD(l)-O
`LSP 2-3
`CG(4)-1
`CI(3)-2
`LSP 4-2
`PD(3)-5
`SY
`
`37
`38
`39
`40
`41
`42
`43
`44
`45
`46
`47
`48
`49
`50
`51
`52
`53
`54
`55
`56
`57
`58
`59
`60
`61
`62
`63
`64
`65
`66
`67
`68
`69
`70
`71
`72
`
`PD(2)-O
`CI(4)-1
`LSP 9-O
`CI(3)-8
`PG(l)-4
`CG(2)-2
`PD(l)-3
`LSP 6-1
`CI(3)-4
`CI(2)-2
`CG(l)-4
`PD(2)-3
`LSP 1-2
`PG(3)-2
`HP-1
`PD(3)-1
`CG(4)-3
`LSP 8-1
`PG(3)-O
`CI(2)-8
`PD(4)-1
`CI(4)-O
`LSP 3-2
`PG(2)-O
`PD(l)-6
`CG(2)-O
`CI(3)-6
`LSP 10-1
`PG(l)-1
`CI(4)-7
`PD(3)-3
`CG(l)-2
`LSP 5-3
`CI(l)-6
`LSP 2-O
`PG(3)-4
`
`73
`74
`75
`76
`77
`78
`79
`80
`81
`82
`83
`84
`85
`86
`87
`88
`89
`90
`91
`92
`93
`94
`95
`96
`97
`98
`99
`100
`101
`102
`103
`104
`105
`106
`107
`108
`
`PD(l)-4
`CG(3)-2
`LSP 7-1
`CI(2)-7
`CI(3)-O
`PD(2)-5
`LSP 4-1
`CG(l)-O
`PG(4)-3
`LSP 9-1
`PD(3)-6
`CI(l)-4
`CG(2)-1
`LSP 6-2
`CI(4)-3
`PG(2)-2
`PD(4)-3
`LSP 1-0
`CG(4)-2
`LSP 8-2
`CI(2)-4
`HP-2
`PD(2)-2
`LSP 3-O
`PG(l)-2
`CG(3)-4
`LSP 10-2
`CI(4)-5
`CI(2)-O
`PD(l)-2
`LSP 5-1
`SP-O
`PG(4)-2
`CG(2)-3
`LSP 2-1
`PD(4)-4
`
`PG(4)-4
`PD(3)-4
`LSP 1-1
`CG(2)-4
`CI(3)-3
`CI(l)-8
`?D(4)-O
`LSP 8-O
`PG(2)-3
`CG(3)-O
`PD(l)-5
`LSP 3-3
`CI(2)-3
`CI(4)-4
`PD(2)-1
`LSP 10-0
`PG(l)-3
`CG(4)-O
`LSP 5-2
`PD(3)-O
`HP-O
`CI(l)-1
`CI(4)-8
`LSP 2-2
`PG(3)-1
`PD(4)-5
`CG(l)-3
`CI(3)-5
`LSP 7-O
`CI(2)-1
`PD(3)-7
`CI(l)-O
`PG(4)-O
`LSP 4-3
`CG(3)-1
`CI(l)-5
`
`123456789
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`29
`30
`31
`32
`33
`34
`35
`36
`
`3.8.3
`Synchronization Bit. Thesingle synchronization bitperframe shall alternate between binary
`O and 1 from frame to frame. It should be coded as binary-O for the first frame transmitted.
`
`3.8.4 Expansion Bit. When following this standard, the expansion bit shall be set to binary O in each
`frame. The purpose of this bit is to allow for future transition to as yet undefined coding techniques.
`
`-1o-
`
`Page 10 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`
`3.9 Error Correction
`
`Forward error correction of 11 bits with a (15,11) Hamming parity code is
`3.9.1 Encoding.
`provided. The 11 bits protected from a single bit error are: PD(l)-5, PD(l)-6, PD(l)-7, pG(l)-4,
`PG(2)-4, P~3)-5, PD(3)-6, PD(3)-7, PG(3)-4, PG(4)-4, and SP. (See section 3.8.2 foran explanation
`of these abbreviations). The 4 parity bits are encoded as follows. Parity bits Hp-O through Hp-3
`each represent an even parity computation on 7 of the 11 protected bits as shown below (i.e., a parity
`bit is O if the sum of the 7 protected bits is even).
`
`HP-O --PD(l )-5, PD(l)-6, PG(l)-4, PG(2)-4, PD(3)-6, PG(3)-4, and SP
`HP- 1 --PD(l )-5, PD(l)-7, PG(I)-4, PD(3)-5, PD(3)-6, PG(4)-4, and Sp
`HP-2 --PD(l )-6, PD(l)-7, PG(l)-4, PD(3)-7, PG(3)-4, PG(4)-4, and W
`HP-3 --PG(2)-4, PD(3)-5, PD(3)-6, PD(3)-7, PG(3)-4, PG(4)-4, and SP
`
`3.9.2 Decoding. The 4 parity bits (HP-0,1 ,2, and 3) shall be used to correct single errors in the 11
`protected bits as follows. Parity bits are calculated on the received 11 protected bits as described in
`section 3.9.1. Then, these calculated parity bits are Exclusive ORed with the received parity bits.
`The following table shows how to correct for a single bit error by reversing the binary value of one
`of the protected bits based upon the resulting binary value of the Exclusive ORed parity bits.
`
`Parity Result Invert
`
`Parity Result Invert
`
`3
`5
`6
`7
`9
`10
`
`PD(l)-5
`PD(l)-6
`PD( 1 )-7
`PG(l)-4
`PG(2)-4
`PD(3)-5
`
`3.10
`
`General Application Notes
`
`11
`12
`13
`14
`15
`
`PD(3)-6
`PD(3)-7
`PG(3)-4
`PG(4)-4
`SP
`
`3.10.1 Amplitude Scaling. “Stochastic” elements and gain values contained in this standard are based
`upon use of input digitized voice that can assume any integer value in the range -32,768 to +32,767
`and an impulse of 1.0 to calculate the impulse response of the perceptual weighting filter.
`
`3.10.2 Filter Structure. Various filter structures may be used in the implementation of this standard.
`All implementations must be interoperable with implementations based upon Direct Form (i.e.,
`block-wise) filtering.
`
`3.10.3 Smoothing. It is desirable to employ smoothing to prevent loud clipped voice (i.e., blasts) and
`squeaks. Smoothing based upon estimates of the channel error rate (provided by the error correction
`mechanism described in section 3.9) is recommended.
`
`4. EFFECTIVE DATE. The use of this standard by U.S. Government departments and agencies is
`mandatory effective 180 days after the date of this standard.
`
`5. CHANGES. When a Government department or agency considers that this standard does not
`provide for its essential needs, a statement citing specific requirements shall be sent in duplicate to
`the General Services Administration (K), Washington, DC 20405, in accordance with the provisions
`of Federal Information Resources Management Regulation 41 CFR 201-20. The General Services
`Administration will determine the appropriate action to be taken and will notify the agency.
`
`-11-
`
`Page 11 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`
`TECHNICAL DEVELOPMENT ACTIVITY:
`
`National Security Agency
`Information Security Organization (R2)
`Fort George G. Meade, MD 20755
`
`PREPARING ACTIVITY:
`
`National Communications System
`Office of Technology and Standards
`Washington, DC 20305-2010
`
`MILITARY INTERESTS
`
`Military Coordinating Activity
`DCA -- DC
`
`--
`
`Custodians
`Army -- SC
`Navy -- EC
`Air Force --90
`
`-12-
`
`Review Activities
`Army -- CR
`Navy -- AS, OM
`Air Force -- 17
`USMC -- MC
`NSA -- NS
`
`Page 12 of 24
`
`
`
`Downloaded from http://www.everyspec.com
`
`FED-STD 1016
`February 14, 1991
`
`—
`
`FEDERAL STANDARD
`
`TELECOMMUNICATIONS: ANALOG TO DIGITAL CONVERSION OF RADIO
`VOICE BY 4,800 BIT/SECOND CODE EXCITED LINEAR PREDICTION (CELP)
`
`This standard is issued by the General Services Administration pursuant to
`the Federal Property and Administrative Services Act of 1949, as amended.
`
`1. SCOPE
`
`1.1 Description. This standard specifies interoperability -related requirements for the conversion of
`analog voice to a 4,800 bit/s digitized form for digital radio transmission by a method known as Code
`Excited Linear Prediction (CELP) and the reverse process, the synthesis of analog voice from
`4,800 bit/s CELP-digitized voice. In addition to digital radio applications, CELP is also very suitable
`for encrypted telephone use and other applications wherein voice must be digitized prior to
`encryption.
`
`1.2 Pur~ose. This standard is to facilitate interoperability between radio telecommunication facilities
`and systems of the Federal Government.
`
`1.3 Am3]ication. This standard shall be used by all Federal departments and agencies in the design
`and procurement of all radio equipment employing 4,800 bit/s digitized voice.
`
`2. CONVENTIONS AND DEFINITIONS
`
`a. Frame. A CELP frame is 144 bits in length. A frame interval is 30 ms f.01 percent in
`duration and contains 240 voice samples (8,000 samples/s).
`
`A CELP subframe is 1/4 the length of a frame.
`b . Subframe.
`ms t.01 percent in duration and contains 60 voice samples.
`
`7.5
`
`Thus, a subframe is
`
`3.
`
`REQUIREMENTS
`
`3.1
`
`Voice Svnthesis
`
`3.1.1 General Description.
`Since Code Excited Linear Prediction (CELP) is an analysis-
`by-synthesis type of technique, voice synthesis is described first. As shown in the diagram below,
`CELP synthesis involves the excitation of a parameter-adjusted Linear Prediction Filter by the sum
`of gain-scaled codes