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