[Speex-dev] Speex echo cancellation and denoise issues

Gurinder
Mon, 22 Feb 2010 10:43:14 -0000

Hi All



I am using speex in one of my WinCE project.



I have been trying to use speex to perform denoise on the captured audio
packet and echo cancellation. Following behavior I have observed while using
various options. I would really appreciate if you could help me with the
issues I am facing.



1.	Denoise: I have written the following to code to perform denoise.

//To initialize speex preprocess state and set the denoise option

int nEnable = 1;

                        SpxPreprocessState speex_preprocess_state_init(160,
8000); //20ms audio at 8000 bps

speex_preprocess_ctl(SpxPreprocessState, SPEEX_PREPROCESS_SET_DENOISE,
&nEnable);



//Run the preprocess on the buffer captured before encoding

speex_preprocess_run(SpxPreprocessState, (short*)pbBuffer);

                        speex_encode_int(EncoderState,(short*)pbBuffer,
&stSpeexBits);



On calling speex_preprocess_run removes all the audio from the buffer and a
constant humming sound is heard. I open the recorded file in Cool edit pro
tool and see that all the spikes are removed and flat wave is there. What
could be the reason for this behavior?



2.	Echo cancellation: I have two separte threads, one to capture live
audio and another one to playback the audio recvevied on the network. Since
audio capture and playback are handled asynchronously I call the function
speex_echo_playback right after I enqueue a buffer for sound card to play
and call the function speex_echo_capture for every packet captured before I
call speex_encode_int for encoding. As soon as the audio start I see below
warnings on the screen



Warning: No playback frame available (your application is buggy and/or got
xruns)

Warning: Auto-filling the buffer (your application is buggy and/or got
xruns)



These warning are displayed few times and then it stops. Then once in a
while again these warnings are printed. What exactly do these warning means
as the audio keeps on playing without any problem?



3.	For AGC:

//To initialize speex preprocess state and set the AGC option

int nEnable = 1;

                        SpxPreprocessState speex_preprocess_state_init(160,
8000); //20ms audio at 8000 bps

speex_preprocess_ctl(g_pSpxPreprocessState, SPEEX_PREPROCESS_SET_AGC,
&nEnable);



On enabling AGC I get the below warning.



Warning: Unknown speex_preprocess_ctl request: 2



Is AGC not supported?



Thanks & Regards

Gurinder


_____________________________________________________________________

This e-mail message may contain proprietary, confidential or legally privileged
information for the sole use of the person or entity to whom this message was
originally addressed. Any review, e-transmission dissemination or other use of
or taking of any action in reliance upon this information by persons or entities
other than the intended recipient is prohibited. If you have received this
e-mail in error kindly delete this e-mail from your records. If it appears that
this mail has been forwarded to you without proper authority, please notify us
immediately at netadmin at patni.com and delete this mail.
_____________________________________________________________________
-------------- next part --------------
An HTML attachment was scrubbed...