<div dir="ltr">By the way, I have compiled the fixed-point version with fixed_debug.h, and the console is exploded with overflow warnings when running the AEC.<br><br><div class="gmail_quote">On Sat, Jan 8, 2011 at 10:52 PM, Omer Gilad <span dir="ltr">&lt;<a href="mailto:omer.gilad@gmail.com">omer.gilad@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Jean-Marc, thanks for the response.<br>
First, I will clarify again that floating-point solves this - so isn&#39;t that a bug in fixed-point?<br>
Also, I understand that algorithmically the AEC won&#39;t cancel echo properly on a non-linear signal, but why completely distort the output?<br>
If the echo just won&#39;t get cancelled it would be acceptable, but in the current state it disables the ability to speak - with or without echo.<br>
<br>
Thanks,<br>
<font color="#888888">Omer<br>
</font><div><div></div><div class="h5"><br>
On Jan 8, 2011, at 7:26 PM, Jean-Marc Valin wrote:<br>
<br>
&gt; Hi,<br>
&gt;<br>
&gt; The Speex AEC is simply not designed to deal with non-linear echo, as is the case when clipping of AGCs are involved. Make sure all your path is linear or forget about the Speex AEC.<br>
&gt;<br>
&gt;       Jean-Marc<br>
&gt;<br>
&gt; On 11-01-03 11:31 AM, Omer Gilad wrote:<br>
&gt;&gt; Hi,<br>
&gt;&gt; I couldn&#39;t find a discussion that specifically addresses this, so here<br>
&gt;&gt; it is.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m using Speex AEC in my mobile VoIP application to cancel speaker<br>
&gt;&gt; echo. The used version is 1.2rc1 from the website, and I&#39;m compiling<br>
&gt;&gt; with fixed-point.<br>
&gt;&gt; On most occasions, the AEC works very well and cancels most of the echo<br>
&gt;&gt; (combined with the preprocessor).<br>
&gt;&gt; On some devices, where the microphone signal gets a bit distorted<br>
&gt;&gt; (because of sensitivity or some internal AGC pass), the AEC outputs<br>
&gt;&gt; distorted and unacceptable voice, while only augmenting the echo signal<br>
&gt;&gt; instead of cancelling it.<br>
&gt;&gt; I have tried a few things:<br>
&gt;&gt;<br>
&gt;&gt; 1. Compile in floating point - solves it, but irrelevant to some devices<br>
&gt;&gt; which don&#39;t have an FPU and can&#39;t handle this. I actually use the FP<br>
&gt;&gt; version on devices that DO support it.<br>
&gt;&gt; 2. Check where it reproduces - on any device where the recording gets<br>
&gt;&gt; clipped every now and then, and also on devices that normalize their mic<br>
&gt;&gt; input.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m a bit desperate about this, and almost getting to the point of<br>
&gt;&gt; debugging the AEC itself - my guess is that it&#39;s a lot of integer overflows.<br>
&gt;&gt; I&#39;m willing to send voice samples that reproduce the problem.<br>
&gt;&gt;<br>
&gt;&gt; Did anyone experience that or has some insight?<br>
&gt;&gt;<br>
&gt;&gt; Thanks ahead,<br>
&gt;&gt; Omer<br>
<br>
</div></div></blockquote></div><br></div>