I am programming a Voice Activity Detection algorithm. After researching several methods, I implemented a simple method that determines whether or not the person is speaking based off the RMS of the signal. However, I want to improve the algorithm to determine whether the sound coming into the microphone is actually a human voice and I thought the best way to do that would be to calculate the frequency of the signal. I used an FFT to do so, but upon further research others have suggested that other methods may be more effective. As such, which would be the best method to use? EG: Auto-correlation, zero crossing, etc...? Or is examining the frequency not even a good method of VAD? If it isn't, what is the best method by which to determine whether or not someone is talking?

  • $\begingroup$ You might look into recognizing formants similar to what is done in linear predictive coding. $\endgroup$
    – nispio
    Oct 27, 2013 at 18:03
  • $\begingroup$ formants seem far less accurate than calculating fundamental frequency. $\endgroup$
    – Skylion
    Oct 27, 2013 at 18:17
  • $\begingroup$ I imagine that frequency will be likely to give more false positives while formats would give more false negatives. $\endgroup$
    – nispio
    Oct 28, 2013 at 0:22


Your Answer

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

Browse other questions tagged or ask your own question.