I need to implement a voice activity detection algorithm in Java so that I can know when to start and/or stop recording audio. I am looking for an algorithm that can take either a byte[], a target-data-line, or an audio file as input. Also, a solution would preferably not use external dependencies.
Asked
Active
Viewed 4,491 times
3
-
Voice Activity Detection is VERY different from detecting silence. I do not want background noise to be detected preferably. – Skylion Sep 08 '13 at 18:45
-
While the the question states 'detect silence', the method I showed detects sound above/below any set limit. If the BG noise is anywhere beyond 'low', the sound would be hard to hear. If it is low, then the technique I outlined will detect it, with the appropriate limit. Noticing also that you have asked a question about pitch shifting.. Detecting sound levels is an order of magnitude easier than pitch shifting. If you cannot sort this, you've got a snowball's chance in hell of achieving that. – Andrew Thompson Sep 08 '13 at 18:57
-
I already have implemented that code. I want information on pitch shifting or any other algorithms that will further improve my code. – Skylion Sep 08 '13 at 18:59
1 Answers
4
Give a look at TarsosDSP as source of inspiration: It is so far the best open source Java library to deal with Audio Detection. It is purely written in Java and briefly provides:
SoundDetection
PitchDetection
PercussionDetection
Audio Time Stretching
Pitch Shifting
IIR-filters
Check also the official paper and manual for a better grasp on the topic.

tonnoz
- 454
- 4
- 12
-
Actually implemented this on my own using TarosDSP as guidance and never got around to updating the answer, but hey you deserve the accepted answer just for digging this up. – Skylion Feb 19 '16 at 22:17