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