# Suggested algorithms for detecting voiced / unvoiced signals [duplicate]

Right. I'm trying to understand the concepts for determining where the signal contains voiced and unvoiced parts.

I have created a spectrogram (STFT) of a signal and I'm trying to separate from voiced and unvoiced.

I have tried calculating this using the total energy for each bin, and, applying some threshold value for this, however, this concept does not work since determining the threshold requires interaction and and the system should detect this automatically.

Can I therefore use some kind of estimation in order to calculate which bins contain voiced or unvoiced? Let's say, for example:

1) Calculate abs magnitude of STFT Bin
2) Take the 1st, 2nd bins and [form some kind of estimation]
4) use the estimation (2) to detect whether the signal contains voiced


Or could anyone recommend any algorithms, or, reading materials (that are very mathematical intensive) to separating voiced from unvoiced signals without using a threshold value?

Thanks

• It sounds like you're a little bit confused. What do you mean by automatic and no interaction? Do you know the difference between supervised and unsupervised training? Commented Feb 1, 2014 at 20:47
• @Aaron Yea, unsupervised training (k-means clustering etc..) The problem is that, I need to identify two types of "calls" made by an animal, with hardly any interaction from the user. I have: Frequency ranges, and amplitudes of each of the calls, as a training data set. Would it therefore be an idea to use a HMM to train these? Commented Feb 1, 2014 at 20:50
• I don't understand why you can't use a threshold. If you are doing supervised training then you would learn the threshold and apply it during testing, which would require no interaction from the user. Commented Feb 1, 2014 at 20:52
• @Aaron But, how (if I'm doing supervised training) would I therefore infer a threshold? This is what I've been trying to calculate / workout.. I cannot find any material out there, which, would enable me to do this. Could you give an example, based on what I know about the data? I.e. Would the frequency ranges be enough to be able to perform a threshold to determine the two types of calls? Commented Feb 1, 2014 at 20:55

Voiced frames may tend to have magnitude peaks that are more narrow-band than unvoiced spectral peaks, and with potential harmonic spacing of multiple spectral peaks. You can iterate on a threshold that divides using the above tests most clearly into 2 or 3 clusters.

• So I can determine a threshold value, based off some estimation of the first 2 bins of the STFT which will give me a respected estimation into the noise/voiced ratio? Commented Feb 1, 2014 at 21:07
• Depending on voice source, FFT length, sample rate, etc., a voiced signal may appear in a lot more than just 2 bins, due to strong overtones and harmonics. Commented Feb 1, 2014 at 21:28
• Please see my edit, there is the spectrogram I'm currently working with and trying to get voiced/unvoiced samples from, mainly interested in the areas/bins where the power is the most Commented Feb 1, 2014 at 21:35

Maybe you try spectral reassignment. Voiced sounds will have a higher ratio of $d \omega \over dt$.

• Hey thanks for this.. Would this be a useful paper for this method?google.co.uk/… what is $dw$ and $dt$ inside your equation? Commented Feb 4, 2014 at 5:15
• The paper looks good. $dw$ and $dt$ are the corrections to the frequency and time coordinates of a given STFT ,,bin''. Commented Feb 4, 2014 at 10:09
• Hey, thank you for the reply. Do you think that this will maybe help in the segmentation of these calls? :) Commented Feb 4, 2014 at 11:53
• Oh, that's You. Hi! I think it could help. You should try it. Commented Feb 4, 2014 at 18:22
• "Oh that's you" should I be worried? :P Commented Feb 4, 2014 at 18:37