Updated doc about CELP
[speexdsp.git] / doc / manual.lyx
1 #LyX 1.2 created this file. For more info see http://www.lyx.org/
2 \lyxformat 220
3 \textclass article
4 \language english
5 \inputencoding auto
6 \fontscheme default
7 \graphics default
8 \float_placement h
9 \paperfontsize default
10 \spacing single 
11 \papersize Default
12 \paperpackage a4
13 \use_geometry 0
14 \use_amsmath 0
15 \use_natbib 0
16 \use_numerical_citations 0
17 \paperorientation portrait
18 \secnumdepth 3
19 \tocdepth 3
20 \paragraph_separation indent
21 \defskip medskip
22 \quotes_language english
23 \quotes_times 2
24 \papercolumns 1
25 \papersides 1
26 \paperpagestyle headings
27
28 \layout Title
29
30 The Speex Codec Manual
31 \newline 
32 (draft for Speex 1.0beta4)
33 \layout Author
34
35 Jean-Marc Valin
36 \layout Standard
37 \pagebreak_top 
38 Copyright (c) 2002 Jean-Marc Valin.
39 \layout Standard
40
41 Permission is granted to copy, distribute and/or modify this document under
42  the terms of the GNU Free Documentation License, Version 1.1 or any later
43  version published by the Free Software Foundation; with no Invariant Section,
44  with no Front-Cover Texts, and with no Back-Cover.
45  A copy of the license is included in the section entitled "GNU Free Documentati
46 on License".
47  
48 \layout Section*
49
50 Disclaimer
51 \layout Standard
52
53 This document is meant to provide useful information on the Speex codec
54  but there is absolutely no warranty regarding usefulness or correctness
55  of the information provided.
56  Also, some techniques used in Speex are said to be 
57 \begin_inset Quotes eld
58 \end_inset 
59
60 similar
61 \begin_inset Quotes erd
62 \end_inset 
63
64  to techniques used in known codecs.
65  This should not be understood as an acknowledgment that Speex is using
66  any patented algorithm used in these codecs, but merely that comprehension
67  of Speex can be facilitated by thinking that the principles of operation
68  are the same or similar.
69  Of course, there's also the obligatory 
70 \begin_inset Quotes eld
71 \end_inset 
72
73 all trademarks are property of their respective owner
74 \begin_inset Quotes erd
75 \end_inset 
76
77 .
78 \layout Standard
79 \pagebreak_top \pagebreak_bottom 
80
81 \begin_inset LatexCommand \tableofcontents{}
82
83 \end_inset 
84
85
86 \layout Standard
87 \pagebreak_bottom 
88
89 \begin_inset FloatList table
90
91 \end_inset 
92
93
94 \layout Section
95
96 Introduction to Speex
97 \layout Standard
98
99 The Speex project (
100 \family typewriter 
101 http://www.speex.org/
102 \family default 
103 ) has been started because there was a need for a speech codec that was
104  open-source and free from software patents.
105  These are essential conditions for being used by any open-source software.
106  There is already Vorbis that does general audio, but it is not really suitable
107  for speech.
108  Also, unlike many other speech codecs, Speex is not targeted at cell phones
109  (not many open-source cell phones anyway :-) ) but rather voice over IP
110  (VoIP) and file-based compression.
111  
112 \layout Standard
113
114 As design goals, we wanted to have a codec that would allowed both very
115  good quality speech and low bit-rate (unfortunately not at the same time!),
116  which led us to developing a codec with multiple bit-rates.
117  Of course very good quality also meant we had to do wideband (16 kHz sampling
118  rate) in addition to narrowband (telephone quality, 8 kHz sampling rate).
119 \layout Standard
120
121 Designing for VoIP instead of cell phone use means that Speex must be robust
122  to lost packets, but not to corrupted ones since packets either arrive
123  unaltered or don't arrive at all.
124  Also, the idea was to have a reasonnable complexity and memory requirement
125  without compromising too much on the efficiency of the codec.
126 \layout Standard
127
128 All this led us to the choice of CELP
129 \begin_inset LatexCommand \index{CELP}
130
131 \end_inset 
132
133  as the encoding technique to use for Speex.
134  One of the main reasons is that CELP has long proved that it could do the
135  job and scale well to both low bit-rates (think DoD CELP @ 4.8 kbps) and
136  high bit-rates (think G.728 @ 16 kbps).
137  
138 \layout Standard
139
140 The main characteristics can be summerized as follows:
141 \layout Itemize
142
143 Free software/open-source
144 \begin_inset LatexCommand \index{open-source}
145
146 \end_inset 
147
148 , patent
149 \begin_inset LatexCommand \index{patent}
150
151 \end_inset 
152
153  and royalty-free
154 \layout Itemize
155
156 Integration of wideband
157 \begin_inset LatexCommand \index{wideband}
158
159 \end_inset 
160
161  and narrowband
162 \begin_inset LatexCommand \index{narrowband}
163
164 \end_inset 
165
166  in the same bit-stream
167 \layout Itemize
168
169 Wide range of bit-rates available
170 \layout Itemize
171
172 Dynamic bit-rate switching and Variable Bit-Rate
173 \begin_inset LatexCommand \index{variable bit-rate}
174
175 \end_inset 
176
177  (VBR)
178 \layout Itemize
179
180 Voice Activity Detection
181 \begin_inset LatexCommand \index{voice activity detection}
182
183 \end_inset 
184
185  (VAD, integrated with VBR)
186 \layout Itemize
187
188 Variable complexity
189 \begin_inset LatexCommand \index{complexity}
190
191 \end_inset 
192
193
194 \layout Itemize
195
196 Ultra-wideband mode at 32 kHz (up to 48 kHz)
197 \layout Itemize
198
199 Intensity stereo encoding option
200 \layout Section
201 \pagebreak_top 
202 Introduction to CELP Coding
203 \begin_inset LatexCommand \index{CELP}
204
205 \end_inset 
206
207
208 \layout Standard
209
210 Speex is based on CELP, which stands for Code Excited Linear Prediction.
211  This section attempts to introduce the principles behind CELP, so if you
212  are already familiar with CELP, you can safely skip to section 
213 \begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
214
215 \end_inset 
216
217 .
218  The CELP technique is based on three ideas:
219 \layout Enumerate
220
221 The use of a linear prediction (LP) model to model the vocal tract
222 \layout Enumerate
223
224 The use of (adaptive and fixed) codebook entries as input (excitation) of
225  the LP model
226 \layout Enumerate
227
228 The search performed in closed-loop in a 
229 \begin_inset Quotes eld
230 \end_inset 
231
232 perceptually weighted domain
233 \begin_inset Quotes erd
234 \end_inset 
235
236
237 \layout Subsection
238
239 Linear Prediction (LPC)
240 \begin_inset LatexCommand \index{linear prediction}
241
242 \end_inset 
243
244
245 \layout Standard
246
247 Linear prediction is at the base of may speech coding techniques, including
248  CELP.
249  The idea behind it is to predict the signal 
250 \begin_inset Formula $x(n)$
251 \end_inset 
252
253  using a linear combination of its past samples:
254 \layout Standard
255
256
257 \begin_inset Formula \[
258 y[n]=\sum _{i=1}^{N}a_{i}x[n-i]\]
259
260 \end_inset 
261
262 where 
263 \begin_inset Formula $y[n]$
264 \end_inset 
265
266  is the linear prediction of 
267 \begin_inset Formula $x[n]$
268 \end_inset 
269
270 .
271  The prediction error is thus given by:
272 \begin_inset Formula \[
273 e[n]=x[n]-y[n]=x[n]-\sum _{i=1}^{N}a_{i}x[n-i]\]
274
275 \end_inset 
276
277
278 \layout Standard
279
280 The goal of the LPC analysis is to find the best prediction coefficients
281  
282 \begin_inset Formula $a_{i}$
283 \end_inset 
284
285  which minimize the quadratic error function:
286 \begin_inset Formula \[
287 E=\sum _{n=0}^{L-1}\left[e[n]\right]^{2}=\sum _{n=0}^{L-1}\left[x[n]-\sum _{i=1}^{N}a_{i}x[n-i]\right]^{2}\]
288
289 \end_inset 
290
291 That can be done by making all derivatives 
292 \begin_inset Formula $\frac{\partial E}{\partial a_{i}}$
293 \end_inset 
294
295  equal to zero:
296 \begin_inset Formula \[
297 \frac{\partial E}{\partial a_{i}}=\frac{\partial }{\partial a_{i}}\sum _{n=0}^{L-1}\left[x[n]-\sum _{i=1}^{N}a_{i}x[n-i]\right]^{2}=0\]
298
299 \end_inset 
300
301
302 \layout Standard
303
304 The 
305 \begin_inset Formula $a_{i}$
306 \end_inset 
307
308  filter coefficients are computed using the Levinson-Durbin
309 \begin_inset LatexCommand \index{Levinson-Durbin}
310
311 \end_inset 
312
313  algorithm, which starts from the auto-correlation
314 \begin_inset LatexCommand \index{auto-correlation}
315
316 \end_inset 
317
318  
319 \begin_inset Formula $R(m)$
320 \end_inset 
321
322  of the signal 
323 \begin_inset Formula $x[n]$
324 \end_inset 
325
326 .
327 \layout Standard
328
329
330 \begin_inset Formula \[
331 R(m)=\sum _{i=0}^{N-1}x[i]x[i-m]\]
332
333 \end_inset 
334
335
336 \layout Standard
337
338 For an order 
339 \begin_inset Formula $N$
340 \end_inset 
341
342  filter, we have:
343 \begin_inset Formula \[
344 \mathbf{R}=\left[\begin{array}{cccc}
345  R(0) & R(1) & \cdots  & R(N-1)\\
346  R(1) & R(0) & \cdots  & R(N-2)\\
347  \vdots  & \vdots  & \ddots  & \vdots \\
348  R(N-1) & R(N-2) & \cdots  & R(0)\end{array}
349 \right]\]
350
351 \end_inset 
352
353
354 \begin_inset Formula \[
355 \mathbf{r}=\left[\begin{array}{c}
356  R(1)\\
357  R(2)\\
358  \vdots \\
359  R(N)\end{array}
360 \right]\]
361
362 \end_inset 
363
364
365 \layout Standard
366
367 The filter coefficients 
368 \begin_inset Formula $a_{i}$
369 \end_inset 
370
371  are found by solving the system 
372 \begin_inset Formula $\mathbf{Ra}=\mathbf{r}$
373 \end_inset 
374
375 .
376  What the Levinson-Durbin algorithm does here is making the solution to
377  the problem 
378 \begin_inset Formula $\mathcal{O}\left(N^{2}\right)$
379 \end_inset 
380
381  instead of 
382 \begin_inset Formula $\mathcal{O}\left(N^{3}\right)$
383 \end_inset 
384
385  by exploiting the fact that matrix 
386 \begin_inset Formula $\mathbf{R}$
387 \end_inset 
388
389  is toeplitz hermitian.
390  Also, it can be proved that all the roots of 
391 \begin_inset Formula $A(z)$
392 \end_inset 
393
394  are withing the unit circle, which means that 
395 \begin_inset Formula $1/A(z)$
396 \end_inset 
397
398  is always stable.
399  This is in theory; in practice because of finite precision, there are two
400  commonly used techniques to make sure we have a stable filter.
401  First, we multiply 
402 \begin_inset Formula $R(0)$
403 \end_inset 
404
405  by a number slightly above one (such as 1.0001), which is equivalent to
406  adding noise to the signal.
407  Also, we can apply a window the the auto-correlation, which is equivalent
408  to filtering in the frequency domain, reducing sharp resonances.
409 \layout Standard
410
411 The linear prediction model represents each speech sample as linear combination
412  of past samples, plus an error signal called the excitation (or residual).
413 \begin_inset Formula \[
414 x[n]=\sum _{i=1}^{N}a_{i}x[n-i]+e[n]\]
415
416 \end_inset 
417
418
419 \layout Standard
420
421 In the 
422 \emph on 
423 z
424 \emph default 
425 -domain, this can be expressed as
426 \layout Standard
427
428
429 \begin_inset Formula \[
430 x(z)=\frac{1}{A(z)}\: e(z)\]
431
432 \end_inset 
433
434
435 \layout Standard
436
437 where 
438 \begin_inset Formula $A(z)$
439 \end_inset 
440
441  is defined as
442 \layout Standard
443
444
445 \begin_inset Formula \[
446 A(z)=1-\sum _{i=1}^{N}a_{i}z^{-i}\]
447
448 \end_inset 
449
450
451 \layout Standard
452
453 We usually refer to 
454 \begin_inset Formula $A(z)$
455 \end_inset 
456
457  as the analysis filter and 
458 \begin_inset Formula $1/A(z)$
459 \end_inset 
460
461  as the synthesis filter.
462  The whole process is called short-term prediction as it predicts the signal
463  
464 \begin_inset Formula $x[n]$
465 \end_inset 
466
467  using a prediction using only the 
468 \begin_inset Formula $N$
469 \end_inset 
470
471  past samples, where 
472 \begin_inset Formula $N$
473 \end_inset 
474
475  is usually around 10.
476 \layout Standard
477
478 Because LPC coefficients have very little robustness to quantization, they
479  are converted to Line Spectral Pair
480 \begin_inset LatexCommand \index{line spectral pair}
481
482 \end_inset 
483
484  (LSP) coefficients which have a much better behaviour with quantization,
485  one of them being that it's easy to keep the filter stable.
486  
487 \layout Subsection
488
489 Pitch Prediction
490 \begin_inset LatexCommand \index{pitch}
491
492 \end_inset 
493
494
495 \layout Standard
496
497 During voiced segments, the speech signal is very periodic, so it is possible
498  to take advantage of that by expressing the excitation signal 
499 \begin_inset Formula $e(n)$
500 \end_inset 
501
502  as
503 \layout Standard
504
505
506 \begin_inset Formula \[
507 e[n]=\beta e[n-T]+c[n]\]
508
509 \end_inset 
510
511
512 \layout Standard
513
514 where 
515 \begin_inset Formula $T$
516 \end_inset 
517
518  is the pitch period, 
519 \begin_inset Formula $\beta $
520 \end_inset 
521
522  is the pitch gain and 
523 \begin_inset Formula $c(n)$
524 \end_inset 
525
526  is taken from the 
527 \emph on 
528 innovation codebook
529 \emph default 
530 .
531  In the 
532 \emph on 
533 z
534 \emph default 
535 -domain, the excitation can be expressed as:
536 \layout Standard
537
538
539 \begin_inset Formula \[
540 e(z)=\frac{1}{1-\beta z^{-T}}\: c(z)\]
541
542 \end_inset 
543
544
545 \layout Subsection
546
547 Innovation Codebook
548 \layout Standard
549
550 This is where most of the bits in a CELP codec are allocated.
551  It represents the information that couldn't be obtained either from linear
552  prediction or pitch prediction.
553 \layout Subsection
554
555 Analysis-by-Synthesis and Error Weighting
556 \begin_inset LatexCommand \index{error weighting}
557
558 \end_inset 
559
560
561 \begin_inset LatexCommand \index{analysis-by-synthesis}
562
563 \end_inset 
564
565
566 \layout Standard
567
568 Most (if not all) modern audio codecs attempt to 
569 \begin_inset Quotes eld
570 \end_inset 
571
572 shape
573 \begin_inset Quotes erd
574 \end_inset 
575
576  the noise so that it appears mostly in the frequency regions where the
577  ear cannot detect it.
578  For example, the ear is more tolerant to noise in parts of the spectrum
579  that are louder and 
580 \emph on 
581 vice versa
582 \emph default 
583 .
584  That's why instead of minimizing the simple quadratic error
585 \begin_inset Formula \[
586 E=\sum _{n}\left(x[n]-\overline{x}[n]\right)^{2}\]
587
588 \end_inset 
589
590 where 
591 \begin_inset Formula $\overline{x}[n]$
592 \end_inset 
593
594  is the encoder signal, we minimize the error for the perceptually weighted
595  signal
596 \begin_inset Formula \[
597 X_{w}(z)=W(z)X(z)\]
598
599 \end_inset 
600
601 where 
602 \begin_inset Formula $W(z)$
603 \end_inset 
604
605  is the weighting filter, usually of the form
606 \layout Standard
607
608
609 \begin_inset Formula \begin{equation}
610 W(z)=\frac{A\left(\frac{z}{\gamma _{1}}\right)}{A\left(\frac{z}{\gamma _{2}}\right)}\label{eq:weighting_filter}\end{equation}
611
612 \end_inset 
613
614
615 \layout Standard
616
617 with control parameters 
618 \begin_inset Formula $\gamma _{1}>\gamma _{2}$
619 \end_inset 
620
621 .
622  If the noise is white in the perceptually weighted domain, then in the
623  signal domain its spectral shape will be of the form
624 \begin_inset Formula \[
625 A_{noise}(z)=\frac{1}{W(z)}=\frac{A\left(\frac{z}{\gamma _{2}}\right)}{A\left(\frac{z}{\gamma _{1}}\right)}\]
626
627 \end_inset 
628
629
630 \layout Standard
631
632 If a filter 
633 \begin_inset Formula $A(z)$
634 \end_inset 
635
636  has (complex) poles at 
637 \begin_inset Formula $p_{i}$
638 \end_inset 
639
640  in the 
641 \begin_inset Formula $z$
642 \end_inset 
643
644 -plane, the filter 
645 \begin_inset Formula $A(z/\gamma )$
646 \end_inset 
647
648  filter will have its poles at 
649 \begin_inset Formula $p_{i}^{'}=\gamma p_{i}$
650 \end_inset 
651
652 , making it a flatter version of 
653 \begin_inset Formula $A(z)$
654 \end_inset 
655
656 .
657 \layout Section
658 \pagebreak_top 
659 Speex narrowband mode
660 \begin_inset LatexCommand \label{sec:Speex-narrowband-mode}
661
662 \end_inset 
663
664
665 \begin_inset LatexCommand \index{narrowband}
666
667 \end_inset 
668
669
670 \layout Standard
671
672 This section looks at how Speex works for narrowband (
673 \begin_inset Formula $8\: \mathrm{kHz}$
674 \end_inset 
675
676  sampling rate) operation.
677  The frame size for this mode is 
678 \begin_inset Formula $20\: \mathrm{ms}$
679 \end_inset 
680
681 , corresponding to 160 samples.
682  Each frame is also subdivided into 4 sub-frames of 40 samples each.
683 \layout Standard
684
685 Also many design decisions were based on the original goals and assumptions:
686 \layout Itemize
687
688 Minimizing the amount of information extracted from past frames (for robustness
689  to packet loss)
690 \layout Itemize
691
692 Dynamically-selectable codebooks (LSP, pitch and innovation)
693 \layout Itemize
694
695 G.728-like fixed codebooks (without backward-adaptive gains because of patent
696  issues)
697 \layout Subsection
698
699 LPC Analysis
700 \begin_inset LatexCommand \index{linear prediction}
701
702 \end_inset 
703
704
705 \layout Standard
706
707 An LPC analysis is first performed on a (asymetric Hamming) window that
708  spans all the current frame and half a frame in advance.
709  The LPC coefficients are then converted to Line Spectral Pair
710 \begin_inset LatexCommand \index{line spectral pair}
711
712 \end_inset 
713
714  (LSP), a representation that is more robust to quantization.
715  The LSP's are considered to be associated to the 
716 \begin_inset Formula $4^{th}$
717 \end_inset 
718
719  sub-frames and the LSP's associated to the first 3 sub-frames are linearly
720  interpolated using the current and previous LSP's.
721 \layout Standard
722
723 The LSP's are encoded using 30 bits for higher quality modes and 18 bits
724  for lower quality, through the use of a multi-stage split-vector quantizer.
725  For the lower quality modes, the 10 coefficients are first quantized with
726  6 bits and the error is then divided in two 5-coefficient sub-vectors.
727  Each of them is quantized with 6 bits, for a total of 18 bits.
728  For the higher quality modes, the remaining error on both sub-vectors is
729  further quantized with 6 bits each, for a total of 30 bits.
730 \layout Standard
731
732 The perceptual weighting filter 
733 \begin_inset Formula $W(z)$
734 \end_inset 
735
736  used by Speex is derived from the LPC filter 
737 \begin_inset Formula $A(z)$
738 \end_inset 
739
740  and corresponds to the one described by eq.
741  
742 \begin_inset LatexCommand \ref{eq:weighting_filter}
743
744 \end_inset 
745
746  with 
747 \begin_inset Formula $\gamma _{1}=0.9$
748 \end_inset 
749
750  and 
751 \begin_inset Formula $\gamma _{2}=0.6$
752 \end_inset 
753
754 .
755  We can use the unquantized 
756 \begin_inset Formula $A(z)$
757 \end_inset 
758
759  filter since the weighting filter is only used in the encoder.
760 \layout Subsection
761
762 Pitch Prediction (adaptive codebook)
763 \begin_inset LatexCommand \index{pitch}
764
765 \end_inset 
766
767
768 \layout Standard
769
770 Speex uses a 3-tap prediction for pitch.
771  That is, the pitch prediction signal 
772 \begin_inset Formula $p[n]$
773 \end_inset 
774
775  is obtained by the past of the excitation by:
776 \begin_inset Formula \[
777 p[n]=\beta _{0}e[n-T-1]+\beta _{1}e[n-T]+\beta _{2}e[n-T+1]\]
778
779 \end_inset 
780
781
782 \layout Standard
783
784 where 
785 \begin_inset Formula $T$
786 \end_inset 
787
788  is the pitch period and the 
789 \begin_inset Formula $\beta _{i}$
790 \end_inset 
791
792  are the prediction (filter) taps.
793  It is worth noting that when the pitch is smaller than the sub-frame size,
794  we repeat the excitation at a period 
795 \begin_inset Formula $T$
796 \end_inset 
797
798 .
799  For example, when 
800 \begin_inset Formula $n-T+1$
801 \end_inset 
802
803 , we use 
804 \begin_inset Formula $n-2T+1$
805 \end_inset 
806
807  instead.
808  The period and quantized gains are determined in closed loop.
809  In most modes, the pitch period is encoded with 7 bits in the 
810 \begin_inset Formula $\left[17,144\right]$
811 \end_inset 
812
813  range and the 
814 \begin_inset Formula $\beta _{i}$
815 \end_inset 
816
817  coefficients are vector-quantized using 7 bits (15 kbps narrowband and
818  above) at higher bit-rates and 5 bits at lower bit-rates (11 kbps narrowband
819  and below).
820 \layout Subsection
821
822 Innovation Codebook
823 \layout Standard
824
825 In Speex, the innovation signal is quantized using shape-only vector quantizatio
826 n (VQ).
827  That means that the codebooks that are used represent both the shape and
828  the gain at the same time.
829  This save many bits that would otherwise be allocated for a separate gain
830  at the price of a slight increase in complexity.
831  Except for the absence of (backward-adaptive) gain, the technique used
832  in Speex is similar to G.728 (LD-CELP).
833  However since we do not have a low-delay constraint, the search can be
834  made more 
835 \begin_inset Quotes eld
836 \end_inset 
837
838 global
839 \begin_inset Quotes erd
840 \end_inset 
841
842  and make use of the whole information available for a sub-frame.
843 \layout Subsection
844
845 Bit allocation
846 \layout Standard
847
848 There are 7 different narrowband bit-rates defined for Speex, ranging from
849  200 bps to 18.15 kbps, although the modes below 5.9 kbps should not be used
850  for speech.
851  The bit-allocation for each mode is detailed in table 
852 \begin_inset LatexCommand \ref{cap:bits-narrowband}
853
854 \end_inset 
855
856 .
857  Each frame starts with the mode ID encoded with 4 bits which allows a range
858  from 0 to 15, though only the first 7 values are used (the others are reserved).
859  The parameters are listed in the table in the order they are packed in
860  the bit-stream.
861  All frame-based parameters are packed before sub-frame parameters.
862  The parameters for a certain sub-frame are all packed before the following
863  sub-frame is packed.
864  Note that the 
865 \begin_inset Quotes eld
866 \end_inset 
867
868 OL
869 \begin_inset Quotes erd
870 \end_inset 
871
872  in the parameter description means the the parameter is an open loop estimation
873  based on the whole frame.
874 \layout Standard
875
876
877 \begin_inset Float table
878 placement h
879 wide true
880 collapsed false
881
882 \layout Standard
883
884
885 \begin_inset  Tabular
886 <lyxtabular version="3" rows="12" columns="10">
887 <features>
888 <column alignment="center" valignment="top" leftline="true" width="0pt">
889 <column alignment="center" valignment="top" leftline="true" width="0pt">
890 <column alignment="center" valignment="top" leftline="true" width="0pt">
891 <column alignment="center" valignment="top" leftline="true" width="0pt">
892 <column alignment="center" valignment="top" leftline="true" width="0pt">
893 <column alignment="center" valignment="top" leftline="true" width="0pt">
894 <column alignment="center" valignment="top" leftline="true" width="0pt">
895 <column alignment="center" valignment="top" leftline="true" width="0pt">
896 <column alignment="center" valignment="top" leftline="true" width="0pt">
897 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
898 <row topline="true" bottomline="true">
899 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
900 \begin_inset Text
901
902 \layout Standard
903
904 Parameter
905 \end_inset 
906 </cell>
907 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
908 \begin_inset Text
909
910 \layout Standard
911
912 Update rate
913 \end_inset 
914 </cell>
915 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
916 \begin_inset Text
917
918 \layout Standard
919
920 0
921 \end_inset 
922 </cell>
923 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
924 \begin_inset Text
925
926 \layout Standard
927
928 1
929 \end_inset 
930 </cell>
931 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
932 \begin_inset Text
933
934 \layout Standard
935
936 2
937 \end_inset 
938 </cell>
939 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
940 \begin_inset Text
941
942 \layout Standard
943
944 3
945 \end_inset 
946 </cell>
947 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
948 \begin_inset Text
949
950 \layout Standard
951
952 4
953 \end_inset 
954 </cell>
955 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
956 \begin_inset Text
957
958 \layout Standard
959
960 5
961 \end_inset 
962 </cell>
963 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
964 \begin_inset Text
965
966 \layout Standard
967
968 6
969 \end_inset 
970 </cell>
971 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
972 \begin_inset Text
973
974 \layout Standard
975
976 7
977 \end_inset 
978 </cell>
979 </row>
980 <row topline="true">
981 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
982 \begin_inset Text
983
984 \layout Standard
985
986 Wideband bit
987 \end_inset 
988 </cell>
989 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
990 \begin_inset Text
991
992 \layout Standard
993
994 frame
995 \end_inset 
996 </cell>
997 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
998 \begin_inset Text
999
1000 \layout Standard
1001
1002 1
1003 \end_inset 
1004 </cell>
1005 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1006 \begin_inset Text
1007
1008 \layout Standard
1009
1010 1
1011 \end_inset 
1012 </cell>
1013 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1014 \begin_inset Text
1015
1016 \layout Standard
1017
1018 1
1019 \end_inset 
1020 </cell>
1021 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1022 \begin_inset Text
1023
1024 \layout Standard
1025
1026 1
1027 \end_inset 
1028 </cell>
1029 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1030 \begin_inset Text
1031
1032 \layout Standard
1033
1034 1
1035 \end_inset 
1036 </cell>
1037 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1038 \begin_inset Text
1039
1040 \layout Standard
1041
1042 1
1043 \end_inset 
1044 </cell>
1045 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1046 \begin_inset Text
1047
1048 \layout Standard
1049
1050 1
1051 \end_inset 
1052 </cell>
1053 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1054 \begin_inset Text
1055
1056 \layout Standard
1057
1058 1
1059 \end_inset 
1060 </cell>
1061 </row>
1062 <row topline="true">
1063 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1064 \begin_inset Text
1065
1066 \layout Standard
1067
1068 Mode ID
1069 \end_inset 
1070 </cell>
1071 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1072 \begin_inset Text
1073
1074 \layout Standard
1075
1076 frame
1077 \end_inset 
1078 </cell>
1079 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1080 \begin_inset Text
1081
1082 \layout Standard
1083
1084 4
1085 \end_inset 
1086 </cell>
1087 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1088 \begin_inset Text
1089
1090 \layout Standard
1091
1092 4
1093 \end_inset 
1094 </cell>
1095 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1096 \begin_inset Text
1097
1098 \layout Standard
1099
1100 4
1101 \end_inset 
1102 </cell>
1103 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1104 \begin_inset Text
1105
1106 \layout Standard
1107
1108 4
1109 \end_inset 
1110 </cell>
1111 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1112 \begin_inset Text
1113
1114 \layout Standard
1115
1116 4
1117 \end_inset 
1118 </cell>
1119 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1120 \begin_inset Text
1121
1122 \layout Standard
1123
1124 4
1125 \end_inset 
1126 </cell>
1127 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1128 \begin_inset Text
1129
1130 \layout Standard
1131
1132 4
1133 \end_inset 
1134 </cell>
1135 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1136 \begin_inset Text
1137
1138 \layout Standard
1139
1140 4
1141 \end_inset 
1142 </cell>
1143 </row>
1144 <row topline="true">
1145 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1146 \begin_inset Text
1147
1148 \layout Standard
1149
1150 LSP
1151 \end_inset 
1152 </cell>
1153 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1154 \begin_inset Text
1155
1156 \layout Standard
1157
1158 frame
1159 \end_inset 
1160 </cell>
1161 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1162 \begin_inset Text
1163
1164 \layout Standard
1165
1166 0
1167 \end_inset 
1168 </cell>
1169 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1170 \begin_inset Text
1171
1172 \layout Standard
1173
1174 18
1175 \end_inset 
1176 </cell>
1177 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1178 \begin_inset Text
1179
1180 \layout Standard
1181
1182 18
1183 \end_inset 
1184 </cell>
1185 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1186 \begin_inset Text
1187
1188 \layout Standard
1189
1190 18
1191 \end_inset 
1192 </cell>
1193 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1194 \begin_inset Text
1195
1196 \layout Standard
1197
1198 18
1199 \end_inset 
1200 </cell>
1201 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1202 \begin_inset Text
1203
1204 \layout Standard
1205
1206 30
1207 \end_inset 
1208 </cell>
1209 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1210 \begin_inset Text
1211
1212 \layout Standard
1213
1214 30
1215 \end_inset 
1216 </cell>
1217 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1218 \begin_inset Text
1219
1220 \layout Standard
1221
1222 30
1223 \end_inset 
1224 </cell>
1225 </row>
1226 <row topline="true">
1227 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1228 \begin_inset Text
1229
1230 \layout Standard
1231
1232 OL pitch
1233 \end_inset 
1234 </cell>
1235 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1236 \begin_inset Text
1237
1238 \layout Standard
1239
1240 frame
1241 \end_inset 
1242 </cell>
1243 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1244 \begin_inset Text
1245
1246 \layout Standard
1247
1248 0
1249 \end_inset 
1250 </cell>
1251 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1252 \begin_inset Text
1253
1254 \layout Standard
1255
1256 7
1257 \end_inset 
1258 </cell>
1259 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1260 \begin_inset Text
1261
1262 \layout Standard
1263
1264 7
1265 \end_inset 
1266 </cell>
1267 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1268 \begin_inset Text
1269
1270 \layout Standard
1271
1272 0
1273 \end_inset 
1274 </cell>
1275 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1276 \begin_inset Text
1277
1278 \layout Standard
1279
1280 0
1281 \end_inset 
1282 </cell>
1283 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1284 \begin_inset Text
1285
1286 \layout Standard
1287
1288 0
1289 \end_inset 
1290 </cell>
1291 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1292 \begin_inset Text
1293
1294 \layout Standard
1295
1296 0
1297 \end_inset 
1298 </cell>
1299 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1300 \begin_inset Text
1301
1302 \layout Standard
1303
1304 0
1305 \end_inset 
1306 </cell>
1307 </row>
1308 <row topline="true">
1309 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1310 \begin_inset Text
1311
1312 \layout Standard
1313
1314 OL pitch gain
1315 \end_inset 
1316 </cell>
1317 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1318 \begin_inset Text
1319
1320 \layout Standard
1321
1322 frame
1323 \end_inset 
1324 </cell>
1325 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1326 \begin_inset Text
1327
1328 \layout Standard
1329
1330 0
1331 \end_inset 
1332 </cell>
1333 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1334 \begin_inset Text
1335
1336 \layout Standard
1337
1338 4
1339 \end_inset 
1340 </cell>
1341 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1342 \begin_inset Text
1343
1344 \layout Standard
1345
1346 0
1347 \end_inset 
1348 </cell>
1349 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1350 \begin_inset Text
1351
1352 \layout Standard
1353
1354 0
1355 \end_inset 
1356 </cell>
1357 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1358 \begin_inset Text
1359
1360 \layout Standard
1361
1362 0
1363 \end_inset 
1364 </cell>
1365 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1366 \begin_inset Text
1367
1368 \layout Standard
1369
1370 0
1371 \end_inset 
1372 </cell>
1373 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1374 \begin_inset Text
1375
1376 \layout Standard
1377
1378 0
1379 \end_inset 
1380 </cell>
1381 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1382 \begin_inset Text
1383
1384 \layout Standard
1385
1386 0
1387 \end_inset 
1388 </cell>
1389 </row>
1390 <row topline="true">
1391 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1392 \begin_inset Text
1393
1394 \layout Standard
1395
1396 OL Exc gain
1397 \end_inset 
1398 </cell>
1399 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1400 \begin_inset Text
1401
1402 \layout Standard
1403
1404 frame
1405 \end_inset 
1406 </cell>
1407 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1408 \begin_inset Text
1409
1410 \layout Standard
1411
1412 0
1413 \end_inset 
1414 </cell>
1415 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1416 \begin_inset Text
1417
1418 \layout Standard
1419
1420 5
1421 \end_inset 
1422 </cell>
1423 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1424 \begin_inset Text
1425
1426 \layout Standard
1427
1428 5
1429 \end_inset 
1430 </cell>
1431 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1432 \begin_inset Text
1433
1434 \layout Standard
1435
1436 5
1437 \end_inset 
1438 </cell>
1439 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1440 \begin_inset Text
1441
1442 \layout Standard
1443
1444 5
1445 \end_inset 
1446 </cell>
1447 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1448 \begin_inset Text
1449
1450 \layout Standard
1451
1452 5
1453 \end_inset 
1454 </cell>
1455 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1456 \begin_inset Text
1457
1458 \layout Standard
1459
1460 5
1461 \end_inset 
1462 </cell>
1463 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1464 \begin_inset Text
1465
1466 \layout Standard
1467
1468 5
1469 \end_inset 
1470 </cell>
1471 </row>
1472 <row topline="true">
1473 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1474 \begin_inset Text
1475
1476 \layout Standard
1477
1478 Fine pitch
1479 \end_inset 
1480 </cell>
1481 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1482 \begin_inset Text
1483
1484 \layout Standard
1485
1486 sub-frame
1487 \end_inset 
1488 </cell>
1489 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1490 \begin_inset Text
1491
1492 \layout Standard
1493
1494 0
1495 \end_inset 
1496 </cell>
1497 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1498 \begin_inset Text
1499
1500 \layout Standard
1501
1502 0
1503 \end_inset 
1504 </cell>
1505 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1506 \begin_inset Text
1507
1508 \layout Standard
1509
1510 0
1511 \end_inset 
1512 </cell>
1513 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1514 \begin_inset Text
1515
1516 \layout Standard
1517
1518 7
1519 \end_inset 
1520 </cell>
1521 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1522 \begin_inset Text
1523
1524 \layout Standard
1525
1526 7
1527 \end_inset 
1528 </cell>
1529 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1530 \begin_inset Text
1531
1532 \layout Standard
1533
1534 7
1535 \end_inset 
1536 </cell>
1537 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1538 \begin_inset Text
1539
1540 \layout Standard
1541
1542 7
1543 \end_inset 
1544 </cell>
1545 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1546 \begin_inset Text
1547
1548 \layout Standard
1549
1550 7
1551 \end_inset 
1552 </cell>
1553 </row>
1554 <row topline="true">
1555 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1556 \begin_inset Text
1557
1558 \layout Standard
1559
1560 Pitch gain
1561 \end_inset 
1562 </cell>
1563 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1564 \begin_inset Text
1565
1566 \layout Standard
1567
1568 sub-frame
1569 \end_inset 
1570 </cell>
1571 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1572 \begin_inset Text
1573
1574 \layout Standard
1575
1576 0
1577 \end_inset 
1578 </cell>
1579 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1580 \begin_inset Text
1581
1582 \layout Standard
1583
1584 0
1585 \end_inset 
1586 </cell>
1587 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1588 \begin_inset Text
1589
1590 \layout Standard
1591
1592 5
1593 \end_inset 
1594 </cell>
1595 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1596 \begin_inset Text
1597
1598 \layout Standard
1599
1600 5
1601 \end_inset 
1602 </cell>
1603 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1604 \begin_inset Text
1605
1606 \layout Standard
1607
1608 5
1609 \end_inset 
1610 </cell>
1611 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1612 \begin_inset Text
1613
1614 \layout Standard
1615
1616 7
1617 \end_inset 
1618 </cell>
1619 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1620 \begin_inset Text
1621
1622 \layout Standard
1623
1624 7
1625 \end_inset 
1626 </cell>
1627 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1628 \begin_inset Text
1629
1630 \layout Standard
1631
1632 7
1633 \end_inset 
1634 </cell>
1635 </row>
1636 <row topline="true">
1637 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1638 \begin_inset Text
1639
1640 \layout Standard
1641
1642 Innovation gain
1643 \end_inset 
1644 </cell>
1645 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1646 \begin_inset Text
1647
1648 \layout Standard
1649
1650 sub-frame
1651 \end_inset 
1652 </cell>
1653 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1654 \begin_inset Text
1655
1656 \layout Standard
1657
1658 0
1659 \end_inset 
1660 </cell>
1661 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1662 \begin_inset Text
1663
1664 \layout Standard
1665
1666 1
1667 \end_inset 
1668 </cell>
1669 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1670 \begin_inset Text
1671
1672 \layout Standard
1673
1674 0
1675 \end_inset 
1676 </cell>
1677 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1678 \begin_inset Text
1679
1680 \layout Standard
1681
1682 1
1683 \end_inset 
1684 </cell>
1685 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1686 \begin_inset Text
1687
1688 \layout Standard
1689
1690 1
1691 \end_inset 
1692 </cell>
1693 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1694 \begin_inset Text
1695
1696 \layout Standard
1697
1698 3
1699 \end_inset 
1700 </cell>
1701 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1702 \begin_inset Text
1703
1704 \layout Standard
1705
1706 3
1707 \end_inset 
1708 </cell>
1709 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1710 \begin_inset Text
1711
1712 \layout Standard
1713
1714 3
1715 \end_inset 
1716 </cell>
1717 </row>
1718 <row topline="true" bottomline="true">
1719 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1720 \begin_inset Text
1721
1722 \layout Standard
1723
1724 Innovation VQ
1725 \end_inset 
1726 </cell>
1727 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1728 \begin_inset Text
1729
1730 \layout Standard
1731
1732 sub-frame
1733 \end_inset 
1734 </cell>
1735 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1736 \begin_inset Text
1737
1738 \layout Standard
1739
1740 0
1741 \end_inset 
1742 </cell>
1743 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1744 \begin_inset Text
1745
1746 \layout Standard
1747
1748 0
1749 \end_inset 
1750 </cell>
1751 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1752 \begin_inset Text
1753
1754 \layout Standard
1755
1756 16
1757 \end_inset 
1758 </cell>
1759 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1760 \begin_inset Text
1761
1762 \layout Standard
1763
1764 20
1765 \end_inset 
1766 </cell>
1767 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1768 \begin_inset Text
1769
1770 \layout Standard
1771
1772 35
1773 \end_inset 
1774 </cell>
1775 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1776 \begin_inset Text
1777
1778 \layout Standard
1779
1780 48
1781 \end_inset 
1782 </cell>
1783 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1784 \begin_inset Text
1785
1786 \layout Standard
1787
1788 64
1789 \end_inset 
1790 </cell>
1791 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1792 \begin_inset Text
1793
1794 \layout Standard
1795
1796 96
1797 \end_inset 
1798 </cell>
1799 </row>
1800 <row topline="true" bottomline="true">
1801 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1802 \begin_inset Text
1803
1804 \layout Standard
1805
1806 Total
1807 \end_inset 
1808 </cell>
1809 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1810 \begin_inset Text
1811
1812 \layout Standard
1813
1814 frame
1815 \end_inset 
1816 </cell>
1817 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1818 \begin_inset Text
1819
1820 \layout Standard
1821
1822 5
1823 \end_inset 
1824 </cell>
1825 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1826 \begin_inset Text
1827
1828 \layout Standard
1829
1830 43
1831 \end_inset 
1832 </cell>
1833 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1834 \begin_inset Text
1835
1836 \layout Standard
1837
1838 119
1839 \end_inset 
1840 </cell>
1841 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1842 \begin_inset Text
1843
1844 \layout Standard
1845
1846 160
1847 \end_inset 
1848 </cell>
1849 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1850 \begin_inset Text
1851
1852 \layout Standard
1853
1854 220
1855 \end_inset 
1856 </cell>
1857 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1858 \begin_inset Text
1859
1860 \layout Standard
1861
1862 300
1863 \end_inset 
1864 </cell>
1865 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1866 \begin_inset Text
1867
1868 \layout Standard
1869
1870 364
1871 \end_inset 
1872 </cell>
1873 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1874 \begin_inset Text
1875
1876 \layout Standard
1877
1878 492
1879 \end_inset 
1880 </cell>
1881 </row>
1882 </lyxtabular>
1883
1884 \end_inset 
1885
1886
1887 \layout Caption
1888
1889 Bit allocation for narrowband modes
1890 \begin_inset LatexCommand \label{cap:bits-narrowband}
1891
1892 \end_inset 
1893
1894
1895 \end_inset 
1896
1897
1898 \layout Standard
1899
1900 So far, no MOS (Mean Opinion Score
1901 \begin_inset LatexCommand \index{mean opinion score}
1902
1903 \end_inset 
1904
1905 ) subjective evaluation has been performed for Speex.
1906  In order to give an idea of the quality achivable with it, table 
1907 \begin_inset LatexCommand \ref{cap:quality_vs_bps}
1908
1909 \end_inset 
1910
1911  presents my own subjective opinion on it.
1912  It sould be noted that different people will perceive the quality differently
1913  and that the person that designed the codec often has a bias (one way or
1914  another) when it comes to subjective evaluation.
1915  Last thing, it should be noted that for most codecs (including Speex) encoding
1916  quality sometimes varies depending on the input.
1917  Note that the complexity is only approximate (withing 0.5 mflops and using
1918  the lowers complexity setting).
1919  Decoding requires approximately 0.5 mflops
1920 \begin_inset LatexCommand \index{complexity}
1921
1922 \end_inset 
1923
1924  in most modes (1 mflops with perceptual enhancement).
1925 \layout Standard
1926
1927
1928 \begin_inset Float table
1929 placement h
1930 wide true
1931 collapsed false
1932
1933 \layout Standard
1934
1935
1936 \begin_inset  Tabular
1937 <lyxtabular version="3" rows="17" columns="4">
1938 <features>
1939 <column alignment="center" valignment="top" leftline="true" width="0pt">
1940 <column alignment="center" valignment="top" leftline="true" width="0pt">
1941 <column alignment="center" valignment="top" leftline="true" width="0pt">
1942 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
1943 <row topline="true" bottomline="true">
1944 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1945 \begin_inset Text
1946
1947 \layout Standard
1948
1949 Mode
1950 \end_inset 
1951 </cell>
1952 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1953 \begin_inset Text
1954
1955 \layout Standard
1956
1957 Bit-rate
1958 \begin_inset LatexCommand \index{bit-rate}
1959
1960 \end_inset 
1961
1962  (bps)
1963 \end_inset 
1964 </cell>
1965 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1966 \begin_inset Text
1967
1968 \layout Standard
1969
1970 mflops
1971 \begin_inset LatexCommand \index{complexity}
1972
1973 \end_inset 
1974
1975
1976 \end_inset 
1977 </cell>
1978 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
1979 \begin_inset Text
1980
1981 \layout Standard
1982
1983 Quality/description
1984 \end_inset 
1985 </cell>
1986 </row>
1987 <row topline="true">
1988 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1989 \begin_inset Text
1990
1991 \layout Standard
1992
1993 0
1994 \end_inset 
1995 </cell>
1996 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
1997 \begin_inset Text
1998
1999 \layout Standard
2000
2001 250
2002 \end_inset 
2003 </cell>
2004 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2005 \begin_inset Text
2006
2007 \layout Standard
2008
2009 N/A
2010 \end_inset 
2011 </cell>
2012 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2013 \begin_inset Text
2014
2015 \layout Standard
2016
2017 No sound (VBR only)
2018 \end_inset 
2019 </cell>
2020 </row>
2021 <row topline="true">
2022 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2023 \begin_inset Text
2024
2025 \layout Standard
2026
2027 1
2028 \end_inset 
2029 </cell>
2030 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2031 \begin_inset Text
2032
2033 \layout Standard
2034
2035 2,150
2036 \end_inset 
2037 </cell>
2038 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2039 \begin_inset Text
2040
2041 \layout Standard
2042
2043 6
2044 \end_inset 
2045 </cell>
2046 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2047 \begin_inset Text
2048
2049 \layout Standard
2050
2051 Vocoder (mostly for comfort noise)
2052 \end_inset 
2053 </cell>
2054 </row>
2055 <row topline="true">
2056 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2057 \begin_inset Text
2058
2059 \layout Standard
2060
2061 2
2062 \end_inset 
2063 </cell>
2064 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2065 \begin_inset Text
2066
2067 \layout Standard
2068
2069 5,950
2070 \end_inset 
2071 </cell>
2072 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2073 \begin_inset Text
2074
2075 \layout Standard
2076
2077 9
2078 \end_inset 
2079 </cell>
2080 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2081 \begin_inset Text
2082
2083 \layout Standard
2084
2085 Very noticeable artifacts/noise, good intelligibility
2086 \end_inset 
2087 </cell>
2088 </row>
2089 <row topline="true">
2090 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2091 \begin_inset Text
2092
2093 \layout Standard
2094
2095 3
2096 \end_inset 
2097 </cell>
2098 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2099 \begin_inset Text
2100
2101 \layout Standard
2102
2103 8,000
2104 \end_inset 
2105 </cell>
2106 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2107 \begin_inset Text
2108
2109 \layout Standard
2110
2111 10
2112 \end_inset 
2113 </cell>
2114 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2115 \begin_inset Text
2116
2117 \layout Standard
2118
2119 Artifacts/noise sometimes noticeable
2120 \end_inset 
2121 </cell>
2122 </row>
2123 <row topline="true">
2124 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2125 \begin_inset Text
2126
2127 \layout Standard
2128
2129 4
2130 \end_inset 
2131 </cell>
2132 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2133 \begin_inset Text
2134
2135 \layout Standard
2136
2137 11,000
2138 \end_inset 
2139 </cell>
2140 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2141 \begin_inset Text
2142
2143 \layout Standard
2144
2145 14
2146 \end_inset 
2147 </cell>
2148 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2149 \begin_inset Text
2150
2151 \layout Standard
2152
2153 Artifacts usually noticeable only with headphones
2154 \end_inset 
2155 </cell>
2156 </row>
2157 <row topline="true">
2158 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2159 \begin_inset Text
2160
2161 \layout Standard
2162
2163 5
2164 \end_inset 
2165 </cell>
2166 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2167 \begin_inset Text
2168
2169 \layout Standard
2170
2171 15,000
2172 \end_inset 
2173 </cell>
2174 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2175 \begin_inset Text
2176
2177 \layout Standard
2178
2179 11
2180 \end_inset 
2181 </cell>
2182 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2183 \begin_inset Text
2184
2185 \layout Standard
2186
2187 Need good headphones to tell the difference
2188 \end_inset 
2189 </cell>
2190 </row>
2191 <row topline="true">
2192 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2193 \begin_inset Text
2194
2195 \layout Standard
2196
2197 6
2198 \end_inset 
2199 </cell>
2200 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2201 \begin_inset Text
2202
2203 \layout Standard
2204
2205 18,200
2206 \end_inset 
2207 </cell>
2208 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2209 \begin_inset Text
2210
2211 \layout Standard
2212
2213 17.5
2214 \end_inset 
2215 </cell>
2216 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2217 \begin_inset Text
2218
2219 \layout Standard
2220
2221 Hard to tell the difference even with good headphones
2222 \end_inset 
2223 </cell>
2224 </row>
2225 <row topline="true">
2226 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2227 \begin_inset Text
2228
2229 \layout Standard
2230
2231 7
2232 \end_inset 
2233 </cell>
2234 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2235 \begin_inset Text
2236
2237 \layout Standard
2238
2239 24,600
2240 \end_inset 
2241 </cell>
2242 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2243 \begin_inset Text
2244
2245 \layout Standard
2246
2247 14.5
2248 \end_inset 
2249 </cell>
2250 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2251 \begin_inset Text
2252
2253 \layout Standard
2254
2255 Completely transparent for voice, good quality music
2256 \end_inset 
2257 </cell>
2258 </row>
2259 <row topline="true">
2260 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2261 \begin_inset Text
2262
2263 \layout Standard
2264
2265 8
2266 \end_inset 
2267 </cell>
2268 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2269 \begin_inset Text
2270
2271 \layout Standard
2272
2273 N/A
2274 \end_inset 
2275 </cell>
2276 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2277 \begin_inset Text
2278
2279 \layout Standard
2280
2281 N/A
2282 \end_inset 
2283 </cell>
2284 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2285 \begin_inset Text
2286
2287 \layout Standard
2288
2289 (Tones/DTMF to be implemented)
2290 \end_inset 
2291 </cell>
2292 </row>
2293 <row topline="true">
2294 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2295 \begin_inset Text
2296
2297 \layout Standard
2298
2299 9
2300 \end_inset 
2301 </cell>
2302 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2303 \begin_inset Text
2304
2305 \layout Standard
2306
2307 N/A
2308 \end_inset 
2309 </cell>
2310 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2311 \begin_inset Text
2312
2313 \layout Standard
2314
2315 N/A
2316 \end_inset 
2317 </cell>
2318 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2319 \begin_inset Text
2320
2321 \layout Standard
2322
2323 reserved
2324 \end_inset 
2325 </cell>
2326 </row>
2327 <row topline="true">
2328 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2329 \begin_inset Text
2330
2331 \layout Standard
2332
2333 10
2334 \end_inset 
2335 </cell>
2336 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2337 \begin_inset Text
2338
2339 \layout Standard
2340
2341 N/A
2342 \end_inset 
2343 </cell>
2344 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2345 \begin_inset Text
2346
2347 \layout Standard
2348
2349 N/A
2350 \end_inset 
2351 </cell>
2352 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2353 \begin_inset Text
2354
2355 \layout Standard
2356
2357 reserved
2358 \end_inset 
2359 </cell>
2360 </row>
2361 <row topline="true">
2362 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2363 \begin_inset Text
2364
2365 \layout Standard
2366
2367 11
2368 \end_inset 
2369 </cell>
2370 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2371 \begin_inset Text
2372
2373 \layout Standard
2374
2375 N/A
2376 \end_inset 
2377 </cell>
2378 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2379 \begin_inset Text
2380
2381 \layout Standard
2382
2383 N/A
2384 \end_inset 
2385 </cell>
2386 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2387 \begin_inset Text
2388
2389 \layout Standard
2390
2391 reserved
2392 \end_inset 
2393 </cell>
2394 </row>
2395 <row topline="true">
2396 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2397 \begin_inset Text
2398
2399 \layout Standard
2400
2401 12
2402 \end_inset 
2403 </cell>
2404 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2405 \begin_inset Text
2406
2407 \layout Standard
2408
2409 N/A
2410 \end_inset 
2411 </cell>
2412 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2413 \begin_inset Text
2414
2415 \layout Standard
2416
2417 N/A
2418 \end_inset 
2419 </cell>
2420 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2421 \begin_inset Text
2422
2423 \layout Standard
2424
2425 reserved
2426 \end_inset 
2427 </cell>
2428 </row>
2429 <row topline="true">
2430 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2431 \begin_inset Text
2432
2433 \layout Standard
2434
2435 13
2436 \end_inset 
2437 </cell>
2438 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2439 \begin_inset Text
2440
2441 \layout Standard
2442
2443 N/A
2444 \end_inset 
2445 </cell>
2446 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2447 \begin_inset Text
2448
2449 \layout Standard
2450
2451 N/A
2452 \end_inset 
2453 </cell>
2454 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2455 \begin_inset Text
2456
2457 \layout Standard
2458
2459 Application-defined, interpreted by callback or skipped
2460 \end_inset 
2461 </cell>
2462 </row>
2463 <row topline="true">
2464 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2465 \begin_inset Text
2466
2467 \layout Standard
2468
2469 14
2470 \end_inset 
2471 </cell>
2472 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2473 \begin_inset Text
2474
2475 \layout Standard
2476
2477 N/A
2478 \end_inset 
2479 </cell>
2480 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2481 \begin_inset Text
2482
2483 \layout Standard
2484
2485 N/A
2486 \end_inset 
2487 </cell>
2488 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2489 \begin_inset Text
2490
2491 \layout Standard
2492
2493 Speex in-band signaling
2494 \end_inset 
2495 </cell>
2496 </row>
2497 <row topline="true" bottomline="true">
2498 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2499 \begin_inset Text
2500
2501 \layout Standard
2502
2503 15
2504 \end_inset 
2505 </cell>
2506 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2507 \begin_inset Text
2508
2509 \layout Standard
2510
2511 N/A
2512 \end_inset 
2513 </cell>
2514 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2515 \begin_inset Text
2516
2517 \layout Standard
2518
2519 N/A
2520 \end_inset 
2521 </cell>
2522 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
2523 \begin_inset Text
2524
2525 \layout Standard
2526
2527 Terminator code
2528 \end_inset 
2529 </cell>
2530 </row>
2531 </lyxtabular>
2532
2533 \end_inset 
2534
2535
2536 \layout Caption
2537
2538 Quality versus bit-rate
2539 \begin_inset LatexCommand \label{cap:quality_vs_bps}
2540
2541 \end_inset 
2542
2543
2544 \end_inset 
2545
2546
2547 \layout Subsection
2548
2549 Perceptual enhancement
2550 \begin_inset LatexCommand \index{perceptual enhancement}
2551
2552 \end_inset 
2553
2554
2555 \layout Standard
2556
2557 This part of the codec only applies to the decoder and can even be changed
2558  without affecting inter-operability.
2559  For that reason, the implementation provided and described here should
2560  only be considered as a reference implementation.
2561  The enhancement system is devided in two parts.
2562  First, the synthesis filter 
2563 \begin_inset Formula $S(z)=1/A(z)$
2564 \end_inset 
2565
2566  is replaced by an enhanced filter
2567 \begin_inset Formula \[
2568 S'(z)=\frac{A\left(z/a_{2}\right)A\left(z/a_{3}\right)}{A\left(z\right)A\left(z/a_{1}\right)}\]
2569
2570 \end_inset 
2571
2572 where 
2573 \begin_inset Formula $a_{1}$
2574 \end_inset 
2575
2576  and 
2577 \begin_inset Formula $a_{2}$
2578 \end_inset 
2579
2580  depend on the mode in use and 
2581 \begin_inset Formula $a_{3}=\frac{1}{r}\left(1-\frac{1-ra_{1}}{1-ra_{2}}\right)$
2582 \end_inset 
2583
2584  with 
2585 \begin_inset Formula $r=.9$
2586 \end_inset 
2587
2588 .
2589  The second part of the enhancement consists of using a comb filter to enhance
2590  the pitch in the excitation domain.
2591  
2592 \layout Section
2593 \pagebreak_top 
2594 Speex wideband mode (sub-band CELP)
2595 \begin_inset LatexCommand \index{wideband}
2596
2597 \end_inset 
2598
2599
2600 \layout Standard
2601
2602 For wideband, the Speex approach uses a 
2603 \emph on 
2604 q
2605 \emph default 
2606 uadrature 
2607 \emph on 
2608 m
2609 \emph default 
2610 irror 
2611 \emph on 
2612 f
2613 \emph default 
2614 ilter
2615 \begin_inset LatexCommand \index{quadrature mirror filter}
2616
2617 \end_inset 
2618
2619  (QMF) to split the band in two.
2620  The 16 kHz signal is thus divided into two 8 kHz signals, one representing
2621  the low band (0-4 kHz), the other the high band (4-8 kHz).
2622  The low band is encoded with the narrowband mode described in section 
2623 \begin_inset LatexCommand \ref{sec:Speex-narrowband-mode}
2624
2625 \end_inset 
2626
2627  in such a way that the resulting 
2628 \begin_inset Quotes eld
2629 \end_inset 
2630
2631 embedded narrowband bit-stream
2632 \begin_inset Quotes erd
2633 \end_inset 
2634
2635  can also be decoded with the narrowband decoder.
2636  Since the low band encoding has already been described only the high band
2637  encoding is described in this section.
2638 \layout Subsection
2639
2640 Linear Prediction
2641 \layout Standard
2642
2643 The linear prediction part used for the high-band is very similar to what
2644  is done for narrowband.
2645  The only difference is that we use only 12 bits to encode the high-band
2646  LSP's using a multi-stage vector quantizer (MSVQ).
2647  The first level quantizes the 10 coefficients with 6 bits and the error
2648  is then quantized using 6 bits too.
2649 \layout Subsection
2650
2651 Pitch Prediction
2652 \layout Standard
2653
2654 That part is easy: there's no pitch prediction for the high-band.
2655  There are two reasons for that.
2656  First, there is usually little harmonic structure in this band (above 4
2657  kHz).
2658  Second, it would be very hard to implement since the QMF folds the 4-8
2659  kHz band into 4-0 kHz (reversing the frequency axis), which means that
2660  the location of the harmonics are no longer at multiples of the fundamental
2661  (pitch).
2662 \layout Subsection
2663
2664 Excitation Quantization
2665 \layout Standard
2666
2667 The high-band excitation is coded in the same way as for narrowband.
2668  
2669 \layout Subsection
2670
2671 Bit allocation
2672 \layout Standard
2673
2674 For the wideband mode, all the narrowband frame is packed before the high-band
2675  is encoded.
2676  The narrowband part of the bit-stream is as defined in table 
2677 \begin_inset LatexCommand \ref{cap:bits-narrowband}
2678
2679 \end_inset 
2680
2681 .
2682  The high-band follows, as described in table 
2683 \begin_inset LatexCommand \ref{cap:bits-wideband}
2684
2685 \end_inset 
2686
2687 .
2688  This also means that a wideband frame may be correctly decoded by a narrowband
2689  decoder with the only caveat that if more than one frame is packed in the
2690  same packet, the decoder will need to skip the high-band parts in order
2691  to sync with the bit-stream.
2692 \layout Standard
2693
2694
2695 \begin_inset Float table
2696 placement h
2697 wide true
2698 collapsed false
2699
2700 \layout Standard
2701
2702
2703 \begin_inset  Tabular
2704 <lyxtabular version="3" rows="7" columns="7">
2705 <features>
2706 <column alignment="center" valignment="top" leftline="true" width="0pt">
2707 <column alignment="center" valignment="top" leftline="true" width="0pt">
2708 <column alignment="center" valignment="top" leftline="true" width="0pt">
2709 <column alignment="center" valignment="top" leftline="true" width="0pt">
2710 <column alignment="center" valignment="top" leftline="true" width="0pt">
2711 <column alignment="center" valignment="top" leftline="true" width="0pt">
2712 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
2713 <row topline="true" bottomline="true">
2714 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2715 \begin_inset Text
2716
2717 \layout Standard
2718
2719 Parameter
2720 \end_inset 
2721 </cell>
2722 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2723 \begin_inset Text
2724
2725 \layout Standard
2726
2727 Update rate
2728 \end_inset 
2729 </cell>
2730 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2731 \begin_inset Text
2732
2733 \layout Standard
2734
2735 0
2736 \end_inset 
2737 </cell>
2738 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2739 \begin_inset Text
2740
2741 \layout Standard
2742
2743 1
2744 \end_inset 
2745 </cell>
2746 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2747 \begin_inset Text
2748
2749 \layout Standard
2750
2751 2
2752 \end_inset 
2753 </cell>
2754 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2755 \begin_inset Text
2756
2757 \layout Standard
2758
2759 3
2760 \end_inset 
2761 </cell>
2762 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2763 \begin_inset Text
2764
2765 \layout Standard
2766
2767 4
2768 \end_inset 
2769 </cell>
2770 </row>
2771 <row topline="true">
2772 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2773 \begin_inset Text
2774
2775 \layout Standard
2776
2777 Wideband bit
2778 \end_inset 
2779 </cell>
2780 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2781 \begin_inset Text
2782
2783 \layout Standard
2784
2785 frame
2786 \end_inset 
2787 </cell>
2788 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2789 \begin_inset Text
2790
2791 \layout Standard
2792
2793 1
2794 \end_inset 
2795 </cell>
2796 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2797 \begin_inset Text
2798
2799 \layout Standard
2800
2801 1
2802 \end_inset 
2803 </cell>
2804 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2805 \begin_inset Text
2806
2807 \layout Standard
2808
2809 1
2810 \end_inset 
2811 </cell>
2812 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2813 \begin_inset Text
2814
2815 \layout Standard
2816
2817 1
2818 \end_inset 
2819 </cell>
2820 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2821 \begin_inset Text
2822
2823 \layout Standard
2824
2825 1
2826 \end_inset 
2827 </cell>
2828 </row>
2829 <row topline="true">
2830 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2831 \begin_inset Text
2832
2833 \layout Standard
2834
2835 Mode ID
2836 \end_inset 
2837 </cell>
2838 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2839 \begin_inset Text
2840
2841 \layout Standard
2842
2843 frame
2844 \end_inset 
2845 </cell>
2846 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2847 \begin_inset Text
2848
2849 \layout Standard
2850
2851 3
2852 \end_inset 
2853 </cell>
2854 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2855 \begin_inset Text
2856
2857 \layout Standard
2858
2859 3
2860 \end_inset 
2861 </cell>
2862 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2863 \begin_inset Text
2864
2865 \layout Standard
2866
2867 3
2868 \end_inset 
2869 </cell>
2870 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2871 \begin_inset Text
2872
2873 \layout Standard
2874
2875 3
2876 \end_inset 
2877 </cell>
2878 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2879 \begin_inset Text
2880
2881 \layout Standard
2882
2883 3
2884 \end_inset 
2885 </cell>
2886 </row>
2887 <row topline="true">
2888 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2889 \begin_inset Text
2890
2891 \layout Standard
2892
2893 LSP
2894 \end_inset 
2895 </cell>
2896 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2897 \begin_inset Text
2898
2899 \layout Standard
2900
2901 frame
2902 \end_inset 
2903 </cell>
2904 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2905 \begin_inset Text
2906
2907 \layout Standard
2908
2909 0
2910 \end_inset 
2911 </cell>
2912 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2913 \begin_inset Text
2914
2915 \layout Standard
2916
2917 12
2918 \end_inset 
2919 </cell>
2920 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2921 \begin_inset Text
2922
2923 \layout Standard
2924
2925 12
2926 \end_inset 
2927 </cell>
2928 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2929 \begin_inset Text
2930
2931 \layout Standard
2932
2933 12
2934 \end_inset 
2935 </cell>
2936 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2937 \begin_inset Text
2938
2939 \layout Standard
2940
2941 12
2942 \end_inset 
2943 </cell>
2944 </row>
2945 <row topline="true">
2946 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2947 \begin_inset Text
2948
2949 \layout Standard
2950
2951 Excitation gain
2952 \end_inset 
2953 </cell>
2954 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2955 \begin_inset Text
2956
2957 \layout Standard
2958
2959 sub-frame
2960 \end_inset 
2961 </cell>
2962 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2963 \begin_inset Text
2964
2965 \layout Standard
2966
2967 0
2968 \end_inset 
2969 </cell>
2970 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2971 \begin_inset Text
2972
2973 \layout Standard
2974
2975 5
2976 \end_inset 
2977 </cell>
2978 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2979 \begin_inset Text
2980
2981 \layout Standard
2982
2983 4
2984 \end_inset 
2985 </cell>
2986 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2987 \begin_inset Text
2988
2989 \layout Standard
2990
2991 4
2992 \end_inset 
2993 </cell>
2994 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
2995 \begin_inset Text
2996
2997 \layout Standard
2998
2999 4
3000 \end_inset 
3001 </cell>
3002 </row>
3003 <row topline="true" bottomline="true">
3004 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3005 \begin_inset Text
3006
3007 \layout Standard
3008
3009 Excitation VQ
3010 \end_inset 
3011 </cell>
3012 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3013 \begin_inset Text
3014
3015 \layout Standard
3016
3017 sub-frame
3018 \end_inset 
3019 </cell>
3020 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3021 \begin_inset Text
3022
3023 \layout Standard
3024
3025 0
3026 \end_inset 
3027 </cell>
3028 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3029 \begin_inset Text
3030
3031 \layout Standard
3032
3033 0
3034 \end_inset 
3035 </cell>
3036 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3037 \begin_inset Text
3038
3039 \layout Standard
3040
3041 20
3042 \end_inset 
3043 </cell>
3044 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3045 \begin_inset Text
3046
3047 \layout Standard
3048
3049 40
3050 \end_inset 
3051 </cell>
3052 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3053 \begin_inset Text
3054
3055 \layout Standard
3056
3057 80
3058 \end_inset 
3059 </cell>
3060 </row>
3061 <row topline="true" bottomline="true">
3062 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3063 \begin_inset Text
3064
3065 \layout Standard
3066
3067 Total
3068 \end_inset 
3069 </cell>
3070 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3071 \begin_inset Text
3072
3073 \layout Standard
3074
3075 frame
3076 \end_inset 
3077 </cell>
3078 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3079 \begin_inset Text
3080
3081 \layout Standard
3082
3083 4
3084 \end_inset 
3085 </cell>
3086 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3087 \begin_inset Text
3088
3089 \layout Standard
3090
3091 36
3092 \end_inset 
3093 </cell>
3094 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3095 \begin_inset Text
3096
3097 \layout Standard
3098
3099 112
3100 \end_inset 
3101 </cell>
3102 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3103 \begin_inset Text
3104
3105 \layout Standard
3106
3107 192
3108 \end_inset 
3109 </cell>
3110 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3111 \begin_inset Text
3112
3113 \layout Standard
3114
3115 352
3116 \end_inset 
3117 </cell>
3118 </row>
3119 </lyxtabular>
3120
3121 \end_inset 
3122
3123
3124 \layout Caption
3125
3126 Bit allocation for high-band in wideband mode
3127 \begin_inset LatexCommand \label{cap:bits-wideband}
3128
3129 \end_inset 
3130
3131
3132 \end_inset 
3133
3134
3135 \layout Standard
3136
3137
3138 \begin_inset ERT
3139 status Open
3140
3141 \layout Standard
3142
3143 \backslash 
3144 clearpage
3145 \end_inset 
3146
3147
3148 \layout Section
3149 \pagebreak_top 
3150 Command-line encoder/decoder
3151 \layout Standard
3152
3153 The base Speex distribution includes a command-line encoder (
3154 \emph on 
3155 speexenc
3156 \emph default 
3157 ) and decoder (
3158 \emph on 
3159 speexdec
3160 \emph default 
3161 ).
3162 \layout Subsection
3163
3164
3165 \emph on 
3166 speexenc
3167 \begin_inset LatexCommand \index{speexenc}
3168
3169 \end_inset 
3170
3171
3172 \layout Standard
3173
3174 The encoder takes the following options:
3175 \layout Description
3176
3177 --narrowband\SpecialChar ~
3178 (-n) Tell Speex to treat the input as narrowband (8 kHz).
3179  This is the default
3180 \layout Description
3181
3182 --wideband\SpecialChar ~
3183 (-w) Tell Speex to treat the input as wideband (16 kHz)
3184 \layout Description
3185
3186 --ultra-wideband\SpecialChar ~
3187 (-u) Tell Speex to treat the input as 
3188 \begin_inset Quotes eld
3189 \end_inset 
3190
3191 ultra-wideband
3192 \begin_inset Quotes erd
3193 \end_inset 
3194
3195  (32 kHz)
3196 \layout Description
3197
3198 --quality\SpecialChar ~
3199 n Set the encoding quality (0-10), default is 3
3200 \layout Description
3201
3202 --bitrate\SpecialChar ~
3203 n Encoding bit-rate (use bit-rate n or lower) 
3204 \layout Description
3205
3206 --vbr Enable VBR (Variable Bit-Rate), disabled by default
3207 \layout Description
3208
3209 --nframes\SpecialChar ~
3210 n Pack n frames in each Ogg packet (this saves space at low bit-rates)
3211 \layout Description
3212
3213 --comp\SpecialChar ~
3214 n Set encoding speed/quality tradeoff.
3215  The higher the value of n, the slower the encoding (default is 3)
3216 \layout Description
3217
3218 -V Verbose operation, print bit-rate currently in use
3219 \layout Description
3220
3221 --help\SpecialChar ~
3222 (-h) Print the help
3223 \layout Description
3224
3225 --version\SpecialChar ~
3226 (-v) Print version information
3227 \layout Subsubsection*
3228
3229 Speex comments
3230 \layout Description
3231
3232 --comment Add the given string as an extra comment.
3233  This may be used multiple times.
3234  
3235 \layout Description
3236
3237 --author Author of this track.
3238  
3239 \layout Description
3240
3241 --title Title for this track.
3242  
3243 \layout Subsubsection*
3244
3245 Raw input options
3246 \layout Description
3247
3248 --rate\SpecialChar ~
3249 n Sampling rate for raw input
3250 \layout Description
3251
3252 --stereo Consider raw input as stereo 
3253 \layout Description
3254
3255 --le Raw input is little-endian 
3256 \layout Description
3257
3258 --be Raw input is big-endian 
3259 \layout Description
3260
3261 --8bit Raw input is 8-bit unsigned 
3262 \layout Description
3263
3264 --16bit Raw input is 16-bit signed 
3265 \layout Subsection
3266
3267
3268 \emph on 
3269 speexdec
3270 \begin_inset LatexCommand \index{speexdec}
3271
3272 \end_inset 
3273
3274
3275 \layout Standard
3276
3277 The decoder takes the following options:
3278 \layout Description
3279
3280 --enh enable post-filter
3281 \layout Description
3282
3283 --no-enh disable post-filter (default)
3284 \layout Description
3285
3286 --force-nb Force decoding in narrowband 
3287 \layout Description
3288
3289 --force-wb Force decoding in wideband 
3290 \layout Description
3291
3292 --force-uwb Force decoding in ultra-wideband 
3293 \layout Description
3294
3295 --mono Force decoding in mono 
3296 \layout Description
3297
3298 --stereo Force decoding in stereo 
3299 \layout Description
3300
3301 --rate\SpecialChar ~
3302 n For decoding at n Hz sampling rate
3303 \layout Description
3304
3305 --packet-loss\SpecialChar ~
3306 n Simulate n % rando m packet loss
3307 \layout Description
3308
3309 -V Verbose operation, print bit-rate currently in use
3310 \layout Description
3311
3312 --help\SpecialChar ~
3313 (-h) Print the help
3314 \layout Description
3315
3316 --version\SpecialChar ~
3317 (-v) Print version information
3318 \layout Section
3319 \pagebreak_top 
3320 Programming with Speex (the libspeex
3321 \begin_inset LatexCommand \index{libspeex}
3322
3323 \end_inset 
3324
3325  API
3326 \begin_inset LatexCommand \index{API}
3327
3328 \end_inset 
3329
3330 )
3331 \layout Subsection
3332
3333 Encoding
3334 \layout Standard
3335
3336 In order to encode speech using Speex, you first need to:
3337 \layout LyX-Code
3338
3339 #include <speex.h>
3340 \layout Standard
3341
3342 You then need to declare a Speex bit-packing struct
3343 \layout LyX-Code
3344
3345 SpeexBits bits;
3346 \layout Standard
3347
3348 and a Speex encoder state
3349 \layout LyX-Code
3350
3351 void *enc_state;
3352 \layout Standard
3353
3354 The two are initialized by:
3355 \layout LyX-Code
3356
3357 speex_bits_init(&bits);
3358 \layout LyX-Code
3359
3360 enc_state = speex_encoder_init(&speex_nb_mode);
3361 \layout Standard
3362
3363 For wideband coding, 
3364 \emph on 
3365 speex_nb_mode
3366 \emph default 
3367  will be replaced by 
3368 \emph on 
3369 speex_wb_mode
3370 \emph default 
3371 .
3372  In most cases, you will need to know the frame size used by the mode you
3373  are using.
3374  You can get that value in the 
3375 \emph on 
3376 frame_size
3377 \emph default 
3378  variable with:
3379 \layout LyX-Code
3380
3381 speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
3382 \layout Standard
3383
3384 Once the initialization is done, for every input frame:
3385 \layout LyX-Code
3386
3387 speex_bits_reset(&bits);
3388 \layout LyX-Code
3389
3390 speex_encode(enc_state, input_frame, &bits);
3391 \layout LyX-Code
3392
3393 nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);
3394 \layout Standard
3395
3396 where 
3397 \emph on 
3398 input_frame
3399 \emph default 
3400  is a 
3401 \emph on 
3402 (float *)
3403 \emph default 
3404  pointing to the beginning of a speech frame, 
3405 \emph on 
3406 byte_ptr
3407 \emph default 
3408  is a 
3409 \emph on 
3410 (char *)
3411 \emph default 
3412  where the encoded frame will be written, 
3413 \emph on 
3414 MAX_NB_BYTES
3415 \emph default 
3416  is the maximum number of bytes that can be written to 
3417 \emph on 
3418 byte_ptr
3419 \emph default 
3420  without causing an overflow and 
3421 \emph on 
3422 nbBytes
3423 \emph default 
3424  is the number of bytes actually written to 
3425 \emph on 
3426 byte_ptr
3427 \emph default 
3428  (the encoded size in bytes).
3429  Before calling speex_bits_write, it is possible to find the number of bytes
3430  that need to be written by calling 
3431 \family typewriter 
3432 speex_bits_nbytes(&bits)
3433 \family default 
3434 , which returns a number of bytes.
3435  
3436 \layout Standard
3437
3438 After you're done with the encoding, free all resources with:
3439 \layout LyX-Code
3440
3441 speex_bits_destroy(&bits);
3442 \layout LyX-Code
3443
3444 speex_encoder_destroy(enc_state);
3445 \layout Standard
3446
3447 That's about it for the encoder.
3448  
3449 \layout Subsection
3450
3451 Decoding
3452 \layout Standard
3453
3454 In order to encode speech using Speex, you first need to:
3455 \layout LyX-Code
3456
3457 #include <speex.h>
3458 \layout Standard
3459
3460 You then need to declare a Speex bit-packing struct
3461 \layout LyX-Code
3462
3463 SpeexBits bits;
3464 \layout Standard
3465
3466 and a Speex encoder state
3467 \layout LyX-Code
3468
3469 void *dec_state;
3470 \layout Standard
3471
3472 The two are initialized by:
3473 \layout LyX-Code
3474
3475 speex_bits_init(&bits);
3476 \layout LyX-Code
3477
3478 dec_state = speex_decoder_init(&speex_nb_mode);
3479 \layout Standard
3480
3481 For wideband decoding, 
3482 \emph on 
3483 speex_nb_mode
3484 \emph default 
3485  will be replaced by 
3486 \emph on 
3487 speex_wb_mode
3488 \emph default 
3489 .
3490  You can get that value in the 
3491 \emph on 
3492 frame_size
3493 \emph default 
3494  variable with:
3495 \layout LyX-Code
3496
3497 speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size); 
3498 \layout Standard
3499
3500 There is also a parameter that can be set for the decoder: whether or not
3501  to use a perceptual post-filter.
3502  This can be set by: 
3503 \layout LyX-Code
3504
3505 speex_decoder_ctl(dec_state, SPEEX_SET_PF, &pf); 
3506 \layout Standard
3507
3508 where pf is an int that with value 0 to have the post-filter disabled and
3509  1 to have it enabled.
3510 \layout Standard
3511
3512 Again, once the decoder initialization is done, for every input frame:
3513 \layout LyX-Code
3514
3515 speex_bits_read_from(&bits, input_bytes, nbBytes);
3516 \layout LyX-Code
3517
3518 speex_decode(st, &bits, output_frame);
3519 \layout Standard
3520
3521 where input_bytes is a 
3522 \emph on 
3523 (char *)
3524 \emph default 
3525  containing the bit-stream data received for a frame, 
3526 \emph on 
3527 nbBytes
3528 \emph default 
3529  is the size (in bytes) of that bit-stream, and 
3530 \emph on 
3531 output_frame
3532 \emph default 
3533  is a 
3534 \emph on 
3535 (float *)
3536 \emph default 
3537  and points to the area where the decoded speech frame will be written.
3538  A NULL value as the first argument indicates that we don't have the bits
3539  for the current frame.
3540  When a frame is lost, the Speex decoder will do its best to "guess" the
3541  correct signal.
3542 \layout Standard
3543
3544 After you're done with the decoding, free all resources with:
3545 \layout LyX-Code
3546
3547 speex_bits_destroy(&bits);
3548 \layout LyX-Code
3549
3550 speex_decoder_destroy(dec_state);
3551 \layout Subsection
3552
3553 Codec Options (speex_*_ctl)
3554 \layout Standard
3555
3556 The Speex encoder and decoder support many options and requests that can
3557  be accessed through the 
3558 \emph on 
3559 speex_encoder_ctl
3560 \emph default 
3561  and 
3562 \emph on 
3563 speex_decoder_ctl
3564 \emph default 
3565  functions.
3566  These functions are similar the the 
3567 \emph on 
3568 ioctl
3569 \emph default 
3570  system call and their prototypes are:
3571 \layout LyX-Code
3572
3573 void speex_encoder_ctl(void *encoder, int request, void *ptr);
3574 \layout LyX-Code
3575
3576 void speex_decoder_ctl(void *encoder, int request, void *ptr);
3577 \layout Standard
3578
3579 The different values of request allowed are (note that some only apply to
3580  the encoder or the decoder):
3581 \layout Description
3582
3583 SPEEX_SET_ENH** Set perceptual enhancer to on (1) or off (0) (integer)
3584 \layout Description
3585
3586 SPEEX_GET_ENH** Get perceptual enhancer status (integer)
3587 \layout Description
3588
3589 SPEEX_GET_FRAME_SIZE Get the frame size used for the current mode (integer)
3590 \layout Description
3591
3592 SPEEX_SET_QUALITY* Set the encoder speech quality (integer 0 to 10)
3593 \layout Description
3594
3595 SPEEX_GET_QUALITY* Get the current encoder speech quality (integer 0 to
3596  10)
3597 \layout Description
3598
3599 SPEEX_SET_MODE*
3600 \begin_inset Formula $\dagger $
3601 \end_inset 
3602
3603
3604 \layout Description
3605
3606 SPEEX_GET_MODE*
3607 \begin_inset Formula $\dagger $
3608 \end_inset 
3609
3610
3611 \layout Description
3612
3613 SPEEX_SET_LOW_MODE*
3614 \begin_inset Formula $\dagger $
3615 \end_inset 
3616
3617
3618 \layout Description
3619
3620 SPEEX_GET_LOW_MODE*
3621 \begin_inset Formula $\dagger $
3622 \end_inset 
3623
3624
3625 \layout Description
3626
3627 SPEEX_SET_HIGH_MODE*
3628 \begin_inset Formula $\dagger $
3629 \end_inset 
3630
3631
3632 \layout Description
3633
3634 SPEEX_GET_HIGH_MODE*
3635 \begin_inset Formula $\dagger $
3636 \end_inset 
3637
3638
3639 \layout Description
3640
3641 SPEEX_SET_VBR* Set variable bit-rate (VBR) to on (1) or off (0) (integer)
3642 \layout Description
3643
3644 SPEEX_GET_VBR* Get variable bit-rate (VBR) status (integer)
3645 \layout Description
3646
3647 SPEEX_SET_VBR_QUALITY* Set the encoder VBR speech quality (integer 0 to
3648  10)
3649 \layout Description
3650
3651 SPEEX_GET_VBR_QUALITY* Get the current encoder VBR speech quality (integer
3652  0 to 10)
3653 \layout Description
3654
3655 SPEEX_SET_COMPLEXITY* Set the CPU resources allowed for the encoder
3656 \layout Description
3657
3658 SPEEX_GET_COMPLEXITY* Get the CPU resources allowed for the encoder
3659 \layout Description
3660
3661 SPEEX_SET_BITRATE* Set the bit-rate to use to the closest value not exceeding
3662  the parameter (integer in bps)
3663 \layout Description
3664
3665 SPEEX_GET_BITRATE Get the current bit-rate in use (integer in bps)
3666 \layout Description
3667
3668 SPEEX_SET_SAMPLING_RATE Set real sampling rate (is used to determine real
3669  bit-rate)
3670 \layout Description
3671
3672 SPEEX_GET_SAMPLING_RATE Get real sampling rate (is used to determine real
3673  bit-rate)
3674 \layout Description
3675
3676 * applies only to the encoder
3677 \layout Description
3678
3679 ** applies only to the decoder
3680 \layout Description
3681
3682
3683 \begin_inset Formula $\dagger $
3684 \end_inset 
3685
3686  normally only used internally
3687 \layout Subsection
3688
3689 Mode queries
3690 \layout Standard
3691
3692 Speex modes have a querry system similar to the speex_encoder_ctl and speex_deco
3693 der_ctl calls.
3694  Since modes are read-only, it is only possible to get information about
3695  a particular mode.
3696  The function used to do that is:
3697 \layout LyX-Code
3698
3699 void speex_mode_query(SpeexMode *mode, int request, void *ptr);
3700 \layout Standard
3701
3702 The admissible values for request are (unless otherwise note, the values
3703  are returned through 
3704 \emph on 
3705 ptr
3706 \emph default 
3707 ):
3708 \layout Description
3709
3710 SPEEX_MODE_FRAME_SIZE Get the frame size (in samples) for the mode
3711 \layout Description
3712
3713 SPEEX_SUBMODE_BITRATE Get the bit-rate for a submode number specified throught
3714  
3715 \emph on 
3716 ptr
3717 \emph default 
3718 .
3719 \layout Subsection
3720
3721 Packing and in-band signalling
3722 \begin_inset LatexCommand \index{in-band signalling}
3723
3724 \end_inset 
3725
3726
3727 \layout Standard
3728
3729 Sometimes it is desirable to pack more than one frame per packet (or other
3730  basic unit of storage).
3731  The proper way to do it is to call speex_encode 
3732 \begin_inset Formula $N$
3733 \end_inset 
3734
3735  times before writing the stream with speex_bits_write.
3736  In cases where the number of frames is not determined by an out-of-band
3737  mechanism, it is possible to include a terminator code.
3738  That terminator consists of the code 15 (decimal) encoded with 5 bits,
3739  as shown in figure 
3740 \begin_inset LatexCommand \ref{cap:quality_vs_bps}
3741
3742 \end_inset 
3743
3744 .
3745  
3746 \layout Standard
3747
3748 It is also possible to send in-band 
3749 \begin_inset Quotes eld
3750 \end_inset 
3751
3752 messages
3753 \begin_inset Quotes erd
3754 \end_inset 
3755
3756  to the other side.
3757  All these messages are encoded as a 
3758 \begin_inset Quotes eld
3759 \end_inset 
3760
3761 pseudo-frame
3762 \begin_inset Quotes erd
3763 \end_inset 
3764
3765  of mode 14 which contain a 4-bit message type code, followed by the message.
3766  Table 
3767 \begin_inset LatexCommand \ref{cap:In-band-signalling-codes}
3768
3769 \end_inset 
3770
3771  lists the available codes, their meaning and the size of the message that
3772  follow.
3773  Most of these messages are requests that are sent to the encoder or decoder
3774  on the other end, which is free to comply or ignore them.
3775  By default, all in-band messages are ignored.
3776 \layout Standard
3777
3778
3779 \begin_inset Float table
3780 placement htbp
3781 wide false
3782 collapsed false
3783
3784 \layout Standard
3785
3786
3787 \begin_inset  Tabular
3788 <lyxtabular version="3" rows="17" columns="3">
3789 <features>
3790 <column alignment="center" valignment="top" leftline="true" width="0pt">
3791 <column alignment="center" valignment="top" leftline="true" width="0pt">
3792 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
3793 <row topline="true" bottomline="true">
3794 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3795 \begin_inset Text
3796
3797 \layout Standard
3798
3799 code
3800 \end_inset 
3801 </cell>
3802 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3803 \begin_inset Text
3804
3805 \layout Standard
3806
3807 Size (bits)
3808 \end_inset 
3809 </cell>
3810 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3811 \begin_inset Text
3812
3813 \layout Standard
3814
3815 Content
3816 \end_inset 
3817 </cell>
3818 </row>
3819 <row topline="true">
3820 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3821 \begin_inset Text
3822
3823 \layout Standard
3824
3825 0
3826 \end_inset 
3827 </cell>
3828 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3829 \begin_inset Text
3830
3831 \layout Standard
3832
3833 1
3834 \end_inset 
3835 </cell>
3836 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3837 \begin_inset Text
3838
3839 \layout Standard
3840
3841 Asks decoder to set perceptual enhancement on (1) or off(1)
3842 \end_inset 
3843 </cell>
3844 </row>
3845 <row topline="true">
3846 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3847 \begin_inset Text
3848
3849 \layout Standard
3850
3851 1
3852 \end_inset 
3853 </cell>
3854 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3855 \begin_inset Text
3856
3857 \layout Standard
3858
3859 1
3860 \end_inset 
3861 </cell>
3862 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3863 \begin_inset Text
3864
3865 \layout Standard
3866
3867 Asks encoder to set VBR on (1) or off(1)
3868 \end_inset 
3869 </cell>
3870 </row>
3871 <row topline="true">
3872 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3873 \begin_inset Text
3874
3875 \layout Standard
3876
3877 2
3878 \end_inset 
3879 </cell>
3880 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3881 \begin_inset Text
3882
3883 \layout Standard
3884
3885 4
3886 \end_inset 
3887 </cell>
3888 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3889 \begin_inset Text
3890
3891 \layout Standard
3892
3893 Asks encoder to switch to mode N
3894 \end_inset 
3895 </cell>
3896 </row>
3897 <row topline="true">
3898 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3899 \begin_inset Text
3900
3901 \layout Standard
3902
3903 3
3904 \end_inset 
3905 </cell>
3906 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3907 \begin_inset Text
3908
3909 \layout Standard
3910
3911 4
3912 \end_inset 
3913 </cell>
3914 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3915 \begin_inset Text
3916
3917 \layout Standard
3918
3919 Asks encoder to switch to mode N for low-band
3920 \end_inset 
3921 </cell>
3922 </row>
3923 <row topline="true">
3924 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3925 \begin_inset Text
3926
3927 \layout Standard
3928
3929 4
3930 \end_inset 
3931 </cell>
3932 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3933 \begin_inset Text
3934
3935 \layout Standard
3936
3937 4
3938 \end_inset 
3939 </cell>
3940 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3941 \begin_inset Text
3942
3943 \layout Standard
3944
3945 Asks encoder to switch to mode N for high-band
3946 \end_inset 
3947 </cell>
3948 </row>
3949 <row topline="true">
3950 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3951 \begin_inset Text
3952
3953 \layout Standard
3954
3955 5
3956 \end_inset 
3957 </cell>
3958 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3959 \begin_inset Text
3960
3961 \layout Standard
3962
3963 4
3964 \end_inset 
3965 </cell>
3966 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3967 \begin_inset Text
3968
3969 \layout Standard
3970
3971 Asks encoder to switch to quality N for VBR
3972 \end_inset 
3973 </cell>
3974 </row>
3975 <row topline="true">
3976 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3977 \begin_inset Text
3978
3979 \layout Standard
3980
3981 6
3982 \end_inset 
3983 </cell>
3984 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
3985 \begin_inset Text
3986
3987 \layout Standard
3988
3989 4
3990 \end_inset 
3991 </cell>
3992 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
3993 \begin_inset Text
3994
3995 \layout Standard
3996
3997 Request acknowloedge (0=no, 1=all, 2=only for in-band data)
3998 \end_inset 
3999 </cell>
4000 </row>
4001 <row topline="true">
4002 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4003 \begin_inset Text
4004
4005 \layout Standard
4006
4007 7
4008 \end_inset 
4009 </cell>
4010 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4011 \begin_inset Text
4012
4013 \layout Standard
4014
4015 4
4016 \end_inset 
4017 </cell>
4018 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4019 \begin_inset Text
4020
4021 \layout Standard
4022
4023 reserved
4024 \end_inset 
4025 </cell>
4026 </row>
4027 <row topline="true">
4028 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4029 \begin_inset Text
4030
4031 \layout Standard
4032
4033 8
4034 \end_inset 
4035 </cell>
4036 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4037 \begin_inset Text
4038
4039 \layout Standard
4040
4041 8
4042 \end_inset 
4043 </cell>
4044 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4045 \begin_inset Text
4046
4047 \layout Standard
4048
4049 Transmit (8-bit) character to the other end
4050 \end_inset 
4051 </cell>
4052 </row>
4053 <row topline="true">
4054 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4055 \begin_inset Text
4056
4057 \layout Standard
4058
4059 9
4060 \end_inset 
4061 </cell>
4062 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4063 \begin_inset Text
4064
4065 \layout Standard
4066
4067 8
4068 \end_inset 
4069 </cell>
4070 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4071 \begin_inset Text
4072
4073 \layout Standard
4074
4075 Intensity stereo information
4076 \end_inset 
4077 </cell>
4078 </row>
4079 <row topline="true">
4080 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4081 \begin_inset Text
4082
4083 \layout Standard
4084
4085 10
4086 \end_inset 
4087 </cell>
4088 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4089 \begin_inset Text
4090
4091 \layout Standard
4092
4093 16
4094 \end_inset 
4095 </cell>
4096 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4097 \begin_inset Text
4098
4099 \layout Standard
4100
4101 Announce maximum bit-rate acceptable (N in bytes/second)
4102 \end_inset 
4103 </cell>
4104 </row>
4105 <row topline="true">
4106 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4107 \begin_inset Text
4108
4109 \layout Standard
4110
4111 11
4112 \end_inset 
4113 </cell>
4114 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4115 \begin_inset Text
4116
4117 \layout Standard
4118
4119 16
4120 \end_inset 
4121 </cell>
4122 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4123 \begin_inset Text
4124
4125 \layout Standard
4126
4127 reserved
4128 \end_inset 
4129 </cell>
4130 </row>
4131 <row topline="true">
4132 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4133 \begin_inset Text
4134
4135 \layout Standard
4136
4137 12
4138 \end_inset 
4139 </cell>
4140 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4141 \begin_inset Text
4142
4143 \layout Standard
4144
4145 32
4146 \end_inset 
4147 </cell>
4148 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4149 \begin_inset Text
4150
4151 \layout Standard
4152
4153 Acknowledge receiving packet N
4154 \end_inset 
4155 </cell>
4156 </row>
4157 <row topline="true">
4158 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4159 \begin_inset Text
4160
4161 \layout Standard
4162
4163 13
4164 \end_inset 
4165 </cell>
4166 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4167 \begin_inset Text
4168
4169 \layout Standard
4170
4171 32
4172 \end_inset 
4173 </cell>
4174 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4175 \begin_inset Text
4176
4177 \layout Standard
4178
4179 reserved
4180 \end_inset 
4181 </cell>
4182 </row>
4183 <row topline="true">
4184 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4185 \begin_inset Text
4186
4187 \layout Standard
4188
4189 14
4190 \end_inset 
4191 </cell>
4192 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4193 \begin_inset Text
4194
4195 \layout Standard
4196
4197 64
4198 \end_inset 
4199 </cell>
4200 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4201 \begin_inset Text
4202
4203 \layout Standard
4204
4205 reserved
4206 \end_inset 
4207 </cell>
4208 </row>
4209 <row topline="true" bottomline="true">
4210 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4211 \begin_inset Text
4212
4213 \layout Standard
4214
4215 15
4216 \end_inset 
4217 </cell>
4218 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4219 \begin_inset Text
4220
4221 \layout Standard
4222
4223 64
4224 \end_inset 
4225 </cell>
4226 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4227 \begin_inset Text
4228
4229 \layout Standard
4230
4231 reserved
4232 \end_inset 
4233 </cell>
4234 </row>
4235 </lyxtabular>
4236
4237 \end_inset 
4238
4239
4240 \layout Caption
4241
4242 In-band signalling codes
4243 \begin_inset LatexCommand \label{cap:In-band-signalling-codes}
4244
4245 \end_inset 
4246
4247
4248 \end_inset 
4249
4250
4251 \layout Standard
4252
4253 Finally, applications may define custom in-band messages using mode 13.
4254  The size of the message in bytes is encoded with 5 bits, so that the decoder
4255  can skip it if it doesn't know how to interpret it.
4256 \layout Section
4257 \pagebreak_top 
4258 Formats and standards
4259 \begin_inset LatexCommand \index{standards}
4260
4261 \end_inset 
4262
4263
4264 \layout Standard
4265
4266 Speex can encode speech in both narrowband and wideband and provides different
4267  bit-rates.
4268  However not all features must be supported by a certain implementation
4269  or device.
4270  In order to be said 
4271 \begin_inset Quotes eld
4272 \end_inset 
4273
4274 Speex compatible
4275 \begin_inset Quotes erd
4276 \end_inset 
4277
4278  (whatever that means), an implementation must implement at least a basic
4279  set of features.
4280 \layout Standard
4281
4282 At the minimum, all narrowband modes of operation MUST be supported at the
4283  decoder.
4284  This includes the decoding of a wideband bit-stream by the narrowband decoder
4285 \begin_inset Foot
4286 collapsed true
4287
4288 \layout Standard
4289
4290 The wideband bit-stream contains an embedded narrowband bit-stream which
4291  can be decoded alone
4292 \end_inset 
4293
4294 .
4295  If present, a wideband decoder MUST be able to decode a narrowband stream,
4296  and MAY either be able to decode all wideband modes or be able to decode
4297  the embedded narrowband part of all modes (which includes ignoring the
4298  high-band bits).
4299 \layout Standard
4300
4301 For encoders, at least one narrowband or wideband mode MUST be supported.
4302  The main reason why all encoding modes do not have to be supported is that
4303  some platforms may not be able to handle the complexity of encoding in
4304  some modes.
4305 \layout Subsection
4306
4307 RTP
4308 \begin_inset LatexCommand \index{RTP}
4309
4310 \end_inset 
4311
4312  Payload Format 
4313 \layout Standard
4314
4315 The latest RTP payload draft can be found at 
4316 \begin_inset LatexCommand \url{http://www.speex.org/drafts/latest}
4317
4318 \end_inset 
4319
4320 .
4321  We are (2002/11/11) about to send the latest draft to the IETF for comments.
4322  
4323 \layout Comment
4324
4325 Since Speex encoded frames already contain mode information, they can be
4326  sent without any other information in an RTP packet.
4327  If more than one frame is transmitted, no byte padding is performed at
4328  the end of frames, except the last one.
4329  The number of frames contained in each packet MUST be transmitted out-of-band.
4330  
4331 \layout Subsection
4332
4333 MIME Type
4334 \layout Standard
4335
4336 Speex will use the MIME type 
4337 \family typewriter 
4338 audio/speex
4339 \family default 
4340 .
4341  We will apply for that type in the near future.
4342 \layout Subsection
4343
4344 Ogg
4345 \begin_inset LatexCommand \index{Ogg}
4346
4347 \end_inset 
4348
4349  file format
4350 \layout Standard
4351
4352 Speex bit-streams can be stored in Ogg files.
4353  In this case, the first packet of the Ogg file contains the Speex header
4354  described in table 
4355 \begin_inset LatexCommand \ref{cap:ogg_speex_header}
4356
4357 \end_inset 
4358
4359 .
4360  All integer fields in the headers are stored as little-endian.
4361  The 
4362 \family typewriter 
4363 speex_string
4364 \family default 
4365  field must contain the 
4366 \begin_inset Quotes eld
4367 \end_inset 
4368
4369
4370 \family typewriter 
4371 Speex
4372 \family default 
4373 \SpecialChar ~
4374 \SpecialChar ~
4375 \SpecialChar ~
4376
4377 \begin_inset Quotes eld
4378 \end_inset 
4379
4380  (with 3 training spaces), which identifies the bit-stream.
4381  The next field, 
4382 \family typewriter 
4383 speex_version
4384 \family default 
4385  contains the version of Speex that encoded the file.
4386  For now, refer to speex_header.[ch] for more info.
4387  The 
4388 \emph on 
4389 beginning of stream
4390 \emph default 
4391  (
4392 \family typewriter 
4393 b_o_s
4394 \family default 
4395 ) flag is set to 1 for the header.
4396  The header packet has 
4397 \family typewriter 
4398 packetno=0
4399 \family default 
4400  and 
4401 \family typewriter 
4402 granulepos=0
4403 \family default 
4404 .
4405 \layout Standard
4406
4407 The second packet contains the Speex comment header.
4408  The format used is the Vorbis comment format described here: http://www.xiph.org/
4409 ogg/vorbis/doc/v-comment.html .
4410  This packet has 
4411 \family typewriter 
4412 packetno=1
4413 \family default 
4414  and 
4415 \family typewriter 
4416 granulepos=0
4417 \family default 
4418 .
4419 \layout Standard
4420
4421 The third and subsequant packets each contain one or more (number found
4422  in header) Speex frames.
4423  These are identified with 
4424 \family typewriter 
4425 packetno
4426 \family default 
4427  starting from 2 and the 
4428 \family typewriter 
4429 granulepos
4430 \family default 
4431  is the number of the last sample encoded in that packet.
4432  Le last of these packets has the 
4433 \emph on 
4434 end of stream
4435 \emph default 
4436  (
4437 \family typewriter 
4438 e_o_s
4439 \family default 
4440 ) flag is set to 1.
4441 \layout Standard
4442
4443
4444 \begin_inset Float table
4445 placement htbp
4446 wide true
4447 collapsed false
4448
4449 \layout Standard
4450
4451
4452 \begin_inset  Tabular
4453 <lyxtabular version="3" rows="16" columns="3">
4454 <features>
4455 <column alignment="center" valignment="top" leftline="true" width="0pt">
4456 <column alignment="center" valignment="top" leftline="true" width="0pt">
4457 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
4458 <row topline="true" bottomline="true">
4459 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4460 \begin_inset Text
4461
4462 \layout Standard
4463
4464 Field
4465 \end_inset 
4466 </cell>
4467 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4468 \begin_inset Text
4469
4470 \layout Standard
4471
4472 Type
4473 \end_inset 
4474 </cell>
4475 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4476 \begin_inset Text
4477
4478 \layout Standard
4479
4480 Size
4481 \end_inset 
4482 </cell>
4483 </row>
4484 <row topline="true">
4485 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4486 \begin_inset Text
4487
4488 \layout Standard
4489
4490 speex_string
4491 \end_inset 
4492 </cell>
4493 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4494 \begin_inset Text
4495
4496 \layout Standard
4497
4498 char[]
4499 \end_inset 
4500 </cell>
4501 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4502 \begin_inset Text
4503
4504 \layout Standard
4505
4506 8
4507 \end_inset 
4508 </cell>
4509 </row>
4510 <row topline="true">
4511 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4512 \begin_inset Text
4513
4514 \layout Standard
4515
4516 speex_version
4517 \end_inset 
4518 </cell>
4519 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4520 \begin_inset Text
4521
4522 \layout Standard
4523
4524 char[]
4525 \end_inset 
4526 </cell>
4527 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4528 \begin_inset Text
4529
4530 \layout Standard
4531
4532 20
4533 \end_inset 
4534 </cell>
4535 </row>
4536 <row topline="true">
4537 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4538 \begin_inset Text
4539
4540 \layout Standard
4541
4542 speex_header_version
4543 \end_inset 
4544 </cell>
4545 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4546 \begin_inset Text
4547
4548 \layout Standard
4549
4550 int
4551 \end_inset 
4552 </cell>
4553 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4554 \begin_inset Text
4555
4556 \layout Standard
4557
4558 4
4559 \end_inset 
4560 </cell>
4561 </row>
4562 <row topline="true">
4563 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4564 \begin_inset Text
4565
4566 \layout Standard
4567
4568 header_size
4569 \end_inset 
4570 </cell>
4571 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4572 \begin_inset Text
4573
4574 \layout Standard
4575
4576 int
4577 \end_inset 
4578 </cell>
4579 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4580 \begin_inset Text
4581
4582 \layout Standard
4583
4584 4
4585 \end_inset 
4586 </cell>
4587 </row>
4588 <row topline="true">
4589 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4590 \begin_inset Text
4591
4592 \layout Standard
4593
4594 rate
4595 \end_inset 
4596 </cell>
4597 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4598 \begin_inset Text
4599
4600 \layout Standard
4601
4602 int
4603 \end_inset 
4604 </cell>
4605 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4606 \begin_inset Text
4607
4608 \layout Standard
4609
4610 4
4611 \end_inset 
4612 </cell>
4613 </row>
4614 <row topline="true">
4615 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4616 \begin_inset Text
4617
4618 \layout Standard
4619
4620 mode
4621 \end_inset 
4622 </cell>
4623 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4624 \begin_inset Text
4625
4626 \layout Standard
4627
4628 int
4629 \end_inset 
4630 </cell>
4631 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4632 \begin_inset Text
4633
4634 \layout Standard
4635
4636 4
4637 \end_inset 
4638 </cell>
4639 </row>
4640 <row topline="true">
4641 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4642 \begin_inset Text
4643
4644 \layout Standard
4645
4646 mode_bitstream_version
4647 \end_inset 
4648 </cell>
4649 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4650 \begin_inset Text
4651
4652 \layout Standard
4653
4654 int
4655 \end_inset 
4656 </cell>
4657 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4658 \begin_inset Text
4659
4660 \layout Standard
4661
4662 4
4663 \end_inset 
4664 </cell>
4665 </row>
4666 <row topline="true">
4667 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4668 \begin_inset Text
4669
4670 \layout Standard
4671
4672 nb_channels
4673 \end_inset 
4674 </cell>
4675 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4676 \begin_inset Text
4677
4678 \layout Standard
4679
4680 int
4681 \end_inset 
4682 </cell>
4683 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4684 \begin_inset Text
4685
4686 \layout Standard
4687
4688 4
4689 \end_inset 
4690 </cell>
4691 </row>
4692 <row topline="true">
4693 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4694 \begin_inset Text
4695
4696 \layout Standard
4697
4698 bitrate
4699 \end_inset 
4700 </cell>
4701 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4702 \begin_inset Text
4703
4704 \layout Standard
4705
4706 int
4707 \end_inset 
4708 </cell>
4709 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4710 \begin_inset Text
4711
4712 \layout Standard
4713
4714 4
4715 \end_inset 
4716 </cell>
4717 </row>
4718 <row topline="true">
4719 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4720 \begin_inset Text
4721
4722 \layout Standard
4723
4724 frame_size
4725 \end_inset 
4726 </cell>
4727 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4728 \begin_inset Text
4729
4730 \layout Standard
4731
4732 int
4733 \end_inset 
4734 </cell>
4735 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4736 \begin_inset Text
4737
4738 \layout Standard
4739
4740 4
4741 \end_inset 
4742 </cell>
4743 </row>
4744 <row topline="true">
4745 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4746 \begin_inset Text
4747
4748 \layout Standard
4749
4750 vbr
4751 \end_inset 
4752 </cell>
4753 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4754 \begin_inset Text
4755
4756 \layout Standard
4757
4758 int
4759 \end_inset 
4760 </cell>
4761 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4762 \begin_inset Text
4763
4764 \layout Standard
4765
4766 4
4767 \end_inset 
4768 </cell>
4769 </row>
4770 <row topline="true">
4771 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4772 \begin_inset Text
4773
4774 \layout Standard
4775
4776 frames_per_packet
4777 \end_inset 
4778 </cell>
4779 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4780 \begin_inset Text
4781
4782 \layout Standard
4783
4784 int
4785 \end_inset 
4786 </cell>
4787 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4788 \begin_inset Text
4789
4790 \layout Standard
4791
4792 4
4793 \end_inset 
4794 </cell>
4795 </row>
4796 <row topline="true">
4797 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4798 \begin_inset Text
4799
4800 \layout Standard
4801
4802 reserved1
4803 \end_inset 
4804 </cell>
4805 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4806 \begin_inset Text
4807
4808 \layout Standard
4809
4810 int
4811 \end_inset 
4812 </cell>
4813 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4814 \begin_inset Text
4815
4816 \layout Standard
4817
4818 4
4819 \end_inset 
4820 </cell>
4821 </row>
4822 <row topline="true">
4823 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4824 \begin_inset Text
4825
4826 \layout Standard
4827
4828 reserved2
4829 \end_inset 
4830 </cell>
4831 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4832 \begin_inset Text
4833
4834 \layout Standard
4835
4836 int
4837 \end_inset 
4838 </cell>
4839 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4840 \begin_inset Text
4841
4842 \layout Standard
4843
4844 4
4845 \end_inset 
4846 </cell>
4847 </row>
4848 <row topline="true" bottomline="true">
4849 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4850 \begin_inset Text
4851
4852 \layout Standard
4853
4854 reserved3
4855 \end_inset 
4856 </cell>
4857 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4858 \begin_inset Text
4859
4860 \layout Standard
4861
4862 int
4863 \end_inset 
4864 </cell>
4865 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4866 \begin_inset Text
4867
4868 \layout Standard
4869
4870 4
4871 \end_inset 
4872 </cell>
4873 </row>
4874 </lyxtabular>
4875
4876 \end_inset 
4877
4878
4879 \layout Caption
4880
4881 Ogg/Speex header packet
4882 \begin_inset LatexCommand \label{cap:ogg_speex_header}
4883
4884 \end_inset 
4885
4886
4887 \end_inset 
4888
4889
4890 \layout Standard
4891
4892
4893 \begin_inset ERT
4894 status Collapsed
4895
4896 \layout Standard
4897
4898 \backslash 
4899 clearpage
4900 \end_inset 
4901
4902
4903 \layout Section
4904 \start_of_appendix 
4905 FAQ
4906 \layout Subsection*
4907
4908 Vorbis is open-source
4909 \begin_inset LatexCommand \index{open-source}
4910
4911 \end_inset 
4912
4913  and patent-free
4914 \begin_inset LatexCommand \index{patent}
4915
4916 \end_inset 
4917
4918 , why do we need Speex?
4919 \layout Standard
4920
4921 Vorbis is a great project but its goals are not the same as Speex.
4922  Vorbis is mostly aimed at compressing music and audio in general, while
4923  Speex targets speech only.
4924  For that reason Speex can achieve much better results than Vorbis on speech,
4925  typically 2-4 times higher compression at equal quality.
4926 \layout Subsection*
4927
4928 Ogg
4929 \begin_inset LatexCommand \index{Ogg}
4930
4931 \end_inset 
4932
4933 , Speex, Vorbis
4934 \begin_inset LatexCommand \index{Vorbis}
4935
4936 \end_inset 
4937
4938 , what's the difference?
4939 \layout Standard
4940
4941 Ogg is a 
4942 \begin_inset Quotes eld
4943 \end_inset 
4944
4945 file format
4946 \begin_inset Quotes erd
4947 \end_inset 
4948
4949  for holding multimedia data.
4950  Vorbis is an audio codec that uses Ogg to store its bit-streams as files,
4951  hence the name Ogg Vorbis.
4952  Speex also uses the Ogg format to store its bit-streams as files, so technicall
4953 y they would be 
4954 \begin_inset Quotes eld
4955 \end_inset 
4956
4957 Ogg Speex
4958 \begin_inset Quotes erd
4959 \end_inset 
4960
4961  files (I prefer to call them just Speex files).
4962  One difference with Vorbis however, is that Speex is less tied with Ogg.
4963  Actually, if what you do is Voice of IP (VoIP), you don't need Ogg at all.
4964 \layout Subsection*
4965
4966 Can I use Speex for compressing music
4967 \begin_inset LatexCommand \index{music}
4968
4969 \end_inset 
4970
4971 ?
4972 \layout Standard
4973
4974 Just like Vorbis is not really adapted to speech, Speex is really not adapted
4975  for music.
4976  In most cases, you'll be better of with Vorbis when it comes to music.
4977 \layout Subsection*
4978
4979 I converted some MP3's to Speex and the quality is bad.
4980  What's wrong?
4981 \layout Standard
4982
4983 This is called transcoding and it will always result in much poorer quality
4984  than the original MP3.
4985  Unless you have a really good (size) reason to do so, never transcode speech.
4986  This is even valid for self transcoding (tandeming), i.e.
4987  If you decode a Speex file and re-encode it again at the same bit-rate,
4988  you will lose quality.
4989 \layout Subsection*
4990
4991 Does Speex run on Windows?
4992 \layout Standard
4993
4994 As of 0.8.0, Speex can now compile on Windows, though limited testing has
4995  been done so far.
4996 \layout Subsection*
4997
4998 Why is encoding so slow compared to decoding?
4999 \layout Standard
5000
5001 For most kinds of compression, encoding is inherently slower than decoding.
5002  In the case of Speex, encoding consists of finding, for each vector of
5003  5 to 10 samples, the entry that matches the best within a codebook consisting
5004  of 16 to 256 entries.
5005  On the other hand, at decoding all that needs to be done is lookup the
5006  right entry in the codebook using the encoded index.
5007  Since a lookup is much faster than a search, the decoder works much faster
5008  than the encoder.
5009 \layout Subsection*
5010
5011 Why is Speex so slow on my iPaq (or insert any platform without an FPU)?
5012 \layout Standard
5013
5014 Well the parenthesis provides the answer: no FPU (floating-point unit).
5015  The Speex code makes heavy use of floating-point operations.
5016  On devices with no FPU, all floating-point instructions need to be emulated.
5017  This is a very time consuming operation.
5018 \layout Subsection*
5019
5020 I'm getting unusual background noise (hiss) when using libspeex in my applicatio
5021 n.
5022  How do I fix that?
5023 \layout Standard
5024
5025 One of the cause could be scaling of the input speech.
5026  Speex expects signals to have a 
5027 \begin_inset Formula $\pm 2^{15}$
5028 \end_inset 
5029
5030  (signed short) dynamic range.
5031  If the dynamic range of your signals is too small (e.g.
5032  
5033 \begin_inset Formula $\pm 1.0$
5034 \end_inset 
5035
5036 ), you will suffer important quantization noise.
5037  A good target is to have a dynamic range around 
5038 \begin_inset Formula $\pm 8000$
5039 \end_inset 
5040
5041  which is large enough, but small enough to make sure there's no clipping
5042  when converting back to signed short.
5043 \layout Subsection*
5044
5045 I get very distorted speech when using libspeex in my application.
5046  What's wrong?
5047 \layout Standard
5048
5049 There are many possible causes for that.
5050  One of them is errors in the way the bits are manipulated.
5051  Another possible cause is the use of the same encoder or decoder state
5052  for more than one audio stream (channel), which produces strange effects
5053  with the filter memories.
5054  If the input speech has an amplitude close to 
5055 \begin_inset Formula $\pm 2^{15}$
5056 \end_inset 
5057
5058 , it is possible that at decoding, the amplitude be a bit higher than that,
5059  causing clipping when saving as 16-bit PCM.
5060 \layout Subsection*
5061
5062 Can Speex pass DTMF
5063 \begin_inset LatexCommand \index{DTMF}
5064
5065 \end_inset 
5066
5067 ?
5068 \layout Standard
5069
5070 I guess it all depends on the bit-rate used.
5071  Though no formal testing has yet been performed, I'd say don't go below
5072  the 15 kbps mode if you want DTMF to be transmitted correctly.
5073  Also, make sure you don't use the lowest complexity (see SPEEX_SET_COMPLEXITY
5074  or --comp option), as it causes important noise.
5075 \layout Subsection*
5076
5077 Can Speex pass V.9x modem signals correctly?
5078 \layout Standard
5079
5080 If I could to that I'd be very rich by now :-)
5081 \layout Subsection*
5082
5083 What is your (Jean-Marc) relationship with the University of Sherbrooke
5084  and how does Speex fit into that?
5085 \layout Standard
5086
5087 I am currently (2002/08/13) doing a Ph.D.
5088  at the University of Sherbrooke in mobile robotics.
5089  Although I did my master with the Sherbrooke speech coding group (in speech
5090  enhancement, not coding), I am not associated with them anymore.
5091  It should 
5092 \series bold 
5093 not
5094 \series default 
5095  be understood that they or the University of Sherbrooke endorse the Speex
5096  project in any way.
5097  Furthermore, Speex does not make use of any code or proprietary technology
5098  developed in the Sherbrooke speech coding group.
5099  
5100 \layout Subsection*
5101
5102 CELP, ACELP
5103 \begin_inset LatexCommand \index{ACELP}
5104
5105 \end_inset 
5106
5107 , what's the difference?
5108 \layout Standard
5109
5110 CELP stands for 
5111 \begin_inset Quotes eld
5112 \end_inset 
5113
5114 Code Excited Linear Prediction
5115 \begin_inset Quotes erd
5116 \end_inset 
5117
5118 , while ACELP stands for 
5119 \begin_inset Quotes eld
5120 \end_inset 
5121
5122
5123 \emph on 
5124 Algebraic
5125 \emph default 
5126  Code Excited Linear Prediction
5127 \begin_inset Quotes erd
5128 \end_inset 
5129
5130 .
5131  That means ACELP is a CELP technique that uses an algebraic codebook represente
5132 d as a sum of unit pulses, thus making the codebook search much more efficient.
5133  This technique was invented at the University of Sherbrooke and is now
5134  one of the most widely used form of CELP.
5135  Unfortunately, since it is patented, it cannot be used in Speex.
5136 \layout Section
5137 \pagebreak_top 
5138 GNU Free Documentation License
5139 \layout Standard
5140
5141 Version 1.1, March 2000
5142 \layout Standard
5143
5144 Copyright (C) 2000 Free Software Foundation, Inc.
5145  59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted
5146  to copy and distribute verbatim copies of this license document, but changing
5147  it is not allowed.
5148  
5149 \layout Subsection*
5150
5151 0.
5152  PREAMBLE
5153 \layout Standard
5154
5155 The purpose of this License is to make a manual, textbook, or other written
5156  document "free" in the sense of freedom: to assure everyone the effective
5157  freedom to copy and redistribute it, with or without modifying it, either
5158  commercially or noncommercially.
5159  Secondarily, this License preserves for the author and publisher a way
5160  to get credit for their work, while not being considered responsible for
5161  modifications made by others.
5162 \layout Standard
5163
5164 This License is a kind of "copyleft", which means that derivative works
5165  of the document must themselves be free in the same sense.
5166  It complements the GNU General Public License, which is a copyleft license
5167  designed for free software.
5168 \layout Standard
5169
5170 We have designed this License in order to use it for manuals for free software,
5171  because free software needs free documentation: a free program should come
5172  with manuals providing the same freedoms that the software does.
5173  But this License is not limited to software manuals; it can be used for
5174  any textual work, regardless of subject matter or whether it is published
5175  as a printed book.
5176  We recommend this License principally for works whose purpose is instruction
5177  or reference.
5178  
5179 \layout Subsection*
5180
5181 1.
5182  APPLICABILITY AND DEFINITIONS
5183 \layout Standard
5184
5185 This License applies to any manual or other work that contains a notice
5186  placed by the copyright holder saying it can be distributed under the terms
5187  of this License.
5188  The "Document", below, refers to any such manual or work.
5189  Any member of the public is a licensee, and is addressed as "you".
5190 \layout Standard
5191
5192 A "Modified Version" of the Document means any work containing the Document
5193  or a portion of it, either copied verbatim, or with modifications and/or
5194  translated into another language.
5195 \layout Standard
5196
5197 A "Secondary Section" is a named appendix or a front-matter section of the
5198  Document that deals exclusively with the relationship of the publishers
5199  or authors of the Document to the Document's overall subject (or to related
5200  matters) and contains nothing that could fall directly within that overall
5201  subject.
5202  (For example, if the Document is in part a textbook of mathematics, a Secondary
5203  Section may not explain any mathematics.) The relationship could be a matter
5204  of historical connection with the subject or with related matters, or of
5205  legal, commercial, philosophical, ethical or political position regarding
5206  them.
5207 \layout Standard
5208
5209 The "Invariant Sections" are certain Secondary Sections whose titles are
5210  designated, as being those of Invariant Sections, in the notice that says
5211  that the Document is released under this License.
5212 \layout Standard
5213
5214 The "Cover Texts" are certain short passages of text that are listed, as
5215  Front-Cover Texts or Back-Cover Texts, in the notice that says that the
5216  Document is released under this License.
5217 \layout Standard
5218
5219 A "Transparent" copy of the Document means a machine-readable copy, represented
5220  in a format whose specification is available to the general public, whose
5221  contents can be viewed and edited directly and straightforwardly with generic
5222  text editors or (for images composed of pixels) generic paint programs
5223  or (for drawings) some widely available drawing editor, and that is suitable
5224  for input to text formatters or for automatic translation to a variety
5225  of formats suitable for input to text formatters.
5226  A copy made in an otherwise Transparent file format whose markup has been
5227  designed to thwart or discourage subsequent modification by readers is
5228  not Transparent.
5229  A copy that is not "Transparent" is called "Opaque".
5230 \layout Standard
5231
5232 Examples of suitable formats for Transparent copies include plain ASCII
5233  without markup, Texinfo input format, LaTeX input format, SGML or XML using
5234  a publicly available DTD, and standard-conforming simple HTML designed
5235  for human modification.
5236  Opaque formats include PostScript, PDF, proprietary formats that can be
5237  read and edited only by proprietary word processors, SGML or XML for which
5238  the DTD and/or processing tools are not generally available, and the machine-ge
5239 nerated HTML produced by some word processors for output purposes only.
5240 \layout Standard
5241
5242 The "Title Page" means, for a printed book, the title page itself, plus
5243  such following pages as are needed to hold, legibly, the material this
5244  License requires to appear in the title page.
5245  For works in formats which do not have any title page as such, "Title Page"
5246  means the text near the most prominent appearance of the work's title,
5247  preceding the beginning of the body of the text.
5248 \layout Subsection*
5249
5250 2.
5251  VERBATIM COPYING
5252 \layout Standard
5253
5254 You may copy and distribute the Document in any medium, either commercially
5255  or noncommercially, provided that this License, the copyright notices,
5256  and the license notice saying this License applies to the Document are
5257  reproduced in all copies, and that you add no other conditions whatsoever
5258  to those of this License.
5259  You may not use technical measures to obstruct or control the reading or
5260  further copying of the copies you make or distribute.
5261  However, you may accept compensation in exchange for copies.
5262  If you distribute a large enough number of copies you must also follow
5263  the conditions in section 3.
5264 \layout Standard
5265
5266 You may also lend copies, under the same conditions stated above, and you
5267  may publicly display copies.
5268 \layout Subsection*
5269
5270 3.
5271  COPYING IN QUANTITY
5272 \layout Standard
5273
5274 If you publish printed copies of the Document numbering more than 100, and
5275  the Document's license notice requires Cover Texts, you must enclose the
5276  copies in covers that carry, clearly and legibly, all these Cover Texts:
5277  Front-Cover Texts on the front cover, and Back-Cover Texts on the back
5278  cover.
5279  Both covers must also clearly and legibly identify you as the publisher
5280  of these copies.
5281  The front cover must present the full title with all words of the title
5282  equally prominent and visible.
5283  You may add other material on the covers in addition.
5284  Copying with changes limited to the covers, as long as they preserve the
5285  title of the Document and satisfy these conditions, can be treated as verbatim
5286  copying in other respects.
5287 \layout Standard
5288
5289 If the required texts for either cover are too voluminous to fit legibly,
5290  you should put the first ones listed (as many as fit reasonably) on the
5291  actual cover, and continue the rest onto adjacent pages.
5292 \layout Standard
5293
5294 If you publish or distribute Opaque copies of the Document numbering more
5295  than 100, you must either include a machine-readable Transparent copy along
5296  with each Opaque copy, or state in or with each Opaque copy a publicly-accessib
5297 le computer-network location containing a complete Transparent copy of the
5298  Document, free of added material, which the general network-using public
5299  has access to download anonymously at no charge using public-standard network
5300  protocols.
5301  If you use the latter option, you must take reasonably prudent steps, when
5302  you begin distribution of Opaque copies in quantity, to ensure that this
5303  Transparent copy will remain thus accessible at the stated location until
5304  at least one year after the last time you distribute an Opaque copy (directly
5305  or through your agents or retailers) of that edition to the public.
5306 \layout Standard
5307
5308 It is requested, but not required, that you contact the authors of the Document
5309  well before redistributing any large number of copies, to give them a chance
5310  to provide you with an updated version of the Document.
5311  
5312 \layout Subsection*
5313
5314 4.
5315  MODIFICATIONS
5316 \layout Standard
5317
5318 You may copy and distribute a Modified Version of the Document under the
5319  conditions of sections 2 and 3 above, provided that you release the Modified
5320  Version under precisely this License, with the Modified Version filling
5321  the role of the Document, thus licensing distribution and modification
5322  of the Modified Version to whoever possesses a copy of it.
5323  In addition, you must do these things in the Modified Version: 
5324 \layout Itemize
5325
5326 A.
5327  Use in the Title Page (and on the covers, if any) a title distinct from
5328  that of the Document, and from those of previous versions (which should,
5329  if there were any, be listed in the History section of the Document).
5330  You may use the same title as a previous version if the original publisher
5331  of that version gives permission.
5332 \layout Itemize
5333
5334 B.
5335  List on the Title Page, as authors, one or more persons or entities responsible
5336  for authorship of the modifications in the Modified Version, together with
5337  at least five of the principal authors of the Document (all of its principal
5338  authors, if it has less than five).
5339 \layout Itemize
5340
5341 C.
5342  State on the Title page the name of the publisher of the Modified Version,
5343  as the publisher.
5344 \layout Itemize
5345
5346 D.
5347  Preserve all the copyright notices of the Document.
5348 \layout Itemize
5349
5350 E.
5351  Add an appropriate copyright notice for your modifications adjacent to
5352  the other copyright notices.
5353 \layout Itemize
5354
5355 F.
5356  Include, immediately after the copyright notices, a license notice giving
5357  the public permission to use the Modified Version under the terms of this
5358  License, in the form shown in the Addendum below.
5359 \layout Itemize
5360
5361 G.
5362  Preserve in that license notice the full lists of Invariant Sections and
5363  required Cover Texts given in the Document's license notice.
5364 \layout Itemize
5365
5366 H.
5367  Include an unaltered copy of this License.
5368 \layout Itemize
5369
5370 I.
5371  Preserve the section entitled "History", and its title, and add to it an
5372</