I have used Praat to manually find formants of vowels in a word. Can we do this programmatically (automatically)?

Also, I looked at speech recognition tools like CMUSphinx. Didn't find them useful for my use case.

Any help will be appreciated. Please do direct me to some ongoing research or reading material in case such a tool doesn't exist as of now.

More info:

  • What are your inputs like? - Scripted words.
  • Multiple talkers (per recording) or single - Single User per recording.
  • Field quality or lab - A closed environment, less external noise.
  • Long recordings, or single sentences, or single words - Just Single Words like Sit, seat, east
  • What level of automatic do you need? That I speak a word with vowels and I can get its formants.
  • 1
    Your question needs additional details. What are your inputs like? Are they spontaneous speech or scripted? Multiple talkers (per recording) or single? Field quality or lab? Long recordings, or single sentences, or single words? What level of automatic do you need? Manual word segmentation? Manual transcription? No manual at all? What do you mean by 'formants in a word'? Specific segments? Jul 30, 2014 at 22:43
  • @JeremyNeedle - Updated the questions with answers.
    – iamkhush
    Jul 30, 2014 at 22:58
  • 1
    What degree of "resolution" do you need? For example, given a vowel that is 200 ms long with one set of formant frequencies at its left edge and a different set of formant frequencies at its right edge, and all of the values in between, how many samples of formant measurements do you need? And how accurate do the measurements need to be? Jul 31, 2014 at 4:43
  • @musicallinguist - Well I am thinking it is an initial prototype. It should be fairly accurate. But my question is , is this possible? If it is , we can reiterate or somehow enhance the process to get better results. I hope I am being clear here.
    – iamkhush
    Jul 31, 2014 at 6:46

1 Answer 1


Because of the simplifying constraints you describe, your problem is manageable.

One approach is to use a forced aligner to automatically locate the segments in a given word; the output would be a TextGrid tier with intervals marked for each segment. I'm not personally experienced with this, but I've seen it done and I know it's a common practice. Maybe start with (http://www.ling.upenn.edu/phonetics/p2fa/) or (http://htk.eng.cam.ac.uk) for alignment. This works well with single-word, pre-scripted, lab-recorded input.

Then, your system would select the appropriate intervals (e.g., 'segment labeled /i/', but also 'all intervals labeled with any of /aieou/', etc.), and extract formant values at some number of subintervals (this is @musicallinguist's question: 'how many subintervals?'). A common starting point is about 3 (25%, 50%, and 75% into the vowel), but you can always get more or fewer. This can all be done in Praat (scripted).


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.