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