Hello,<br><br>I tried to use speex echo canceller for a live performance setup to cancell feedback. My program buffers input until collecting a speex frame size of samples, then calls speex_echo_cancellation passing this buffer as input signal and previous speex output as echo signal, then immediately plays current speex output.<br>
<br>First thing I noticed was huge high pass filtering. Then I found out there is a way to tell speex echo canceller my sampling rate and that remedied the filtering to large extent. I think the sampling rate setting should be documented in the tutorial.<br>
<br>Is speex made with usage at sampling rate of 44.1kHz and above in mind anyway?<br><br>Secondly, there is still some hi pass filtering or at least coloration of sound, depending on the frame size setting. The larger the frame size the more low frequencies are passed through. Using frame size of 1024 samples at 44.1kHz sampling rate resulted in almost satisfactory output, though low frequencies were noticably attenuated even at frame size of 2048 samples or more.<br>
<br>Is there a way to avoid this hi pass filtering while keeping smaller in-out latency? Frame size of 20ms recommended in the tutorial is not very useful for live performance. How much does speex target closed loop, live music scenarios? <br>
<br>I understand that speex is probably designed primarily for small communication devices with lower sampling rates and less demand for low latency.<br><br>Nontheless, I must say that speex was one library that actually worked for me and was effective in echo/feedback cancellation!<br>
<br>I tried to use some other adaptive filters (LMS and NLMS) the same way I am using speex, but they didn't appear to do what I need. I was wondering therefore, what type of adaptive filtering does speex use internally for echo cancellation? Does the processing consist of more than only what is traditionally called an adaptive filter?<br>
<br>Best regards,<br><br>Jakob Leben<br>