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