Skip to content

A robust pitch tracker using synchro-squeezed fft and frequency domain autocorrelation

License

Notifications You must be signed in to change notification settings

asuni/PitchSqueezer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PitchSqueezer

A pitch tracker for speech, using synchro-squeezed stft and frequency domain autocorrelation, designed to analyze imperfect recordings of spontaneous speech. Relies heavily on the nice ssqueezepy package.

Features:

  • (mostly) better quality than popular Python trackers (pyin, pyaapt)
  • robust to creaky voices and bad recordings
  • does not need finetuning for min and max f0, works fine with both low and high pitched voices
  • acceptable speed (~ 10x faster than librosa.pyin)
  • (alternatively) a continuous pitch track, filling unvoiced gaps relatively naturally
  • a wavelet decomposition of the pitch track (reversible, except for mean value)
  • compatible with librosa's pyin and pytorch_audio spectrograms, regarding number of frames
  • a command line tool for parallel batch processing of directories (as well as API)

Installation:

pip install pitchsqueezer

Examples of basic usage:

;; Command line, extract f0 for all wavs in a directory using 10 ms frame shift, save as numpy files
$ pitchsqueezer path/to/wavs/ -r 100 -f npy

;; API
import pitch_squeezer as ps
f0, if0 = ps.track_pitch(input_file, min_hz=50, max_hz=500)
f0_cwt = ps.f0_cwt(if0)

docs: https://asuni.github.io/PitchSqueezer/

Visualization of the method:

comparison with librosa.pyin on creaky female voice:

About

A robust pitch tracker using synchro-squeezed fft and frequency domain autocorrelation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published