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?
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.