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