Hello kind developers, 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. 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. 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). So my questions are: - where are the two filter loops applied to the raw signal? - where is the residue (innovation) signal calculated? - where is the innovation mapped on a codebook entry (key)? - which bits of a transmitted frame are the two filters, which are codebook keys? - 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? 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. Regards, Bj?rn -- He was part of my dream, of course -- but then I was part of his dream too. -- Lewis Carroll -- Important! Please recognize my new GPG Public Key! Bj?rn Thalheim gpg fingerprint: 0A29 87E7 B4BE 8EFC 1063 EF09 9096 FA4B DF0C 6701 download key: wget http://www.ifsr.de/~bjoern/gpg/public_key.asc See also: http://www.ifsr.de/~bjoern/gpg/key.html -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 251 bytes Desc: OpenPGP digital signature Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20051014/3fd22ff7/signature.pgp
> 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 everywhere).> 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)?cb_search.c> - 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. Jean-Marc> -- > 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@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev
Hello, Jean-Marc Valin schrieb:>>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).Of course, I cannot blindly change bits. But everywhere, where truncation is done, one can change things to embed data. Besides, even if I find no good possibility to embed data in the CELP encoding process, that would still be an ok result for this work. At this time, I see the possibility to hide data in the process of mapping the residues onto codebook entries, in the LPC to LSP conversion and in the comfort noise generation (I guess a more commonly used term for this is "noise shaping").>>- which bits of a transmitted frame are the two filters, which are >>codebook keys? > > what do you mean?I mean, that we send the speech frame by frame. So a frame needs to contain the two filters (pitch and formants), the first couple of values (raw, now we can apply the filter to predict the rest of the frame), and then the codebook keys of which the corresponding entries are added to get raw speech data back. Ciao, Bj?rn -- You are a bundle of energy, always on the go. -- Important! Please recognize my new GPG Public Key! Bj?rn Thalheim gpg fingerprint: 0A29 87E7 B4BE 8EFC 1063 EF09 9096 FA4B DF0C 6701 download key: wget http://www.ifsr.de/~bjoern/gpg/public_key.asc See also: http://www.ifsr.de/~bjoern/gpg/key.html -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 251 bytes Desc: OpenPGP digital signature Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20051025/471fcf26/signature-0001.pgp