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