My problem is that I don't know the energy of the background noise, so I can't just threshold the energy. The processing is done in real time, and I have about 500msec to decide. Ideally, I'd want quiet consonants considered non-silence.
$\begingroup$
$\endgroup$
2
-
7$\begingroup$ I don't have enough information to give a full answer, but your problem is referred to as voice activity detection. There isn't a single agreed-upon best way to do it, and if you look you will probably come across many different approaches. Perhaps some others can flesh it out a bit more. $\endgroup$– Jason RCommented Oct 26, 2011 at 11:33
-
$\begingroup$ @Michael Litvin, there is a class of non-linear filters (used in 'energy detection' by the name of 'Teager-Kaiser'. I think it is subset of what are known as 'voltera kernels'. Sorry I cant provide any more information, but if you search around for those words you might find what you are looking for. I know that the Teager-Kaiser method is used to 'when' whale sounds begin VS just background noise. $\endgroup$– SpaceyCommented Oct 27, 2011 at 22:26
Add a comment
|
1 Answer
$\begingroup$
$\endgroup$
There are a bunch of parameters that you can look at:
- Overall energy
- Short term spectrum: Speech has a fairly distinctive "pink-like" spectrum and noise (which is happening during the non-speech parts) tends to be white if it's electrically dominated or "red" (i.e. low frequency heavy) if it's acoustic background noise or microphone noise
- Amplitude statistics. Most noise signals have a Gaussian distribution, speech is closer to a Laplace distribution
I think a combination of these three should give a fairly robust detection scheme.