I want to create an application that analyzes human voice pitch, but spectrograms are very noisy. However, in Adobe Audition, there is a feature called the spectral pitch display, and it successfully filtered the spectrogram so that only relevant pitch info is displayed. What is this type of graph called? And where should I start searching if I want to implement it in code?
1 Answer
You can usually trade off time versus frequency resolution in a spectrogram by changing the length, offset, and overlap of the STFT/FFTs.
If you compute more than one set of STFT/FFTs for a single spectrogram (say, one short FFT set for better time resolution, and one longer FFT set for better frequency resolution) you can combine the two (or more!) sets into a single graph by using one set to gate the display of the other (via some non-linear function).
However, (perceived) pitch and spectral frequency are not the same thing.
Some methods I've tried for my music spectrogram app are to use a pitch estimator (one of autocorrelation/ASDF/AMDF, cepstrum, harmonic product spectrum, et.al.) instead of just a fixed length FFT frequency estimator, and graph the tracked pitch and its associated overtones with or on top of the STFT/FFT spectrogram.
-
1$\begingroup$ Shameless plug: For an example of the latter, see: apps.apple.com/us/app/music-spectrograph/id432044946 . There's a similar app in the Mac App store. $\endgroup$– hotpaw2Oct 26, 2021 at 20:20