pitch detection: which is the most robust way to distinguish voiced from unvoiced audio
SWIPE is a pitch estimator that worked well for me in the past. You can find dissertation &amp; code in MATLAB here. It might give you some ideas.