jkjaer / fastF0Nls

C++ and MATLAB code for fast and accurate fundamental frequency estimation
BSD 3-Clause "New" or "Revised" License
97 stars 24 forks source link

Voiced/Unvoiced classfication #3

Closed johanbn closed 10 months ago

johanbn commented 10 months ago

Hi,

I am interested in using your work for a playtime project. Estimating pitch of speech, and when it is voiced speech comb filter out those components using the pitch frequency. However not sure how I would detect voiced speech. do you see any easy way to do this?

Br, Johan

jkjaer commented 10 months ago

Hi Johan,

The simplest solution would be to check the estimated harmonic order. In principle, this should only be positive for voiced speech. Unvoiced speech can be modelled as an autoregressive process (i.e., white Gaussian noise filtered through an allpole file) so the harmonic order should be zero for such signals. However, the FastF0Nls algorithm is based on a white Gaussian noise assumption. Therefore, I would encourage you to take a look at https://github.com/jkjaer/fastF0ArMl which can estimate the sinusoidal and autoregressive parameters and orders from a mixture of a periodic signal and an autoregressive process.

Best, Jesper