misc.
[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 Subsection*
3158
3159 Sampling rate
3160 \begin_inset LatexCommand \index{sampling rate}
3161
3162 \end_inset 
3163
3164
3165 \layout Standard
3166
3167 Speex is mainly designed for 3 different sampling rates: 8 kHz, 16 kHz,
3168  and 32 kHz.
3169  These are respectively refered to as narrowband
3170 \begin_inset LatexCommand \index{narrowband}
3171
3172 \end_inset 
3173
3174 , wideband
3175 \begin_inset LatexCommand \index{wideband}
3176
3177 \end_inset 
3178
3179  and ultra-wideband
3180 \begin_inset LatexCommand \index{ultra-wideband}
3181
3182 \end_inset 
3183
3184 .
3185  
3186 \layout Subsection*
3187
3188 Quality
3189 \begin_inset LatexCommand \index{quality}
3190
3191 \end_inset 
3192
3193
3194 \layout Standard
3195
3196 Speex encoding is controlled most of the time by a quality parameter that
3197  range from 0 to 10.
3198  In constant bit-rate
3199 \begin_inset LatexCommand \index{constant bit-rate}
3200
3201 \end_inset 
3202
3203  (CBR) operation, the quality parameter is an integer, while for variable
3204  bit-rate (VBR), the parameter is a float.
3205  
3206 \layout Subsection*
3207
3208 Complexity
3209 \begin_inset LatexCommand \index{complexity}
3210
3211 \end_inset 
3212
3213  (variable)
3214 \layout Standard
3215
3216 With Speex, it is possible to vary the complexity allowed for the encoder.
3217  This is done by controlling how the search is performed with an integer
3218  ranging from 1 to 10 in a way that's similar to the -1 to -9 options to
3219  
3220 \emph on 
3221 gzip
3222 \emph default 
3223  and 
3224 \emph on 
3225 bzip2
3226 \emph default 
3227  compression utilities.
3228  For normal use, the noise level at complexity 1is between 1 and 2 dB higher
3229  than at complexity 10, but the CPU requirements for complexity 10 is about
3230  5 time higher than for complexity 1.
3231  In practice, the best trade-off is between complexity 2 and 4, though higher
3232  settings are often useful when encoding non-speech sounds like DTMF
3233 \begin_inset LatexCommand \index{DTMF}
3234
3235 \end_inset 
3236
3237  tones.
3238 \layout Subsection*
3239
3240 Variable Bit-Rate
3241 \begin_inset LatexCommand \index{variable bit-rate}
3242
3243 \end_inset 
3244
3245  (VBR)
3246 \layout Standard
3247
3248 Variable bit-rate (VBR) allows a codec to change its bit-rate dynamically
3249  to adapt to the 
3250 \begin_inset Quotes eld
3251 \end_inset 
3252
3253 difficulty
3254 \begin_inset Quotes erd
3255 \end_inset 
3256
3257  of the audio being encoded.
3258  In the example of Speex, sounds like vowels and high-energy transients
3259  require a higher bit-rate to achieve good quality, while fricatives (e.g.
3260  s,f sounds) can be coded adequately with less bits.
3261  For this reason, VBR can achive lower bit-rate for the same quality, or
3262  a better quality for a certain bit-rate.
3263  Despite its advantages, VBR has two main drawbacks: first, by only specifying
3264  quality, there's no guaranty about the final average bit-rate.
3265  Second, for some real-time applications like voice over IP (VoIP), what
3266  counts is the maximum bit-rate, which must be low enough for the communication
3267  channel.
3268 \layout Subsection*
3269
3270 Average Bit-Rate
3271 \begin_inset LatexCommand \index{average bit-rate}
3272
3273 \end_inset 
3274
3275  (ABR)
3276 \layout Standard
3277
3278 Average bit-rate solves one of the problems of VBR, as it dynamically adjusts
3279  VBR quality in order to meet a specific target bit-rate.
3280  Because the quality/bit-rate is adjusted in real-time (open-loop), the
3281  global quality will be slightly lower than that obtained be encoding in
3282  VBR with exactly the right quality setting to meet the target average bit-rate.
3283 \layout Subsection*
3284
3285 Voice Activity Detection
3286 \begin_inset LatexCommand \index{voice activity detection}
3287
3288 \end_inset 
3289
3290  (VAD)
3291 \layout Standard
3292
3293 When enabled, voice activity detection detects whether the audio being encoded
3294  is speech or silence/background noise.
3295  VAD is always implicitly activated when encoding in VBR, so the option
3296  is only useful in non-VBR operation.
3297  In this case, Speex detects non-speech periods and encode them with just
3298  enough bits to reproduce the background noise.
3299  This is called 
3300 \begin_inset Quotes eld
3301 \end_inset 
3302
3303 comfort noise generation
3304 \begin_inset Quotes erd
3305 \end_inset 
3306
3307  (CNG).
3308 \layout Subsection*
3309
3310 Discontinuous Transmission
3311 \begin_inset LatexCommand \index{discontinuous transmission}
3312
3313 \end_inset 
3314
3315  (DTX)
3316 \layout Standard
3317
3318 Discontinuous transmission is an addition to VAD operation, that allows
3319  to stop transmitting completely when the background noise is stationnary.
3320  In file-based operation, since we cannot just stop writing to the file,
3321  only 5 bits are used for such frames (corresponding to 250 bps).
3322 \layout Subsection*
3323
3324 Perceptual enhancement
3325 \begin_inset LatexCommand \index{perceptual enhancement}
3326
3327 \end_inset 
3328
3329
3330 \layout Standard
3331
3332 Perceptual enhancement is a part of the decoder which, when turned on, tries
3333  to reduce (the perception of) the noise produced by the coding/decoding
3334  process.
3335  In most cases, perceptual enhancement make the sound further from the original
3336  
3337 \emph on 
3338 objectively
3339 \emph default 
3340  (if you use SNR), but in the end it still 
3341 \emph on 
3342 sounds
3343 \emph default 
3344  better (subjective improvement).
3345 \layout Subsection*
3346
3347 Algorithmic delay
3348 \begin_inset LatexCommand \index{algorithmic delay}
3349
3350 \end_inset 
3351
3352
3353 \layout Standard
3354
3355 Every speech codec introduces a delay in the transmission.
3356  For Speex, this delay is equal to the frame size, plus some amount of 
3357 \begin_inset Quotes eld
3358 \end_inset 
3359
3360 look-ahead
3361 \begin_inset Quotes erd
3362 \end_inset 
3363
3364  required to process each frame.
3365  In narrowband operation (8 kHz), the delay is 30 ms, while for wideband
3366  (16 kHz), the delay is 34 ms.
3367  These values don't account for the CPU time it takes to encode or decode
3368  the frames.
3369 \layout Section
3370 \pagebreak_top 
3371 Command-line encoder/decoder
3372 \begin_inset LatexCommand \label{sec:Command-line-encoder/decoder}
3373
3374 \end_inset 
3375
3376
3377 \layout Standard
3378
3379 The base Speex distribution includes a command-line encoder (
3380 \emph on 
3381 speexenc
3382 \emph default 
3383 ) and decoder (
3384 \emph on 
3385 speexdec
3386 \emph default 
3387 ).
3388  This section describes how to use these tools.
3389 \layout Subsection
3390
3391
3392 \emph on 
3393 speexenc
3394 \begin_inset LatexCommand \index{speexenc}
3395
3396 \end_inset 
3397
3398
3399 \layout Standard
3400
3401 The 
3402 \emph on 
3403 speexenc
3404 \emph default 
3405  utility is used to create Speex files from raw PCM or wave files.
3406  It can be used by calling: 
3407 \layout LyX-Code
3408
3409 speexenc [options] input_file output_file
3410 \layout Standard
3411
3412 The value '-' for input_file or output_file corresponds respectively to
3413  stdin and stdout.
3414  The valid options are:
3415 \layout Description
3416
3417 --narrowband\SpecialChar ~
3418 (-n) Tell Speex to treat the input as narrowband (8 kHz).
3419  This is the default
3420 \layout Description
3421
3422 --wideband\SpecialChar ~
3423 (-w) Tell Speex to treat the input as wideband (16 kHz)
3424 \layout Description
3425
3426 --ultra-wideband\SpecialChar ~
3427 (-u) Tell Speex to treat the input as 
3428 \begin_inset Quotes eld
3429 \end_inset 
3430
3431 ultra-wideband
3432 \begin_inset Quotes erd
3433 \end_inset 
3434
3435  (32 kHz)
3436 \layout Description
3437
3438 --quality\SpecialChar ~
3439 n Set the encoding quality (0-10), default is 8
3440 \layout Description
3441
3442 --bitrate\SpecialChar ~
3443 n Encoding bit-rate (use bit-rate n or lower) 
3444 \layout Description
3445
3446 --vbr Enable VBR (Variable Bit-Rate), disabled by default
3447 \layout Description
3448
3449 --abr\SpecialChar ~
3450 n Enable ABR (Average Bit-Rate) at n kbps, disabled by default
3451 \layout Description
3452
3453 --vad Enable VAD (Voice Activity Detection), disabled by default
3454 \layout Description
3455
3456 --dtx Enable DTX (Discontinuous Transmission), disabled by default
3457 \layout Description
3458
3459 --nframes\SpecialChar ~
3460 n Pack n frames in each Ogg packet (this saves space at low bit-rates)
3461 \layout Description
3462
3463 --comp\SpecialChar ~
3464 n Set encoding speed/quality tradeoff.
3465  The higher the value of n, the slower the encoding (default is 3)
3466 \layout Description
3467
3468 -V Verbose operation, print bit-rate currently in use
3469 \layout Description
3470
3471 --help\SpecialChar ~
3472 (-h) Print the help
3473 \layout Description
3474
3475 --version\SpecialChar ~
3476 (-v) Print version information
3477 \layout Subsubsection*
3478
3479 Speex comments
3480 \layout Description
3481
3482 --comment Add the given string as an extra comment.
3483  This may be used multiple times.
3484  
3485 \layout Description
3486
3487 --author Author of this track.
3488  
3489 \layout Description
3490
3491 --title Title for this track.
3492  
3493 \layout Subsubsection*
3494
3495 Raw input options
3496 \layout Description
3497
3498 --rate\SpecialChar ~
3499 n Sampling rate for raw input
3500 \layout Description
3501
3502 --stereo Consider raw input as stereo 
3503 \layout Description
3504
3505 --le Raw input is little-endian 
3506 \layout Description
3507
3508 --be Raw input is big-endian 
3509 \layout Description
3510
3511 --8bit Raw input is 8-bit unsigned 
3512 \layout Description
3513
3514 --16bit Raw input is 16-bit signed 
3515 \layout Subsection
3516
3517
3518 \emph on 
3519 speexdec
3520 \begin_inset LatexCommand \index{speexdec}
3521
3522 \end_inset 
3523
3524
3525 \layout Standard
3526
3527 The 
3528 \emph on 
3529 speexdec
3530 \emph default 
3531  utility is used to decode Speex files and can be used by calling: 
3532 \layout LyX-Code
3533
3534 speexdec [options] speex_file [output_file]
3535 \layout Standard
3536
3537 The value '-' for input_file or output_file corresponds respectively to
3538  stdin and stdout.
3539  Also, when no output_file is specified, the file is played to the soundcard.
3540  The valid options are:
3541 \layout Description
3542
3543 --enh enable post-filter (default)
3544 \layout Description
3545
3546 --no-enh disable post-filter
3547 \layout Description
3548
3549 --force-nb Force decoding in narrowband 
3550 \layout Description
3551
3552 --force-wb Force decoding in wideband 
3553 \layout Description
3554
3555 --force-uwb Force decoding in ultra-wideband 
3556 \layout Description
3557
3558 --mono Force decoding in mono 
3559 \layout Description
3560
3561 --stereo Force decoding in stereo 
3562 \layout Description
3563
3564 --rate\SpecialChar ~
3565 n For decoding at n Hz sampling rate
3566 \layout Description
3567
3568 --packet-loss\SpecialChar ~
3569 n Simulate n % random packet loss
3570 \layout Description
3571
3572 -V Verbose operation, print bit-rate currently in use
3573 \layout Description
3574
3575 --help\SpecialChar ~
3576 (-h) Print the help
3577 \layout Description
3578
3579 --version\SpecialChar ~
3580 (-v) Print version information
3581 \layout Section
3582 \pagebreak_top 
3583 Programming with Speex (the libspeex
3584 \begin_inset LatexCommand \index{libspeex}
3585
3586 \end_inset 
3587
3588  API
3589 \begin_inset LatexCommand \index{API}
3590
3591 \end_inset 
3592
3593 )
3594 \layout Subsection
3595
3596 Encoding
3597 \layout Standard
3598
3599 In order to encode speech using Speex, you first need to:
3600 \layout LyX-Code
3601
3602 #include <speex.h>
3603 \layout Standard
3604
3605 You then need to declare a Speex bit-packing struct
3606 \layout LyX-Code
3607
3608 SpeexBits bits;
3609 \layout Standard
3610
3611 and a Speex encoder state
3612 \layout LyX-Code
3613
3614 void *enc_state;
3615 \layout Standard
3616
3617 The two are initialized by:
3618 \layout LyX-Code
3619
3620 speex_bits_init(&bits);
3621 \layout LyX-Code
3622
3623 enc_state = speex_encoder_init(&speex_nb_mode);
3624 \layout Standard
3625
3626 For wideband coding, 
3627 \emph on 
3628 speex_nb_mode
3629 \emph default 
3630  will be replaced by 
3631 \emph on 
3632 speex_wb_mode
3633 \emph default 
3634 .
3635  In most cases, you will need to know the frame size used by the mode you
3636  are using.
3637  You can get that value in the 
3638 \emph on 
3639 frame_size
3640 \emph default 
3641  variable with:
3642 \layout LyX-Code
3643
3644 speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
3645 \layout Standard
3646
3647 Once the initialization is done, for every input frame:
3648 \layout LyX-Code
3649
3650 speex_bits_reset(&bits);
3651 \layout LyX-Code
3652
3653 speex_encode(enc_state, input_frame, &bits);
3654 \layout LyX-Code
3655
3656 nbBytes = speex_bits_write(&bits, byte_ptr, MAX_NB_BYTES);
3657 \layout Standard
3658
3659 where 
3660 \emph on 
3661 input_frame
3662 \emph default 
3663  is a 
3664 \emph on 
3665 (float *)
3666 \emph default 
3667  pointing to the beginning of a speech frame, 
3668 \emph on 
3669 byte_ptr
3670 \emph default 
3671  is a 
3672 \emph on 
3673 (char *)
3674 \emph default 
3675  where the encoded frame will be written, 
3676 \emph on 
3677 MAX_NB_BYTES
3678 \emph default 
3679  is the maximum number of bytes that can be written to 
3680 \emph on 
3681 byte_ptr
3682 \emph default 
3683  without causing an overflow and 
3684 \emph on 
3685 nbBytes
3686 \emph default 
3687  is the number of bytes actually written to 
3688 \emph on 
3689 byte_ptr
3690 \emph default 
3691  (the encoded size in bytes).
3692  Before calling speex_bits_write, it is possible to find the number of bytes
3693  that need to be written by calling 
3694 \family typewriter 
3695 speex_bits_nbytes(&bits)
3696 \family default 
3697 , which returns a number of bytes.
3698  
3699 \layout Standard
3700
3701 After you're done with the encoding, free all resources with:
3702 \layout LyX-Code
3703
3704 speex_bits_destroy(&bits);
3705 \layout LyX-Code
3706
3707 speex_encoder_destroy(enc_state);
3708 \layout Standard
3709
3710 That's about it for the encoder.
3711  
3712 \layout Subsection
3713
3714 Decoding
3715 \layout Standard
3716
3717 In order to encode speech using Speex, you first need to:
3718 \layout LyX-Code
3719
3720 #include <speex.h>
3721 \layout Standard
3722
3723 You also need to declare a Speex bit-packing struct
3724 \layout LyX-Code
3725
3726 SpeexBits bits;
3727 \layout Standard
3728
3729 and a Speex encoder state
3730 \layout LyX-Code
3731
3732 void *dec_state;
3733 \layout Standard
3734
3735 The two are initialized by:
3736 \layout LyX-Code
3737
3738 speex_bits_init(&bits);
3739 \layout LyX-Code
3740
3741 dec_state = speex_decoder_init(&speex_nb_mode);
3742 \layout Standard
3743
3744 For wideband decoding, 
3745 \emph on 
3746 speex_nb_mode
3747 \emph default 
3748  will be replaced by 
3749 \emph on 
3750 speex_wb_mode
3751 \emph default 
3752 .
3753  If you need to obtain the size of the frames that will be used by the decoder,
3754  you can get that value in the 
3755 \emph on 
3756 frame_size
3757 \emph default 
3758  variable with:
3759 \layout LyX-Code
3760
3761 speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size); 
3762 \layout Standard
3763
3764 There is also a parameter that can be set for the decoder: whether or not
3765  to use a perceptual post-filter.
3766  This can be set by: 
3767 \layout LyX-Code
3768
3769 speex_decoder_ctl(dec_state, SPEEX_SET_ENH, &enh); 
3770 \layout Standard
3771
3772 where 
3773 \emph on 
3774 enh
3775 \emph default 
3776  is an int that with value 0 to have the post-filter disabled and 1 to have
3777  it enabled.
3778 \layout Standard
3779
3780 Again, once the decoder initialization is done, for every input frame:
3781 \layout LyX-Code
3782
3783 speex_bits_read_from(&bits, input_bytes, nbBytes);
3784 \layout LyX-Code
3785
3786 speex_decode(st, &bits, output_frame);
3787 \layout Standard
3788
3789 where input_bytes is a 
3790 \emph on 
3791 (char *)
3792 \emph default 
3793  containing the bit-stream data received for a frame, 
3794 \emph on 
3795 nbBytes
3796 \emph default 
3797  is the size (in bytes) of that bit-stream, and 
3798 \emph on 
3799 output_frame
3800 \emph default 
3801  is a 
3802 \emph on 
3803 (float *)
3804 \emph default 
3805  and points to the area where the decoded speech frame will be written.
3806  A NULL value as the first argument indicates that we don't have the bits
3807  for the current frame.
3808  When a frame is lost, the Speex decoder will do its best to "guess" the
3809  correct signal.
3810 \layout Standard
3811
3812 After you're done with the decoding, free all resources with:
3813 \layout LyX-Code
3814
3815 speex_bits_destroy(&bits);
3816 \layout LyX-Code
3817
3818 speex_decoder_destroy(dec_state);
3819 \layout Subsection
3820
3821 Codec Options (speex_*_ctl)
3822 \layout Standard
3823
3824 The Speex encoder and decoder support many options and requests that can
3825  be accessed through the 
3826 \emph on 
3827 speex_encoder_ctl
3828 \emph default 
3829  and 
3830 \emph on 
3831 speex_decoder_ctl
3832 \emph default 
3833  functions.
3834  These functions are similar the the 
3835 \emph on 
3836 ioctl
3837 \emph default 
3838  system call and their prototypes are:
3839 \layout LyX-Code
3840
3841 void speex_encoder_ctl(void *encoder, int request, void *ptr);
3842 \layout LyX-Code
3843
3844 void speex_decoder_ctl(void *encoder, int request, void *ptr);
3845 \layout Standard
3846
3847 The different values of request allowed are (note that some only apply to
3848  the encoder or the decoder):
3849 \layout Description
3850
3851 SPEEX_SET_ENH** Set perceptual enhancer
3852 \begin_inset LatexCommand \index{perceptual enhancement}
3853
3854 \end_inset 
3855
3856  to on (1) or off (0) (integer)
3857 \layout Description
3858
3859 SPEEX_GET_ENH** Get perceptual enhancer status (integer)
3860 \layout Description
3861
3862 SPEEX_GET_FRAME_SIZE Get the frame size used for the current mode (integer)
3863 \layout Description
3864
3865 SPEEX_SET_QUALITY* Set the encoder speech quality (integer 0 to 10)
3866 \layout Description
3867
3868 SPEEX_GET_QUALITY* Get the current encoder speech quality (integer 0 to
3869  10)
3870 \layout Description
3871
3872 SPEEX_SET_MODE*
3873 \begin_inset Formula $\dagger $
3874 \end_inset 
3875
3876
3877 \layout Description
3878
3879 SPEEX_GET_MODE*
3880 \begin_inset Formula $\dagger $
3881 \end_inset 
3882
3883
3884 \layout Description
3885
3886 SPEEX_SET_LOW_MODE*
3887 \begin_inset Formula $\dagger $
3888 \end_inset 
3889
3890
3891 \layout Description
3892
3893 SPEEX_GET_LOW_MODE*
3894 \begin_inset Formula $\dagger $
3895 \end_inset 
3896
3897
3898 \layout Description
3899
3900 SPEEX_SET_HIGH_MODE*
3901 \begin_inset Formula $\dagger $
3902 \end_inset 
3903
3904
3905 \layout Description
3906
3907 SPEEX_GET_HIGH_MODE*
3908 \begin_inset Formula $\dagger $
3909 \end_inset 
3910
3911
3912 \layout Description
3913
3914 SPEEX_SET_VBR* Set variable bit-rate (VBR) to on (1) or off (0) (integer)
3915 \layout Description
3916
3917 SPEEX_GET_VBR* Get variable bit-rate
3918 \begin_inset LatexCommand \index{variable bit-rate}
3919
3920 \end_inset 
3921
3922  (VBR) status (integer)
3923 \layout Description
3924
3925 SPEEX_SET_VBR_QUALITY* Set the encoder VBR speech quality (integer 0 to
3926  10)
3927 \layout Description
3928
3929 SPEEX_GET_VBR_QUALITY* Get the current encoder VBR speech quality (integer
3930  0 to 10)
3931 \layout Description
3932
3933 SPEEX_SET_COMPLEXITY* Set the CPU resources allowed for the encoder (integer
3934  1 to 10)
3935 \layout Description
3936
3937 SPEEX_GET_COMPLEXITY* Get the CPU resources allowed for the encoder (integer
3938  1 to 10)
3939 \layout Description
3940
3941 SPEEX_SET_BITRATE* Set the bit-rate to use to the closest value not exceeding
3942  the parameter (integer in bps)
3943 \layout Description
3944
3945 SPEEX_GET_BITRATE Get the current bit-rate in use (integer in bps)
3946 \layout Description
3947
3948 SPEEX_SET_SAMPLING_RATE Set real sampling rate (integer in Hz)
3949 \layout Description
3950
3951 SPEEX_GET_SAMPLING_RATE Get real sampling rate (integer in Hz)
3952 \layout Description
3953
3954 SPEEX_RESET_STATE Reset the encoder/decoder state to its original state
3955  (zeros all memories)
3956 \layout Description
3957
3958 SPEEX_SET_VAD* Set voice activity detection
3959 \begin_inset LatexCommand \index{voice activity detection}
3960
3961 \end_inset 
3962
3963  (VAD) to on (1) or off (0) (integer)
3964 \layout Description
3965
3966 SPEEX_GET_VAD* Get voice activity detection (VAD) status (integer)
3967 \layout Description
3968
3969 SPEEX_SET_DTX* Set discontinuous transmission
3970 \begin_inset LatexCommand \index{discontinuous transmission}
3971
3972 \end_inset 
3973
3974  (DTX) to on (1) or off (0) (integer)
3975 \layout Description
3976
3977 SPEEX_GET_DTX* Get discontinuous transmission (DTX) status (integer)
3978 \layout Description
3979
3980 SPEEX_SET_ABR* Set average bit-rate
3981 \begin_inset LatexCommand \index{average bit-rate}
3982
3983 \end_inset 
3984
3985  (ABR) to a value n in bits per second (integer in bps)
3986 \layout Description
3987
3988 SPEEX_GET_ABR* Get average bit-rate (ABR) setting (integer in bps)
3989 \layout Description
3990
3991 * applies only to the encoder
3992 \layout Description
3993
3994 ** applies only to the decoder
3995 \layout Description
3996
3997
3998 \begin_inset Formula $\dagger $
3999 \end_inset 
4000
4001  normally only used internally
4002 \layout Subsection
4003
4004 Mode queries
4005 \layout Standard
4006
4007 Speex modes have a querry system similar to the speex_encoder_ctl and speex_deco
4008 der_ctl calls.
4009  Since modes are read-only, it is only possible to get information about
4010  a particular mode.
4011  The function used to do that is:
4012 \layout LyX-Code
4013
4014 void speex_mode_query(SpeexMode *mode, int request, void *ptr);
4015 \layout Standard
4016
4017 The admissible values for request are (unless otherwise note, the values
4018  are returned through 
4019 \emph on 
4020 ptr
4021 \emph default 
4022 ):
4023 \layout Description
4024
4025 SPEEX_MODE_FRAME_SIZE Get the frame size (in samples) for the mode
4026 \layout Description
4027
4028 SPEEX_SUBMODE_BITRATE Get the bit-rate for a submode number specified throught
4029  
4030 \emph on 
4031 ptr
4032 \emph default 
4033  (integer in bps).
4034  
4035 \layout Subsection
4036
4037 Packing and in-band signalling
4038 \begin_inset LatexCommand \index{in-band signalling}
4039
4040 \end_inset 
4041
4042
4043 \layout Standard
4044
4045 Sometimes it is desirable to pack more than one frame per packet (or other
4046  basic unit of storage).
4047  The proper way to do it is to call speex_encode 
4048 \begin_inset Formula $N$
4049 \end_inset 
4050
4051  times before writing the stream with speex_bits_write.
4052  In cases where the number of frames is not determined by an out-of-band
4053  mechanism, it is possible to include a terminator code.
4054  That terminator consists of the code 15 (decimal) encoded with 5 bits,
4055  as shown in figure 
4056 \begin_inset LatexCommand \ref{cap:quality_vs_bps}
4057
4058 \end_inset 
4059
4060 .
4061  
4062 \layout Standard
4063
4064 It is also possible to send in-band 
4065 \begin_inset Quotes eld
4066 \end_inset 
4067
4068 messages
4069 \begin_inset Quotes erd
4070 \end_inset 
4071
4072  to the other side.
4073  All these messages are encoded as a 
4074 \begin_inset Quotes eld
4075 \end_inset 
4076
4077 pseudo-frame
4078 \begin_inset Quotes erd
4079 \end_inset 
4080
4081  of mode 14 which contain a 4-bit message type code, followed by the message.
4082  Table 
4083 \begin_inset LatexCommand \ref{cap:In-band-signalling-codes}
4084
4085 \end_inset 
4086
4087  lists the available codes, their meaning and the size of the message that
4088  follow.
4089  Most of these messages are requests that are sent to the encoder or decoder
4090  on the other end, which is free to comply or ignore them.
4091  By default, all in-band messages are ignored.
4092 \layout Standard
4093
4094
4095 \begin_inset Float table
4096 placement htbp
4097 wide false
4098 collapsed false
4099
4100 \layout Standard
4101
4102
4103 \begin_inset  Tabular
4104 <lyxtabular version="3" rows="17" columns="3">
4105 <features>
4106 <column alignment="center" valignment="top" leftline="true" width="0pt">
4107 <column alignment="center" valignment="top" leftline="true" width="0pt">
4108 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
4109 <row topline="true" bottomline="true">
4110 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4111 \begin_inset Text
4112
4113 \layout Standard
4114
4115 code
4116 \end_inset 
4117 </cell>
4118 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4119 \begin_inset Text
4120
4121 \layout Standard
4122
4123 Size (bits)
4124 \end_inset 
4125 </cell>
4126 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4127 \begin_inset Text
4128
4129 \layout Standard
4130
4131 Content
4132 \end_inset 
4133 </cell>
4134 </row>
4135 <row topline="true">
4136 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4137 \begin_inset Text
4138
4139 \layout Standard
4140
4141 0
4142 \end_inset 
4143 </cell>
4144 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4145 \begin_inset Text
4146
4147 \layout Standard
4148
4149 1
4150 \end_inset 
4151 </cell>
4152 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4153 \begin_inset Text
4154
4155 \layout Standard
4156
4157 Asks decoder to set perceptual enhancement off (0) or on(1)
4158 \end_inset 
4159 </cell>
4160 </row>
4161 <row topline="true">
4162 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4163 \begin_inset Text
4164
4165 \layout Standard
4166
4167 1
4168 \end_inset 
4169 </cell>
4170 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4171 \begin_inset Text
4172
4173 \layout Standard
4174
4175 1
4176 \end_inset 
4177 </cell>
4178 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4179 \begin_inset Text
4180
4181 \layout Standard
4182
4183 reserved
4184 \end_inset 
4185 </cell>
4186 </row>
4187 <row topline="true">
4188 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4189 \begin_inset Text
4190
4191 \layout Standard
4192
4193 2
4194 \end_inset 
4195 </cell>
4196 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4197 \begin_inset Text
4198
4199 \layout Standard
4200
4201 4
4202 \end_inset 
4203 </cell>
4204 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4205 \begin_inset Text
4206
4207 \layout Standard
4208
4209 Asks encoder to switch to mode N
4210 \end_inset 
4211 </cell>
4212 </row>
4213 <row topline="true">
4214 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4215 \begin_inset Text
4216
4217 \layout Standard
4218
4219 3
4220 \end_inset 
4221 </cell>
4222 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4223 \begin_inset Text
4224
4225 \layout Standard
4226
4227 4
4228 \end_inset 
4229 </cell>
4230 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4231 \begin_inset Text
4232
4233 \layout Standard
4234
4235 Asks encoder to switch to mode N for low-band
4236 \end_inset 
4237 </cell>
4238 </row>
4239 <row topline="true">
4240 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4241 \begin_inset Text
4242
4243 \layout Standard
4244
4245 4
4246 \end_inset 
4247 </cell>
4248 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4249 \begin_inset Text
4250
4251 \layout Standard
4252
4253 4
4254 \end_inset 
4255 </cell>
4256 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4257 \begin_inset Text
4258
4259 \layout Standard
4260
4261 Asks encoder to switch to mode N for high-band
4262 \end_inset 
4263 </cell>
4264 </row>
4265 <row topline="true">
4266 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4267 \begin_inset Text
4268
4269 \layout Standard
4270
4271 5
4272 \end_inset 
4273 </cell>
4274 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4275 \begin_inset Text
4276
4277 \layout Standard
4278
4279 4
4280 \end_inset 
4281 </cell>
4282 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4283 \begin_inset Text
4284
4285 \layout Standard
4286
4287 Asks encoder to switch to quality N for VBR
4288 \end_inset 
4289 </cell>
4290 </row>
4291 <row topline="true">
4292 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4293 \begin_inset Text
4294
4295 \layout Standard
4296
4297 6
4298 \end_inset 
4299 </cell>
4300 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4301 \begin_inset Text
4302
4303 \layout Standard
4304
4305 4
4306 \end_inset 
4307 </cell>
4308 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4309 \begin_inset Text
4310
4311 \layout Standard
4312
4313 Request acknowloedge (0=no, 1=all, 2=only for in-band data)
4314 \end_inset 
4315 </cell>
4316 </row>
4317 <row topline="true">
4318 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4319 \begin_inset Text
4320
4321 \layout Standard
4322
4323 7
4324 \end_inset 
4325 </cell>
4326 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4327 \begin_inset Text
4328
4329 \layout Standard
4330
4331 4
4332 \end_inset 
4333 </cell>
4334 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4335 \begin_inset Text
4336
4337 \layout Standard
4338
4339 Asks encoder to set VBR off (0), on(1), VAD(2), DTX(3)
4340 \end_inset 
4341 </cell>
4342 </row>
4343 <row topline="true">
4344 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4345 \begin_inset Text
4346
4347 \layout Standard
4348
4349 8
4350 \end_inset 
4351 </cell>
4352 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4353 \begin_inset Text
4354
4355 \layout Standard
4356
4357 8
4358 \end_inset 
4359 </cell>
4360 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4361 \begin_inset Text
4362
4363 \layout Standard
4364
4365 Transmit (8-bit) character to the other end
4366 \end_inset 
4367 </cell>
4368 </row>
4369 <row topline="true">
4370 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4371 \begin_inset Text
4372
4373 \layout Standard
4374
4375 9
4376 \end_inset 
4377 </cell>
4378 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4379 \begin_inset Text
4380
4381 \layout Standard
4382
4383 8
4384 \end_inset 
4385 </cell>
4386 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4387 \begin_inset Text
4388
4389 \layout Standard
4390
4391 Intensity stereo information
4392 \end_inset 
4393 </cell>
4394 </row>
4395 <row topline="true">
4396 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4397 \begin_inset Text
4398
4399 \layout Standard
4400
4401 10
4402 \end_inset 
4403 </cell>
4404 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4405 \begin_inset Text
4406
4407 \layout Standard
4408
4409 16
4410 \end_inset 
4411 </cell>
4412 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4413 \begin_inset Text
4414
4415 \layout Standard
4416
4417 Announce maximum bit-rate acceptable (N in bytes/second)
4418 \end_inset 
4419 </cell>
4420 </row>
4421 <row topline="true">
4422 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4423 \begin_inset Text
4424
4425 \layout Standard
4426
4427 11
4428 \end_inset 
4429 </cell>
4430 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4431 \begin_inset Text
4432
4433 \layout Standard
4434
4435 16
4436 \end_inset 
4437 </cell>
4438 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4439 \begin_inset Text
4440
4441 \layout Standard
4442
4443 reserved
4444 \end_inset 
4445 </cell>
4446 </row>
4447 <row topline="true">
4448 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4449 \begin_inset Text
4450
4451 \layout Standard
4452
4453 12
4454 \end_inset 
4455 </cell>
4456 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4457 \begin_inset Text
4458
4459 \layout Standard
4460
4461 32
4462 \end_inset 
4463 </cell>
4464 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4465 \begin_inset Text
4466
4467 \layout Standard
4468
4469 Acknowledge receiving packet N
4470 \end_inset 
4471 </cell>
4472 </row>
4473 <row topline="true">
4474 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4475 \begin_inset Text
4476
4477 \layout Standard
4478
4479 13
4480 \end_inset 
4481 </cell>
4482 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4483 \begin_inset Text
4484
4485 \layout Standard
4486
4487 32
4488 \end_inset 
4489 </cell>
4490 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4491 \begin_inset Text
4492
4493 \layout Standard
4494
4495 reserved
4496 \end_inset 
4497 </cell>
4498 </row>
4499 <row topline="true">
4500 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4501 \begin_inset Text
4502
4503 \layout Standard
4504
4505 14
4506 \end_inset 
4507 </cell>
4508 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4509 \begin_inset Text
4510
4511 \layout Standard
4512
4513 64
4514 \end_inset 
4515 </cell>
4516 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4517 \begin_inset Text
4518
4519 \layout Standard
4520
4521 reserved
4522 \end_inset 
4523 </cell>
4524 </row>
4525 <row topline="true" bottomline="true">
4526 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4527 \begin_inset Text
4528
4529 \layout Standard
4530
4531 15
4532 \end_inset 
4533 </cell>
4534 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4535 \begin_inset Text
4536
4537 \layout Standard
4538
4539 64
4540 \end_inset 
4541 </cell>
4542 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4543 \begin_inset Text
4544
4545 \layout Standard
4546
4547 reserved
4548 \end_inset 
4549 </cell>
4550 </row>
4551 </lyxtabular>
4552
4553 \end_inset 
4554
4555
4556 \layout Caption
4557
4558 In-band signalling codes
4559 \begin_inset LatexCommand \label{cap:In-band-signalling-codes}
4560
4561 \end_inset 
4562
4563
4564 \end_inset 
4565
4566
4567 \layout Standard
4568
4569 Finally, applications may define custom in-band messages using mode 13.
4570  The size of the message in bytes is encoded with 5 bits, so that the decoder
4571  can skip it if it doesn't know how to interpret it.
4572 \layout Section
4573 \pagebreak_top 
4574 Formats and standards
4575 \begin_inset LatexCommand \index{standards}
4576
4577 \end_inset 
4578
4579
4580 \layout Standard
4581
4582 Speex can encode speech in both narrowband and wideband and provides different
4583  bit-rates.
4584  However not all features must be supported by a certain implementation
4585  or device.
4586  In order to be said 
4587 \begin_inset Quotes eld
4588 \end_inset 
4589
4590 Speex compatible
4591 \begin_inset Quotes erd
4592 \end_inset 
4593
4594  (whatever that means), an implementation must implement at least a basic
4595  set of features.
4596 \layout Standard
4597
4598 At the minimum, all narrowband modes of operation MUST be supported at the
4599  decoder.
4600  This includes the decoding of a wideband bit-stream by the narrowband decoder
4601 \begin_inset Foot
4602 collapsed true
4603
4604 \layout Standard
4605
4606 The wideband bit-stream contains an embedded narrowband bit-stream which
4607  can be decoded alone
4608 \end_inset 
4609
4610 .
4611  If present, a wideband decoder MUST be able to decode a narrowband stream,
4612  and MAY either be able to decode all wideband modes or be able to decode
4613  the embedded narrowband part of all modes (which includes ignoring the
4614  high-band bits).
4615 \layout Standard
4616
4617 For encoders, at least one narrowband or wideband mode MUST be supported.
4618  The main reason why all encoding modes do not have to be supported is that
4619  some platforms may not be able to handle the complexity of encoding in
4620  some modes.
4621 \layout Subsection
4622
4623 RTP
4624 \begin_inset LatexCommand \index{RTP}
4625
4626 \end_inset 
4627
4628  Payload Format 
4629 \layout Standard
4630
4631 The latest RTP payload draft can be found at 
4632 \begin_inset LatexCommand \url{http://www.speex.org/drafts/latest}
4633
4634 \end_inset 
4635
4636 .
4637  We are (2002/11/11) about to send the latest draft to the IETF for comments.
4638  
4639 \layout Comment
4640
4641 Since Speex encoded frames already contain mode information, they can be
4642  sent without any other information in an RTP packet.
4643  If more than one frame is transmitted, no byte padding is performed at
4644  the end of frames, except the last one.
4645  The number of frames contained in each packet MUST be transmitted out-of-band.
4646  
4647 \layout Subsection
4648
4649 MIME Type
4650 \layout Standard
4651
4652 Speex will use the MIME type 
4653 \family typewriter 
4654 audio/speex
4655 \family default 
4656 .
4657  We will apply for that type in the near future.
4658 \layout Subsection
4659
4660 Ogg
4661 \begin_inset LatexCommand \index{Ogg}
4662
4663 \end_inset 
4664
4665  file format
4666 \layout Standard
4667
4668 Speex bit-streams can be stored in Ogg files.
4669  In this case, the first packet of the Ogg file contains the Speex header
4670  described in table 
4671 \begin_inset LatexCommand \ref{cap:ogg_speex_header}
4672
4673 \end_inset 
4674
4675 .
4676  All integer fields in the headers are stored as little-endian.
4677  The 
4678 \family typewriter 
4679 speex_string
4680 \family default 
4681  field must contain the 
4682 \begin_inset Quotes eld
4683 \end_inset 
4684
4685
4686 \family typewriter 
4687 Speex
4688 \family default 
4689 \SpecialChar ~
4690 \SpecialChar ~
4691 \SpecialChar ~
4692
4693 \begin_inset Quotes eld
4694 \end_inset 
4695
4696  (with 3 training spaces), which identifies the bit-stream.
4697  The next field, 
4698 \family typewriter 
4699 speex_version
4700 \family default 
4701  contains the version of Speex that encoded the file.
4702  For now, refer to speex_header.[ch] for more info.
4703  The 
4704 \emph on 
4705 beginning of stream
4706 \emph default 
4707  (
4708 \family typewriter 
4709 b_o_s
4710 \family default 
4711 ) flag is set to 1 for the header.
4712  The header packet has 
4713 \family typewriter 
4714 packetno=0
4715 \family default 
4716  and 
4717 \family typewriter 
4718 granulepos=0
4719 \family default 
4720 .
4721 \layout Standard
4722
4723 The second packet contains the Speex comment header.
4724  The format used is the Vorbis comment format described here: http://www.xiph.org/
4725 ogg/vorbis/doc/v-comment.html .
4726  This packet has 
4727 \family typewriter 
4728 packetno=1
4729 \family default 
4730  and 
4731 \family typewriter 
4732 granulepos=0
4733 \family default 
4734 .
4735 \layout Standard
4736
4737 The third and subsequant packets each contain one or more (number found
4738  in header) Speex frames.
4739  These are identified with 
4740 \family typewriter 
4741 packetno
4742 \family default 
4743  starting from 2 and the 
4744 \family typewriter 
4745 granulepos
4746 \family default 
4747  is the number of the last sample encoded in that packet.
4748  Le last of these packets has the 
4749 \emph on 
4750 end of stream
4751 \emph default 
4752  (
4753 \family typewriter 
4754 e_o_s
4755 \family default 
4756 ) flag is set to 1.
4757 \layout Standard
4758
4759
4760 \begin_inset Float table
4761 placement htbp
4762 wide true
4763 collapsed false
4764
4765 \layout Standard
4766
4767
4768 \begin_inset  Tabular
4769 <lyxtabular version="3" rows="16" columns="3">
4770 <features>
4771 <column alignment="center" valignment="top" leftline="true" width="0pt">
4772 <column alignment="center" valignment="top" leftline="true" width="0pt">
4773 <column alignment="center" valignment="top" leftline="true" rightline="true" width="0pt">
4774 <row topline="true" bottomline="true">
4775 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4776 \begin_inset Text
4777
4778 \layout Standard
4779
4780 Field
4781 \end_inset 
4782 </cell>
4783 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4784 \begin_inset Text
4785
4786 \layout Standard
4787
4788 Type
4789 \end_inset 
4790 </cell>
4791 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4792 \begin_inset Text
4793
4794 \layout Standard
4795
4796 Size
4797 \end_inset 
4798 </cell>
4799 </row>
4800 <row topline="true">
4801 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4802 \begin_inset Text
4803
4804 \layout Standard
4805
4806 speex_string
4807 \end_inset 
4808 </cell>
4809 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4810 \begin_inset Text
4811
4812 \layout Standard
4813
4814 char[]
4815 \end_inset 
4816 </cell>
4817 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4818 \begin_inset Text
4819
4820 \layout Standard
4821
4822 8
4823 \end_inset 
4824 </cell>
4825 </row>
4826 <row topline="true">
4827 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4828 \begin_inset Text
4829
4830 \layout Standard
4831
4832 speex_version
4833 \end_inset 
4834 </cell>
4835 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4836 \begin_inset Text
4837
4838 \layout Standard
4839
4840 char[]
4841 \end_inset 
4842 </cell>
4843 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4844 \begin_inset Text
4845
4846 \layout Standard
4847
4848 20
4849 \end_inset 
4850 </cell>
4851 </row>
4852 <row topline="true">
4853 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4854 \begin_inset Text
4855
4856 \layout Standard
4857
4858 speex_header_version
4859 \end_inset 
4860 </cell>
4861 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4862 \begin_inset Text
4863
4864 \layout Standard
4865
4866 int
4867 \end_inset 
4868 </cell>
4869 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4870 \begin_inset Text
4871
4872 \layout Standard
4873
4874 4
4875 \end_inset 
4876 </cell>
4877 </row>
4878 <row topline="true">
4879 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4880 \begin_inset Text
4881
4882 \layout Standard
4883
4884 header_size
4885 \end_inset 
4886 </cell>
4887 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4888 \begin_inset Text
4889
4890 \layout Standard
4891
4892 int
4893 \end_inset 
4894 </cell>
4895 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4896 \begin_inset Text
4897
4898 \layout Standard
4899
4900 4
4901 \end_inset 
4902 </cell>
4903 </row>
4904 <row topline="true">
4905 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4906 \begin_inset Text
4907
4908 \layout Standard
4909
4910 rate
4911 \end_inset 
4912 </cell>
4913 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4914 \begin_inset Text
4915
4916 \layout Standard
4917
4918 int
4919 \end_inset 
4920 </cell>
4921 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4922 \begin_inset Text
4923
4924 \layout Standard
4925
4926 4
4927 \end_inset 
4928 </cell>
4929 </row>
4930 <row topline="true">
4931 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4932 \begin_inset Text
4933
4934 \layout Standard
4935
4936 mode
4937 \end_inset 
4938 </cell>
4939 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4940 \begin_inset Text
4941
4942 \layout Standard
4943
4944 int
4945 \end_inset 
4946 </cell>
4947 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4948 \begin_inset Text
4949
4950 \layout Standard
4951
4952 4
4953 \end_inset 
4954 </cell>
4955 </row>
4956 <row topline="true">
4957 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4958 \begin_inset Text
4959
4960 \layout Standard
4961
4962 mode_bitstream_version
4963 \end_inset 
4964 </cell>
4965 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4966 \begin_inset Text
4967
4968 \layout Standard
4969
4970 int
4971 \end_inset 
4972 </cell>
4973 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
4974 \begin_inset Text
4975
4976 \layout Standard
4977
4978 4
4979 \end_inset 
4980 </cell>
4981 </row>
4982 <row topline="true">
4983 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4984 \begin_inset Text
4985
4986 \layout Standard
4987
4988 nb_channels
4989 \end_inset 
4990 </cell>
4991 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
4992 \begin_inset Text
4993
4994 \layout Standard
4995
4996 int
4997 \end_inset 
4998 </cell>
4999 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5000 \begin_inset Text
5001
5002 \layout Standard
5003
5004 4
5005 \end_inset 
5006 </cell>
5007 </row>
5008 <row topline="true">
5009 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5010 \begin_inset Text
5011
5012 \layout Standard
5013
5014 bitrate
5015 \end_inset 
5016 </cell>
5017 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5018 \begin_inset Text
5019
5020 \layout Standard
5021
5022 int
5023 \end_inset 
5024 </cell>
5025 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5026 \begin_inset Text
5027
5028 \layout Standard
5029
5030 4
5031 \end_inset 
5032 </cell>
5033 </row>
5034 <row topline="true">
5035 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5036 \begin_inset Text
5037
5038 \layout Standard
5039
5040 frame_size
5041 \end_inset 
5042 </cell>
5043 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5044 \begin_inset Text
5045
5046 \layout Standard
5047
5048 int
5049 \end_inset 
5050 </cell>
5051 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5052 \begin_inset Text
5053
5054 \layout Standard
5055
5056 4
5057 \end_inset 
5058 </cell>
5059 </row>
5060 <row topline="true">
5061 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5062 \begin_inset Text
5063
5064 \layout Standard
5065
5066 vbr
5067 \end_inset 
5068 </cell>
5069 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5070 \begin_inset Text
5071
5072 \layout Standard
5073
5074 int
5075 \end_inset 
5076 </cell>
5077 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5078 \begin_inset Text
5079
5080 \layout Standard
5081
5082 4
5083 \end_inset 
5084 </cell>
5085 </row>
5086 <row topline="true">
5087 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5088 \begin_inset Text
5089
5090 \layout Standard
5091
5092 frames_per_packet
5093 \end_inset 
5094 </cell>
5095 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5096 \begin_inset Text
5097
5098 \layout Standard
5099
5100 int
5101 \end_inset 
5102 </cell>
5103 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5104 \begin_inset Text
5105
5106 \layout Standard
5107
5108 4
5109 \end_inset 
5110 </cell>
5111 </row>
5112 <row topline="true">
5113 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5114 \begin_inset Text
5115
5116 \layout Standard
5117
5118 reserved1
5119 \end_inset 
5120 </cell>
5121 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5122 \begin_inset Text
5123
5124 \layout Standard
5125
5126 int
5127 \end_inset 
5128 </cell>
5129 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5130 \begin_inset Text
5131
5132 \layout Standard
5133
5134 4
5135 \end_inset 
5136 </cell>
5137 </row>
5138 <row topline="true">
5139 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5140 \begin_inset Text
5141
5142 \layout Standard
5143
5144 reserved2
5145 \end_inset 
5146 </cell>
5147 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5148 \begin_inset Text
5149
5150 \layout Standard
5151
5152 int
5153 \end_inset 
5154 </cell>
5155 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5156 \begin_inset Text
5157
5158 \layout Standard
5159
5160 4
5161 \end_inset 
5162 </cell>
5163 </row>
5164 <row topline="true" bottomline="true">
5165 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5166 \begin_inset Text
5167
5168 \layout Standard
5169
5170 reserved3
5171 \end_inset 
5172 </cell>
5173 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
5174 \begin_inset Text
5175
5176 \layout Standard
5177
5178 int
5179 \end_inset 
5180 </cell>
5181 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
5182 \begin_inset Text
5183
5184 \layout Standard
5185
5186 4
5187 \end_inset 
5188 </cell>
5189 </row>
5190 </lyxtabular>
5191
5192 \end_inset 
5193
5194
5195 \layout Caption
5196
5197 Ogg/Speex header packet
5198 \begin_inset LatexCommand \label{cap:ogg_speex_header}
5199
5200 \end_inset 
5201
5202
5203 \end_inset 
5204
5205
5206 \layout Standard
5207
5208
5209 \begin_inset ERT
5210 status Collapsed
5211
5212 \layout Standard
5213
5214 \backslash 
5215 clearpage
5216 \end_inset 
5217
5218
5219 \layout Section
5220 \start_of_appendix 
5221 FAQ
5222 \layout Subsection*
5223
5224 Vorbis is open-source
5225 \begin_inset LatexCommand \index{open-source}
5226
5227 \end_inset 
5228
5229  and patent-free
5230 \begin_inset LatexCommand \index{patent}
5231
5232 \end_inset 
5233
5234 , why do we need Speex?
5235 \layout Standard
5236
5237 Vorbis is a great project but its goals are not the same as Speex.
5238  Vorbis is mostly aimed at compressing music and audio in general, while
5239  Speex targets speech only.
5240  For that reason Speex can achieve much better results than Vorbis on speech,
5241  typically 2-4 times higher compression at equal quality.
5242 \layout Subsection*
5243
5244 Ogg
5245 \begin_inset LatexCommand \index{Ogg}
5246
5247 \end_inset 
5248
5249 , Speex, Vorbis
5250 \begin_inset LatexCommand \index{Vorbis}
5251
5252 \end_inset 
5253
5254 , what's the difference?
5255 \layout Standard
5256
5257 Ogg is a 
5258 \begin_inset Quotes eld
5259 \end_inset 
5260
5261 container format
5262 \begin_inset Quotes erd
5263 \end_inset 
5264
5265  for holding multimedia data.
5266  Vorbis is an audio codec that uses Ogg to store its bit-streams as files,
5267  hence the name Ogg Vorbis.
5268  Speex also uses the Ogg format to store its bit-streams as files, so technicall
5269 y they would be 
5270 \begin_inset Quotes eld
5271 \end_inset 
5272
5273 Ogg Speex
5274 \begin_inset Quotes erd
5275 \end_inset 
5276
5277  files (I prefer to call them just Speex files).
5278  One difference with Vorbis however, is that Speex is less tied with Ogg.
5279  Actually, if what you do is Voice of IP (VoIP), you don't need Ogg at all.
5280 \layout Subsection*
5281
5282 What's the extension for Speex?
5283 \layout Standard
5284
5285 Speex files have the .spx extension.
5286  Note however that all the Speex tools (speexenc, speexdec) do not rely
5287  on the extension at all so any extension will work.
5288 \layout Subsection*
5289
5290 Can I use Speex for compressing music
5291 \begin_inset LatexCommand \index{music}
5292
5293 \end_inset 
5294
5295 ?
5296 \layout Standard
5297
5298 Just like Vorbis is not really adapted to speech, Speex is really not adapted
5299  for music.
5300  In most cases, you'll be better of with Vorbis when it comes to music.
5301 \layout Subsection*
5302
5303 I converted some MP3's to Speex and the quality is bad.
5304  What's wrong?
5305 \layout Standard
5306
5307 This is called transcoding and it will always result in much poorer quality
5308  than the original MP3.
5309  Unless you have a really good (size) reason to do so, never transcode speech.
5310  This is even valid for self transcoding (tandeming), i.e.
5311  If you decode a Speex file and re-encode it again at the same bit-rate,
5312  you will lose quality.
5313 \layout Subsection*
5314
5315 Does Speex run on Windows?
5316 \layout Standard
5317
5318 As of 0.8.0, Speex can now compile on Windows, though limited testing has
5319  been done so far.
5320 \layout Subsection*
5321
5322 Why is encoding so slow compared to decoding?
5323 \layout Standard
5324
5325 For most kinds of compression, encoding is inherently slower than decoding.
5326  In the case of Speex, encoding consists of finding, for each vector of
5327  5 to 10 samples, the entry that matches the best within a codebook consisting
5328  of 16 to 256 entries.
5329  On the other hand, at decoding all that needs to be done is lookup the
5330  right entry in the codebook using the encoded index.
5331  Since a lookup is much faster than a search, the decoder works much faster
5332  than the encoder.
5333 \layout Subsection*
5334
5335 Why is Speex so slow on my iPaq (or insert any platform without an FPU)?
5336 \layout Standard
5337
5338 Well the parenthesis provides the answer: no FPU (floating-point unit).
5339  The Speex code makes heavy use of floating-point operations.
5340  On devices with no FPU, all floating-point instructions need to be emulated.
5341  This is a very time consuming operation.
5342 \layout Subsection*
5343
5344 I'm getting unusual background noise (hiss) when using libspeex in my applicatio
5345 n.
5346  How do I fix that?
5347 \layout Standard
5348
5349 One of the cause could be scaling of the input speech.
5350  Speex expects signals to have a 
5351 \begin_inset Formula $\pm 2^{15}$
5352 \end_inset 
5353
5354  (signed short) dynamic range.
5355  If the dynamic range of your signals is too small (e.g.
5356  
5357 \begin_inset Formula $\pm 1.0$
5358 \end_inset 
5359
5360 ), you will suffer important quantization noise.
5361  A good target is to have a dynamic range around 
5362 \begin_inset Formula $\pm 8000$
5363 \end_inset 
5364
5365  which is large enough, but small enough to make sure there's no clipping
5366  when converting back to signed short.
5367 \layout Subsection*
5368
5369 I get very distorted speech when using libspeex in my application.
5370  What's wrong?
5371 \layout Standard
5372
5373 There are many possible causes for that.
5374  One of them is errors in the way the bits are manipulated.
5375  Another possible cause is the use of the same encoder or decoder state
5376  for more than one audio stream (channel), which produces strange effects
5377  with the filter memories.
5378  If the input speech has an amplitude close to 
5379 \begin_inset Formula $\pm 2^{15}$
5380 \end_inset 
5381
5382 , it is possible that at decoding, the amplitude be a bit higher than that,
5383  causing clipping when saving as 16-bit PCM.
5384 \layout Subsection*
5385
5386 Can Speex pass DTMF
5387 \begin_inset LatexCommand \index{DTMF}
5388
5389 \end_inset 
5390
5391 ?
5392 \layout Standard
5393
5394 I guess it all depends on the bit-rate used.
5395  Though no formal testing has yet been performed, I'd say don't go below
5396  the 15 kbps mode if you want DTMF to be transmitted correctly.
5397  DTMF at 8 kbps may work but your mileage may vary.
5398  Also, make sure you don't use the lowest complexity (see SPEEX_SET_COMPLEXITY
5399  or --comp option), as it causes important noise.
5400 \layout Subsection*
5401
5402 Can Speex pass V.9x modem signals correctly?
5403 \layout Standard
5404
5405 If I could to that I'd be very rich by now :-)
5406 \layout Subsection*
5407
5408 What is your (Jean-Marc) relationship with the University of Sherbrooke
5409  and how does Speex fit into that?
5410 \layout Standard
5411
5412 I am currently (2002/08/13) doing a Ph.D.
5413  at the University of Sherbrooke in mobile robotics.
5414  Although I did my master with the Sherbrooke speech coding group (in speech
5415  enhancement, not coding), I am not associated with them anymore.