I've recorded a 2-sec pronunciation of a vowel sound. The first 0.12 or so seconds of the signal are shown below.

Now, I've constructed an auto-regressive (AR) 8th-order model to compress this signal. (Actually, I'm just modelling 160 samples or 0.02 sec at a time.) The ar function in Matlab's System Identification Toolbox can estimate the parameters for an "optimal" spectrum fit.

My problem is choosing the stochastic input to the model filter. I suppose there's something better than white noise. The periodicity (14 periods per 0.02 seconds) leads me to think that an impulse train with the same period would be suitable.

If so, how would I choose the amplitude, and how would I find the periodicity? ACF and PSD estimations are quite noisy. Am I even on the right track?

enter image description here

  • 1
    $\begingroup$ FYI, I ended up scaling the impulse train such that its signal energy (measured in the time domain) was the same as that of the recorded signal. $\endgroup$ – Andreas Nov 24 '11 at 15:22

A pitch estimator is commonly used to find the vocal periodicity. Common pitch estimators include cepstrum/cepstral analysis, harmonic product spectrum, and composite algorithms, such as YAAPT.

  • $\begingroup$ Thanks. How should I choose the impulse amplitude? $\endgroup$ – Andreas Nov 24 '11 at 10:11

I think your best bet is the "YIN" pitch detector, described in this paper: http://audition.ens.fr/adc/pdf/2002_JASA_YIN.pdf. It's fairly simple, and performs very well. They present it in steps, or improvements upon the previous idea, and even just implementing the first few steps should be sufficient.

Most pitch detectors that are actually in use are related to autocorrelation. The biggest issue with most pitch detection algorithms is that of octave errors -- either detecting a lower or higher pitch. It's interesting that you say your autocorrelation function is noisy. You should see a bunch of noise, with peaks at integer multiples and divisors of the fundamental frequency. Hopefully the pitch lag corresponding to the fundamental frequency has the largest value, but often it will be at a sub-octave (because the signals is not perfectly periodic), or at a higher octave (because of a strong formant causing one of the higher harmonics to be really loud). I would recommend a window size that is about as large as two of your lowest possible pitch periods.

That signal also looks like it has a very low frequency component -- speech usually doesn't wave up and down like that. I might recommend processing it with, say, a 24 dB/oct high-pass filter at around 50 Hz.

  • $\begingroup$ Thanks to both of you, I'll check those pitch detectors out. When the period is estimated, how can I find which amplitude is appropriate for the impulse train? $\endgroup$ – Andreas Nov 24 '11 at 8:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.