Skip to the content.

Estimating vowel formants

I use Praat to estimate vowel formants at the target or in the entire vowel trajectory. I created these workflows to batch-process files to make vowel formant analysis faster and more consistent. In these workflows, first I use the MAUS forced-aligner (G2P - MAUS pipeline) to create a Praat textgrid with orthographic transcription and automatic phoneme-level segmentation. Then, I hand-correct the automatically placed vowel- or rime boundaries, and add a landmark for the vowel target if required. Lastly, I estimate and hand-correct formants either in the entire vowel, or at the vowel target. The workflow for estimating vowel trajectories uses a single-word production task, and the workflow for estimating formant targets uses a sentence-production task. The two workflows can be modified to estimate formant targets in single words or trajectories in vowels extracted from a sentence. Some notes on how to adapt the workflow for your data can be found in the scripts.

Task \ Formant Vowel trajectory Vowel target
Single word production Use the workflow for trajectories. Modify correctBoundary.Praat
Use the script formantTarget.Praat
Sentence production Modify inSent.Praat
Extract the vowels using extractVowel.Praat

Use the script formantTrajectory.Praat
Use the workflow for vowel targets.

Acoustic analysis & estimating formants

Workflow for estimating and hand correcting formant trajectories

This workflow takes a set of single words (one word / file) and their matching textgrids with phoneme-level alignment. The script correctBoundary.Praat provides an interface for correcting the automatically placed boundaries for vowel (pre-/d/) rime (/l/-final) onset and offset. The script formantTrajectory.Praat takes the hand-corrected vowel boundaries, estimates vowel formant trajectories between vowel onset and offset, and provides an interface for changing formant settings, and for hand-correcting formant estimates that do not align with the spectrogram. Both scripts load your files one by one, save your edits, and track which files have been corrected. The scripts can be stopped any time: your work will be saved, and the first uncorrected file will be loaded when you re-start them. Formant estimates are saved in separate csv files (one vowel / csv), in a folder called formants.

  • Brief description of the method: Vowel merger in Australian English lateral-final rimes: /æɔ-æ/.
  • Script for correcting vowel- and rime boundaries: correctBoundary.Praat
  • Script for correcting formant estimates: formantTrajectory.Praat
  • Sample audio data from AusTalk with Praat textgrids, created using MAUS: sample data
  • The entire workflow: two scripts, sample data, and reference paper
  • Workflow for estimating and hand correcting formant targets

    This workflow takes a set of sentences (one sentence / file) and their matching textgrids with phoneme-level alignment. The script correctBoundary_addTarget_inSent.Praat provides an interface for correcting the automatically placed boundaries for the onset and offset of multiple vowels, as well as for marking vowel targets. The script extractVowel.Praat takes the hand-corrected vowel boundaries and extracts multiple vowels from each sentence (one vowel / file). The script formantTarget.Praat takes the vowel targets and the sound files with single vowels, estimates vowel formants at the target, and provides an interface for changing formant settings, and for hand-correcting formant estimates that do not align with the spectrogram. Both the correctBoundary_addTarget_inSent.Praat and formantTarget.Praat scripts load your files one by one, save your edits, and track which files have been corrected. The scripts can be stopped any time: your work will be saved, and the first uncorrected file will be loaded when you re-start them. Formant estimates are saved in separate csv files (one vowel / csv), in a folder called formants.

  • Script for identifying vowel onset, offset, and target in a sentence: correctBoundary_addTarget_inSent.Praat
  • Script for extracting the previously identified vowels: extractVowel.Praat
  • Script for correcting formant estimates at vowel target: formantTarget.Praat
  • Sample audio data from AusTalk with Praat textgrids, created using MAUS: sample data
  • The entire workflow: three scripts and sample data