[Speex-dev] Questions about "Complexity"

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Fri Mar 11 11:18:21 PST 2005

> 1) What is "Complexity" used for? What is its role in the codebook search 
> algorithm besides allocating the stack sizes?

The higher the complexity, the better the codebook search and the the
pitch search. Basically, for both pitch and codebook, the complexity
value is the number of hypothesis I keep at the same time. The higher
the complexity value, the higher the quality, although it doesn't make
much difference above 3. Many people won't even notice it at all, except
in some special cases (e.g. encoding DTMF at 8 kbps)

> 2) How does "Complexity" effect the search through the codebook to encode 
> the residual coming out of the short-term predictor?

see 1)

> 3) How does "Complexity" effect the calculation of pitch and pitch gains for 
> a 3 tap filter for the long-term predictor?

see 1)

> 4) Can I manipulate "Complexity" in some fashion so that I can keep the 
> quality of the voice constant while varying the bit-rate by changing the 
> "Quality" parameter?

You can manipulate it in any way you like, but I doubt it will be worth
the trouble (compared to just using the highest setting you can afford).

> 5) What changes do I have to make in the existing libspeex.lib files in 
> order to have a "Complexity" greater than 10?

Just increase the stack size and remove the checks for complexity>10.
Note however that you're very unlikely to see any difference.


Jean-Marc Valin <Jean-Marc.Valin at USherbrooke.ca>
Université de Sherbrooke

More information about the Speex-dev mailing list