I have been experimenting with Speex's echo canceller during the past few days.
I got the echo canceller to work, however, it takes a long time until it actually begins filtering out the echo. It seems like the adaptive filter takes a long time (~20s) to converge for some reason, after which it works quite well. I'm using a tail length of 100ms, but I tried changing that to shorter (and longer) - doesn't help.
Therefore I was thinking maybe I should save a working echo state to file, and read that everytime I start the app, instead of initialising an empty one every time. Does anyone have any experience with that? Speex has no built-in functionality to do that so I'm wondering whether this is even the right approach?