0
$\begingroup$

What's an extremely efficient way of detecting when a user has stopped talking into a microphone? When I use systems like Siri it can detect when I've stopped talking almost immediately, even when there's background noise. My initial guess was to get the average volume of the background noise first but it seems there isn't much time for that as Siri starts listening straight after the button is pressed. The method doesn't have to be accurate in what is being said, just recognize that something is being said. What algorithms should I look into?

$\endgroup$
  • 4
    $\begingroup$ You can look for information on Voice Activity Detection (VAD), e.g. here or here. The last is an overview of the VAD methods I know, I think it is a good place to start. $\endgroup$ – Serge Mar 31 '13 at 17:37
  • $\begingroup$ Thanks I wasn't sure what the topic was called but I'll look into VAD. $\endgroup$ – XSL Mar 31 '13 at 17:41
3
$\begingroup$

Assume noise is not a serious issue in your problem. I guess you can get pretty clear speech signal. If you have speech recognition part implemented in your system, I think you should be able to take advantage over the language model in your recognition system. According to the transition probabilities, you shall get some confidence to say at what moment someone stopped talking.

In case you donot know the language model. Here is a simple example. Suppose I want to introduce myself. I will say "Hello[verb] everyone [object]. My name [subject] is [verb] Bob [object]. I [subject] came [verb] from ... [object]". The probability for someone to stop talking right after a subject or verb is much lower than after an object. If you can recognize speech, then you shall be able to take advantage over these language models.

The other thing that is worthy to try is to see whether you can find some stop patterns when someone is talking. What I mean is that from word to word, sentence to sentence, everyone might have his/her stop patterns. If you could successfully retrieve some patterns for example duration, then they shall help you differentiate whether the current stop is alike previous stops or not.

$\endgroup$
  • $\begingroup$ Thanks for the suggestion. I think my problem might be even simpler than that. The speech recognition isn't done until the user has finished speaking and the recorded sound is sent to the cloud to be processed. I just need to detect when the user has stopped talking otherwise the user would have to press a button to start the microphone recording and press again to stop. $\endgroup$ – XSL Apr 1 '13 at 0:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.