[Speex-dev] Steganographic extension to Speex

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Fri Oct 14 21:21:30 PDT 2005

> I am planning on creating a steganographic extension for speex/CELP.
> Since speex/CELP is lossy, there should be quite many bits that one
> can use for hiding data.

Quite the opposite. Speex uses very few bits, so every bit you corrupt
is likely to be heard. You would need to use "fractions of bits" at a
time. Even then, it may be hard to hide data efficiently (so it's hard
to detect whether steganography was applied).

> I'm familiar with the principles of CELP (two filter loops, one for
> pitch, the other for formants, let the raw speech frame run through
> those filter loops, take residue signal, map it on a codebook entry,
> transmit the the two filters and the codebook key). Please correct
> me if I understood something wrong.

That's pretty much how it works (of course, there's plenty of details

> As if right now, my questions are more from an engineers point of
> view (which I could not find out/understand by reading the source
> code) and totally newby-code-related (sorry if they're too easy!). I
> use speex 1.1.6, for the reason than encoding and decoding actually
> returned the "original" speech with that version, unfortunately not
> with 1.1.10 or 1.0.5 (after encoding and decoding I only heard noise).

That can easily be changed.

> So my questions are:
> - where are the two filter loops applied to the raw signal?

You can find them easily in nb_celp.c (it's called pitch and innovation)

> - where is the residue (innovation) signal calculated?

cb_search.c (called from nb_celp.c)

> - where is the innovation mapped on a codebook entry (key)?


> - which bits of a transmitted frame are the two filters, which are
> codebook keys?

what do you mean?

> - is the codebook from the beginning on static (so already known by
> sender and receiver) or transmitted somewhere at the beginning of a
> VOIP connection?

Codebooks are in the codec, not transmitted.

> In order to do that, I probably need to document CELP as used in
> speex a little closer, which could maybe be used for the speex manual.

Please send whatever doc you add.


> -- 
> He was part of my dream, of course -- but then I was part of his
> dream too.
> 		-- Lewis Carroll
> _______________________________________________
> Speex-dev mailing list
> Speex-dev at xiph.org
> http://lists.xiph.org/mailman/listinfo/speex-dev

More information about the Speex-dev mailing list