Fed STD 1016
Fed STD 1016
Fed STD 1016
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)
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.
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).
3. REQUIREMENTS
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.
●
Linear ;
●
●
Prediction ➤
● () Filter
●
<
Subframe
, ) Delay
O LSPS
Downloaded from http://www.everyspec.com
FED-STD 1016
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.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.
PCM Input
e (8 kHz Sampling)
CELP Synthesizer I
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.
3.2.5 Perceptual Weighting Filter. It is recommended that a perceptual weighting filter be the
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-
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
20 continue
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
real f(2), fl, f2, 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
i f ( s .ge. 1 . ) g o t o 1 0
s=sqrt(-2.*slog(s)/s)
xl=fl*s
x2=f2*s
return
end
-3-
Downloaded from http://www.everyspec.com
FED-STD 1016
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).
o, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0? -1>
0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -19 0! 03
-1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 09
0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0,
1, 0, 1, 0, -1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1,
0, 1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0? O*
o, 0, 0, -1, 0, -1, -1, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0> 1$ 0> 0>
0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 09 09 0, 03
1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0> 0? 0>
0, 0. 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, -1, 0s 1? 0> 03 0?
o, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 09 0? 09 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1! 0,
0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1> 0? 0? 03 0? 0>
0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0> 1, 0? 0, 1, 0> 0? 0, 0> -13
0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0> 0> 03 0$ 0> 1>
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-
Downloaded from http://www.everyspec.com
FED-STD 1016
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.
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.
-5-
Downloaded from http://www.everyspec.com
FED-STD 1016
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 )))
20 continue
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-
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 Adaptive Hex Adaptive Hex Adaptive Hex Adaptive Hex
Code Code Code Code Code
20.00 $42 34.67 $CO 51.67 $98 68.67 $C5 97.00 $Al
20.33 $46 35.00 $C3 52.00 $90 69.00 $C9 98.00 $97
20.67 $47 35.33 $C2 52.33 $80 69.33 $C8 99.00 $87
21.00 $57 35.67 $D2 52.67 $9A 69.67 $C7 100.0 $9F
21.33 $56 36.00 $D3 53.00 $8A 70.00 $CB 101.0 $8F
21.67 $59 36.33 $Dl 53.33 $82 70.33 $C6 102.0 $81
22.00 $58 36.67 $DO 53.67 $92 70.67 $CA 103.0 $91
22.33 $AE 37.00 $30 54.00 $lA 71.00 $D6 1 0 4 . 0 $9B
22.67 $BE 37.33 $32 54.33 $12 71.33 $DA 105.0 $8B
23.00 $BA 37.67 $3A 54.67 $00 71.67 $DB 106.0 $83
23.33 $B8 38.00 $31 55.00 $08 72.00 $D7 107.0 $93
23.67 $BC 38.33 $33 55.33 $06 72.33 $D9 108.0 $18
24.00 $AC 38.67 $3B 55.67 $OE 72.67 $D5 109.0 $10
24.33 $A8 39.00 $3F 56.00 $OF 73.00 $D8 110.0 $04
24.67 $94 39.33 $37 56.33 $07 73.33 $D4 111.0 $Oc
25.00 $84 39.67 $3E 56.67 $17 73.67 $20 112.0 $16
25.33 $8C 40.00 $36 57.00 $lF 74.00 $28 1 1 3 . 0 $lE
— 25.67 $9C 40.33 $34 57.33 $OD 74.33 $38 114.0 $14
26.00 $9E 40.67 $4A 57.67 $05 74.67 $22 1 1 5 . 0 $lC
26.25 $8E 41.00 $4B 58.00 $lD 75.00 $2A 116.0 $F9
26.50 $86 41.33 $4E 58.33 $15 75.33 $39 117.0 $ F A
26.75 $96 41.67 $4F 58.67 $FB 75.67 $29 118.0 $FD
27.00 $OA 42.00 $5F 59.00 $FF 76.00 $21 119.0 $E9
27.25 $02 42.33 $5E 59.33 $EB 76.33 $23 120.0 $FE
27.50 $OB 42.67 $5C 59.67 $EF 76.67 $2B 121.0 $E8
27.75 $03 43.00 $5D 60.00 $ED 77.00 $27 122.0 $FC
28.00 $lB 43.33 $54 60.33 $EA 77.33 $2F 123.0 $43
28.25 $13 43.67 $55 60.67 $EE 77.67 $25 124.0 $F2
28.50 $09 44.00 $50 61.00 SEC 78.00 $2D 125.0 $F6
28.75 $01 44.33 $51 61.33 $E6 78.33 $3D 126.0 $F8
29.00 $19 44.67 $AA 61.67 $E2 78.67 $35 127.0 $5B
29.25 $11 45.00 $A6 62.00 $E4 79.00 $3C 128.0 $5A
29.50 $F3 45.33 $A2 62.33 $EO 79.33 $2E 129.0 $63
29.75 $F7 45.67 $B6 62.67 $F4 79.67 $2C 130.0 $62
30.00 $E7 46.00 $B2 63.00 $FO 80.00 $26 131.0 $77
30.25 $E3 46.33 $BB 63.33 $60 81.00 $24 132.0 $76
30.50 $E5 46.67 $BO 63.67 $64 82.00 $49 133.0 $52
30.75 $El 47.00 $B9 64.00 $74 83.00 $48 134.0 $53
31.00 $Fl 47.33 $B4 64.33 $70 84.00 $4C 135.0 $66
31.25 $F5 47.67 $BD 64.67 $73 85.00 $4D 136.0 $67
31.50 $61 48.00 $A4 65.00 $72 86.00 $44 137.0 $Cc
31.75 $65 48.33 $AO 65.33 $6C 87.00 !$45 138.0 $CD
32.00 $75 48.67 $A9 65.67 $7C 88.00 $40 139.0 $AB
(continued)
- 7 -
Downloaded from http://www.everyspec.com
FED-STD 1016
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.
3.6 AdaDtive Code Gain. The relative amplitude (to the nearest table value) to be applied to the
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.
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),
on the basis of 10th order linear prediction. It is recommended that LSPS be determined with no
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-
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 LSP2 LSP3 LSP4 LSP5 LSP6 LSP7 LSP8 LSP9 LSP1O
. (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz)
0 100 210 420 620 1,000 1,470 1,800 2,225 2,760 3,190
1 170 235 460 660 1,050 1,570 1,880 2,400 2,880 3,270
2 225 265 500 720 1,130 1,690 1,960 2,525 3,000 3,350
3 250 295 540 795 1,210 1,830 2,100 2,650 3,100 3,420
4 280 325 585 880 1,285 2,000 2,300 2,800 3,200 3,490
5 340 360 640 970 1,350 2,200 2,480 2,950 3,310 3,590
6 420 400 705 1,080 1,430 2,400 2,700 3,150 3,430 3,710
7 500 440 775 1,170 1,510 2,600 2,900 3,350 3,550 3,830
8 480 850 1,270 1,590
9 520 950 1,370 1,670
10 560 1,050 1,470 1,750
11 610 1,150 1,570 1,850
12 670 1,250 1,670 1,950
13 740 1,350 1,770 2,050
14 810 1,450 1,870 2,150
15 880 1,550 1,970 2,250
.
3.7.3 LSP Weighted Averaging. To determine the LSP values to be used for each subframe,
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.
1 7/8 1/8
2 5/8 3/8
3 3/8 5/8
4 1/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.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-
Downloaded from http://www.everyspec.com
FED-STD 1016
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-
Downloaded from http://www.everyspec.com
FED-STD 1016
3.9.1 Encoding. Forward error correction of 11 bits with a (15,11) Hamming parity code is
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).
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.
3 PD(l)-5 11 PD(3)-6
5 PD(l)-6 12 PD(3)-7
6 PD( 1 )-7 13 PG(3)-4
7 PG(l)-4 14 PG(4)-4
9 PG(2)-4 15 SP
10 PD(3)-5
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-
Downloaded from http://www.everyspec.com
FED-STD 1016
PREPARING ACTIVITY:
--
-12-
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)
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.
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).
3. REQUIREMENTS
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.
●
Linear ;
●
●
Prediction ➤
● () Filter
●
<
Subframe
, ) Delay
O LSPS
Downloaded from http://www.everyspec.com
FED-STD 1016
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.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 * 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.
PCM Input
e (8 kHz Sampling)
CELP Synthesizer I
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.
3.2.5 Perceptual Weighting Filter. It is recommended that a perceptual weighting filter be the
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-
‘nm-PTTIC_lenn: illl{l K-VI-7 arnlnlt~lue. UI lrl~>~ Ucl[dlll CL CI>. LIIC VU IUIIIK UCLL>l UI1 13 lU1 WaLUCU LV LIIC VU Lt_lll K 3W1LUII IUIIGLIUII
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
20 continue
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
real f(2), fl, f2, 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
i f ( s .ge. 1 . ) g o t o 1 0
s=sqrt(-2.*slog(s)/s)
xl=fl*s
x2=f2*s
return
end
Downloaded from http://www.everyspec.com
FED-STD 1016
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).
o, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0? -1>
0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -19 0! 03
-1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 09
0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0,
1, 0, 1, 0, -1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1,
0, 1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0? O*
o, 0, 0, -1, 0, -1, -1, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
0, -1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, 0> 1$ 0> 0>
0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 09 09 0, 03
1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0> 0? 0>
0, 0. 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, -1, 0s 1? 0> 03 0?
o, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 09 0? 09 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1! 0,
0, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1> 0? 0? 03 0? 0>
0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0> 1, 0? 0, 1, 0> 0? 0, 0> -13
0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0> 0> 03 0$ 0> 1>
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-
FED-STD 1016
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.
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.
-5-
Downloaded from http://www.everyspec.com
FED-STD 1016
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 )))
20 continue
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-
xllwrlf>bl\l N1.
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 Adaptive Hex Adaptive Hex Adaptive Hex Adaptive Hex
Code Code Code Code Code
20.00 $42 34.67 $CO 51.67 $98 68.67 $C5 97.00 $Al
20.33 $46 35.00 $C3 52.00 $90 69.00 $C9 98.00 $97
20.67 $47 35.33 $C2 52.33 $80 69.33 $C8 99.00 $87
21.00 $57 35.67 $D2 52.67 $9A 69.67 $C7 100.0 $9F
21.33 $56 36.00 $D3 53.00 $8A 70.00 $CB 101.0 $8F
21.67 $59 36.33 $Dl 53.33 $82 70.33 $C6 102.0 $81
22.00 $58 36.67 $DO 53.67 $92 70.67 $CA 103.0 $91
22.33 $AE 37.00 $30 54.00 $lA 71.00 $D6 1 0 4 . 0 $9B
22.67 $BE 37.33 $32 54.33 $12 71.33 $DA 105.0 $8B
23.00 $BA 37.67 $3A 54.67 $00 71.67 $DB 106.0 $83
23.33 $B8 38.00 $31 55.00 $08 72.00 $D7 107.0 $93
23.67 $BC 38.33 $33 55.33 $06 72.33 $D9 108.0 $18
24.00 $AC 38.67 $3B 55.67 $OE 72.67 $D5 109.0 $10
24.33 $A8 39.00 $3F 56.00 $OF 73.00 $D8 110.0 $04
24.67 $94 39.33 $37 56.33 $07 73.33 $D4 111.0 $Oc
25.00 $84 39.67 $3E 56.67 $17 73.67 $20 112.0 $16
25.33 $8C 40.00 $36 57.00 $lF 74.00 $28 1 1 3 . 0 $lE
25.67 $9C 40.33 $34 57.33 $OD 74.33 $38 114.0 $14
26.00 $9E 40.67 $4A 57.67 $05 74.67 $22 1 1 5 . 0 $lC
26.25 $8E 41.00 $4B 58.00 $lD 75.00 $2A 116.0 $F9
26.50 $86 41.33 $4E 58.33 $15 75.33 $39 117.0 $ F A
26.75 $96 41.67 $4F 58.67 $FB 75.67 $29 118.0 $FD
27.00 $OA 42.00 $5F 59.00 $FF 76.00 $21 119.0 $E9
27.25 $02 42.33 $5E 59.33 $EB 76.33 $23 120.0 $FE
27.50 $OB 42.67 $5C 59.67 $EF 76.67 $2B 121.0 $E8
27.75 $03 43.00 $5D 60.00 $ED 77.00 $27 122.0 $FC
28.00 $lB 43.33 $54 60.33 $EA 77.33 $2F 123.0 $43
28.25 $13 43.67 $55 60.67 $EE 77.67 $25 124.0 $F2
28.50 $09 44.00 $50 61.00 SEC 78.00 $2D 125.0 $F6
28.75 $01 44.33 $51 61.33 $E6 78.33 $3D 126.0 $F8
29.00 $19 44.67 $AA 61.67 $E2 78.67 $35 127.0 $5B
29.25 $11 45.00 $A6 62.00 $E4 79.00 $3C 128.0 $5A
29.50 $F3 45.33 $A2 62.33 $EO 79.33 $2E 129.0 $63
29.75 $F7 45.67 $B6 62.67 $F4 79.67 $2C 130.0 $62
30.00 $E7 46.00 $B2 63.00 $FO 80.00 $26 131.0 $77
30.25 $E3 46.33 $BB 63.33 $60 81.00 $24 132.0 $76
30.50 $E5 46.67 $BO 63.67 $64 82.00 $49 133.0 $52
30.75 $El 47.00 $B9 64.00 $74 83.00 $48 134.0 $53
31.00 $Fl 47.33 $B4 64.33 $70 84.00 $4C 135.0 $66
31.25 $F5 47.67 $BD 64.67 $73 85.00 $4D 136.0 $67
31.50 $61 48.00 $A4 65.00 $72 86.00 $44 137.0 $Cc
31.75 $65 48.33 $AO 65.33 $6C 87.00 !$45 138.0 $CD
32.00 $75 48.67 $A9 65.67 $7C 88.00 $40 139.0 $AB
(continued)
- 7 -
Downloaded from http://www.everyspec.com
FED-STD 1016
32.25 $71 49.00 $AD 66.00 $68 89.00 $41 140.0 $CF
32.50 $6D 49.33 $95 66.33 $78 90.00 $A7 141.0 $CE
32.75 $7D 49.67 $85 66.67 $7A 91.00 $A3 142.0 $DE
33.00 $69 50.00 $9D 67.00 $7E 92.00 $B7 143.0 $BF
33.25 $79 50.33 $8D 67.33 $6A 93.00 $B3 144.0 $DF
33.50 $7B 50.67 $89 67.67 $6E 94.00 $Bl 145.0 $ D D
33.75 $7F 51.00 $99 68.00 $6F 95.00 $B5 146.0 $DC
34.00 $6B 51.33 $88 68.33 $C4 96.00 $A5 147.0 $AF
34.33 $Cl
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.
3.6 AdaDtive Code Gain. The relative amplitude (to the nearest table value) to be applied to the
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. A t
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.
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),
on the basis of 10th order linear prediction. It is recommended that LSPS be determined with no
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-
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 LSP1 LSP2 LSP3 LSP4 LSP5 LSP6 LSP7 LSP8 LSP9 LSP1 O
(Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz) (Hz)
o 100 210 420 620 1,000 1,470 1,800 2,225 2,760 3,190
1 170 235 460 660 1,050 1,570 1,880 2,400 2,880 3,270
2 225 265 500 720 1,130 1,690 1,960 2,525 3,000 3,350
3 250 295 540 795 1,210 1,830 2,100 2,650 3,100 3,420
4 280 325 585 880 1,285 2,000 2,300 2,800 3,200 3,490
5 340 360 640 970 1,350 2,200 2,480 2,950 3,310 3,590
6 420 400 705 1,080 1,430 2,400 2,700 3,150 3,430 3,710
7 500 440 775 1,170 1,510 2,600 2,900 3,350 3,550 3,830
8 480 850 1,270 1,590
9 520 950 1,370 1,670
10 560 1,050 1,470 1,750
11 610 1,150 I ,570 1,850
12 670 1,250 1,670 1,950
13 740 1,350 1,770 2,050
14 810 1,450 1,870 2,150
15 880 1,550 1,970 2,250
.
3.7.3 LSP Weighted Averaging. To determine the LSP values to be used for each subframe,
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.
1 7/8 1/8
2 5/8 3/8
3 3/8 5/8
4 1/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.1 Transmission Rate. The transmission rate for CELP shall be 4,800 bits/s t.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-
Downloaded from http://www.everyspec.com
FED-STD 1016
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-
Downloaded from http://www.everyspec.com
FED-STD 1016
3.9.1 Encoding. Forward error correction of 11 bits with a (15,11) Hamming parity code is
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).
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.
3 PD(l)-5 11 PD(3)-6
5 PD(l)-6 12 PD(3)-7
6 PD( 1 )-7 13 PG(3)-4
7 PG(l)-4 14 PG(4)-4
9 PG(2)-4 15 SP
10 PD(3)-5
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-
Downloaded from http://www.everyspec.com
FED-STD 1016
PREPARING ACTIVITY:
--
-12-