[Speex-dev] Preprocessor denoise. Does it work?

Andy Ross andy at plausible.org
Tue Feb 27 20:56:15 PST 2007


Jean-Marc Valin wrote:
> Andy Ross wrote:
> > Not knowing how VAD works, I can't say for sure.
>
> There are many ways to implement a VAD.

I meant "not knowing how speex's VAD works", of course, not VAD
in general.  If you would stop interpreting everything I say in
the least charitable manner, this might be going more smoothly
than it is.

(Tom was right, by the way, I was presuming that DENOISE was the
feature at fault, but he's convinced me that I should really be
looking at VAD)

What I implemented is, in the strict sense, called "squelch".  As
an algorithm, it predates digital signal processing by several
decades.  Here is a quick definition and overview if you aren't
familiar with analog stuff: http://en.wikipedia.org/wiki/Squelch

It is not a sexy algorithm, and you won't find many academic
papers on it.  But (and Tom's post bears this out) it has the
distinct advantage of *outperforming* Speex's internal tools (the
ones designed to solve the same problem!) for at least two use
cases.  Like I said, I bet you that most or all of your
production users are doing this in one form or another.

Seriously: take your laptop and run a quick speex transcoding
with AGC enabled.  Speak a little, then type something quickly,
then speak a little more.  Play it back.  Now do the same thing
with Skype, or Teamspeak, or Ventrilo, or pretty much any
production VoIP application.  Why does speex encode the typing
while nothing else does?  I don't have source code to those
products, but I'm all but certain it's because they include a
squelch feature in their preprocessing.

If (1) you consider VAD and denoise are important enough to
address in the codec library, (2) there is a simpler algorithm
that works better in at least some circumstances, and (3) most of
your users (re)write it themselves anyway, shouldn't you at least
*consider* adding a squelch feature?  Or at least fixing/retuning
VAD so it works as well?

Andy



More information about the Speex-dev mailing list