I have some audio recordings (with relatively static but noisy background, e.g., wind in an open area) with small number of short occurrences of speech (~1% of the total audio duration).
What would be a good method to detect the speech occurences in an unsupervised manner?
I have tried simple thresholding on a spectrogram, but this is problematic since:
- The intensity of the background can wary with time (i.e. noise is louder sometimes)
- Different speech segments need not to be similar to each other
- Often, speech is too quiet (compared to the average loudness of the background) and is overlaid by noise
This may seem like quite a hard task, however I can easily notice the speech segments by listening to the audio/looking at the spectrogram, since spectrogram of speech has some distinct structure (although it is non-trivial to rely on the structure for detection as it is still quite non-regular).
- Note that I just want to detect intervals with something sounding like human speech (or, say, something distinct enough from the background, since data typically has no other sound sources besides background/speech).