David Preece
2005-Mar-02 20:49 UTC
[Speex-dev] General pre-processing prior to feeding sound to speex.
Hi, I have speex running as a part of a voice conferencing app. Well, one under development anyway. I'm running VBR at quality 3 and get a "hissy-squelchy" background noise. This is fine, kinda, because the internal microphone in the laptop picks up hiss, the sound of the (actually very quiet) hard drive and generally speaking is of less than exemplary quality. To help disguise this I've been implementing various 'amplifier' style sample tricks including: * A pre-amplifier. * A self adjusting pre-amp that aimed for a target RMS (did an astounding job of listening to the roadworks outside). * A compressor. * A compressor that "expanded" at the bottom end of the range. * A noise floor implemented on a per-frame basis. All, apart from the noise floor, were essentially useless. The noise floor had a kinda savage cut in/cut out thing going on. Understandably. I've also noticed in the mailing list archives various references to speex 'training' itself to it's input - leading me to think that perhaps all of the above are wasted efforts because speex itself knows more about what it would like it's input to look like. So I guess my main question is: what are the best ways to pre-process sound prior to feeding it to speex? I was also wondering about implementing a hiss removal filter of some description. To my eyes this would involve fft'ing everything then removing any frequencies below a certain threshold. Is this likely to work? And if so, presumably speex fft's everything before going to work compressing for real - should I 'just' write some description of hook into speex itself? I have some confusion about packing multiple frames into one packet, but that can be another thread... Cheers, Dave
Jean-Marc Valin
2005-Mar-02 21:29 UTC
[Speex-dev] General pre-processing prior to feeding sound to speex.
Hi David, The Speex unstable (1.1.x) branch includes a denoising algorithm. The header file is speex_preprocess.h (also contains a VAD and AGC) and you can see how to use it in the speexenc.c code. Should get rid of stationary background noise. Jean-Marc Le jeudi 03 mars 2005 ? 17:49 +1300, David Preece a ?crit :> Hi, > > I have speex running as a part of a voice conferencing app. Well, one > under development anyway. > > I'm running VBR at quality 3 and get a "hissy-squelchy" background > noise. This is fine, kinda, because the internal microphone in the > laptop picks up hiss, the sound of the (actually very quiet) hard drive > and generally speaking is of less than exemplary quality. > > To help disguise this I've been implementing various 'amplifier' style > sample tricks including: > > * A pre-amplifier. > * A self adjusting pre-amp that aimed for a target RMS (did an > astounding job of listening to the roadworks outside). > * A compressor. > * A compressor that "expanded" at the bottom end of the range. > * A noise floor implemented on a per-frame basis. > > All, apart from the noise floor, were essentially useless. The noise > floor had a kinda savage cut in/cut out thing going on. Understandably. > > I've also noticed in the mailing list archives various references to > speex 'training' itself to it's input - leading me to think that > perhaps all of the above are wasted efforts because speex itself knows > more about what it would like it's input to look like. > > So I guess my main question is: what are the best ways to pre-process > sound prior to feeding it to speex? > > I was also wondering about implementing a hiss removal filter of some > description. To my eyes this would involve fft'ing everything then > removing any frequencies below a certain threshold. Is this likely to > work? And if so, presumably speex fft's everything before going to work > compressing for real - should I 'just' write some description of hook > into speex itself? > > I have some confusion about packing multiple frames into one packet, > but that can be another thread... > > Cheers, > Dave > > _______________________________________________ > Speex-dev mailing list > Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev >-- Jean-Marc Valin <Jean-Marc.Valin@USherbrooke.ca> Universit? de Sherbrooke -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?Url : http://lists.xiph.org/pipermail/speex-dev/attachments/20050303/0788b6af/attachment.pgp