spafe.frequencies.fundamental_frequencies

Credits to:
Patrice Guyot. (2018, April 19). Fast Python implementation of the Yin algorithm (Version v1.1.1). Zenodo. http://doi.org/10.5281/zenodo.1220947
class spafe.frequencies.fundamental_frequencies.FundamentalFrequenciesExtractor(debug=False)[source]

Bases: object

compute_yin(sig, fs, dataFileName=None, w_len=512, w_step=256, f0_min=50, f0_max=3000, harmo_thresh=0.1)[source]

Compute the Yin Algorithm. Return fundamental frequency and harmonic rate.

Parameters:
  • sig (list) – Audio signal (list of float)
  • fs (int) – sampling rate (= average number of samples pro 1 second)
  • w_len (int) – size of the analysis window (in #samples)
  • w_step (int) – size of the lag between two consecutives windows (in #samples)
  • f0_min (int) – Minimum fundamental frequency that can be detected (in Hertz)
  • f0_max (int) – Maximum fundamental frequency that can be detected (in Hertz)
  • harmo_tresh (int) – Threshold of detection. The yalgorithmù return the first minimum of the CMND fubction below this threshold.
Returns:

tuple include the following
  • pitches : list of fundamental frequencies,
  • harmonic_rates: list of harmonic rate values for each fundamental
    frequency value (= confidence value)
  • argmins : minimums of the Cumulative Mean Normalized DifferenceFunction
  • times : list of time of each estimation

Return type:

(tuple)

cumulativeMeanNormalizedDifferenceFunction(df, N)[source]

Compute cumulative mean normalized difference function (CMND). This corresponds to equation (8) in [1].

Parameters:
  • df (list) – Difference function
  • N (int) – length of data
  • tau_max (int) – integration window size
Returns:

cumulative mean normalized difference function

Return type:

(list)

differenceFunction(x, N, tau_max)[source]

Compute difference function of data x. This corresponds to equation (6) in [1] Fastest implementation. Use the same approach than differenceFunction_scipy. This solution is implemented directly with np fft.

Parameters:
  • x (array) – audio data
  • N (int) – length of data
  • tau_max (int) – integration window size
Returns:

difference function

Return type:

(list)

getPitch(cmdf, tau_min, tau_max, harmo_th=0.1)[source]
Return fundamental period of a frame based on CMND function.
  • cmdf: Cumulative Mean Normalized Difference function
Parameters:
  • tau_min (int) – minimum period for speech
  • tau_max (int) – maximum period for speech
  • harmo_th (float) – harmonicity threshold to determine if it is necessary to compute pitch frequency
Returns:

fundamental period if there is values under threshold, 0 otherwise

Return type:

(float)

main(sig, fs, w_len=1024, w_step=256, f0_min=70, f0_max=200, harmo_thresh=0.85, audioDir='./', dataFileName=None)[source]

Run the computation of the Yin algorithm on a example file.

Parameters:
  • sig (list) – Audio signal (list of float)
  • fs (int) – sampling rate (= average number of samples pro 1 second)
  • w_len (int) – size of the analysis window (in #samples)
  • w_step (int) – size of the lag between two consecutives windows (in #samples)
  • f0_min (int) – Minimum fundamental frequency that can be detected (in Hertz)
  • f0_max (int) – Maximum fundamental frequency that can be detected (in Hertz)
  • harmo_tresh (int) – Threshold of detection. The yalgorithmù return the first minimum of the CMND fubction below this threshold.
Returns:

tuple include the following
  • pitches : list of fundamental frequencies,
  • harmonic_rates: list of harmonic rate values for each
    fundamental frequency value (= confidence value)
  • argmins : minimums of the Cumulative Mean Normalized DifferenceFunction
  • times : list of time of each estimation

Return type:

(tuple)