FormantPro ---- A Praat script for large-scale systematic analysis of continuous formant movements (Version 1.4.3) [Download]

by Yi Xu


FormantPro is a convenient tool built for large-scale, systematic experimental studies of formant movements. It allows users to obtain continuous formant and formant velocity trajectories from multiple sound files, take various measurements, and save them in formats ready for graphical and statistical analysis. It also generates averaged trajectories and measurements across repetitions and speakers. More specifically, FormantPro allows you to:


  1. Put _FormantPro.praat in the folder containing the sound files to be analyzed, and launch Praat;
  2. Select Open Praat Script... from the top menu;
  3. Locate _FormantPro.praat in the dialogue window and select it;
  4. When the script window opens in Praat, select Run from the Run menu (or type the key shortcut command-r or control-r);
  5. In the "Start" window, check or uncheck the boxes according to your need, and set appropriate values* in the text fields or simply use the default values. Select the task by checking the appropriate radio button.
  6. Click OK and two windows will appear. The first window (TextGrid) displays the waveform and spectrogram of the current sound together with optional pitch track and formant tracks in the spectrogram panel. (These tracks cannot be manually changed. So you can hide them to reduce processing time by using the corresponding menu.)
  7. At the bottom of this window are two TextGrid tiers, where you can insert interval boundaries (Tier 1) and add comments (Tier 2). For any interval that you want to have results saved, a label in Tier 1 is required. The label can be as simple as a, b, c or 1, 2, 3.
  8. The second window (Pause) allows you to control the progress of the analysis. To bring up the next sound to be analyzed, press "Next". To go back to previous sound, press “Back”. To jump to any sound, type the number in the “Jump to” textbox and “Jump”. Pressing all these three buttons will also automatically save all the measurements of the current sound.
  9. To end the current analysis session, press "Done" in the Pause window, and the name of the last sound analyzed will be shown in the Info window. You can use that number as a starting point in you next analysis session. To exit without saving any data, press “Stop”.
  10. After processing individual files, you can run the script again to get ensemble files by checking the third radio button from the top.
  11. You can also change various parameter after processing individual files by runing the script again with the radio button "Process all sounds without pause" checked. The script will run through all the files on its own.
  12. You can also generate mean formant and formant velocity trajectories averaged across repetitions of identical sentences. To do this, set the value of Nrepetitions in the opening window according to the number of repetitions in your data set when you run the script with the "Get ensemble files" button checked. Make sure that the number of labeled intervals are identical across the repetitions.
  13. To force _FormantPro to skip extra repetitions, you need to check "Ignore extra repetition" and also name your sound files with a final digit that indicates repetition.
  14. To average across unequal number of repetitions, you can create a text file (default = repetition_list.txt) in which sound-file names are listed in a single column, with blank lines separating the repetition groups. You can create this file by renaming "FileList.txt" that is always generated by FormantPro, and then modifying it by inserting blank lines and deleting sounds that you want to exclude. Note that deleting sound names in this file allows you to skip sounds that you want to exclude in your final analysis.
  15. You can also generate mean normf0 trajectories averaged across speakers. To do this, put a copy of FormantPro in the folder above all the folders containing data from individual speakers. Then create a text file (speaker_folders.txt) containing the speaker folder names arranged in a single column. Now run _FormantPro with the 4th task--Average across speakers--checked. The script will read time-normalized ensember files from all the speaker folders, average the values and then save them in cross-speaker ensemble files. In the Start window, you also need to tell _FormantPro where the speaker folder file is. The default location is the current directory: "./". If it is in an upper directory, you should enter "../"
* A critical value to check here is "Maximum formant", especially if the obtained formants look apparently wrong for a particular speaker. To find the optimal value, you can turn on "Show formant" in the TextGrid window and then adjust "Maximum formant (Hz)" from the "Formant settings..." menu until the displayed formants look reasonable. You can then enter that value into the "Start" window. Note that this change of "Maximum formant" value (or any other value) can be done after you have finished segmenting all the sounds. You can then run FormantPro again with the new value(s) by checking the button "Process all sounds without pause".


Each time you press "Continue" in the Pause window, various analysis results are saved for the current sound as text files:

After the analysis of all the individual sound files are done, you can gather the analysis results into a number of ensemble files by running the script again and checking the button "Get ensemble results" in the startup window. The following ensemble files will be saved:

  1. formant.txt (Hz)
  2. formantvelocity.txt (Hz/s)
  3. normtime_formant.txt (Hz)
  4. normtime_barkformant.txt (bark)
  5. normtime_formantvelocity.txt (Hz/s)
  6. norm_actutime.txt (s)
  7. maxformant.txt (Hz)
  8. minformant.txt (Hz)
  9. meanformant.txt (Hz)
  10. duration.txt (ms)
  11. maxformantvelocity.txt (Hz/s)
  12. meanintensity.txt (dB)

    If Nrepetitions > 0, the following files will also be saved:

  13. mean_normformant.txt (Hz)
  14. mean_normtime_formant.txt (Hz)
  15. mean_normtime_barkformant.txt (bark)
  16. mean_normtime_formantvelocity.txt (Hz/s)
  17. mean_norm_actutime.txt (s)
  18. mean_maxformant.txt (Hz)
  19. mean_minformant.txt (Hz)
  20. mean_meanformant.txt (Hz)
  21. mean_duration.txt (ms)
  22. mean_maxformantvelocity.txt (Hz/s)
  23. mean_meanintensity.txt (dB)

    If Task 4 "Average across speakers" is selected, the following file will also be saved:

  24. mean_normtime_formant_cross_speaker.txt
  25. mean_normtime_barkformant_cross_speaker.txt
  26. mean_normtime_formantvelocity_cross_speaker.txt
  27. mean_norm_actutime_cross_speaker.txt

Note that you can generate the ensemble files only if you have analyzed at least one sound following the steps described earlier.

About time-normalization


The following examples show how functional contrasts can be easily brought out by time-normalized mean formant trajectories.

_ _

Figure 6 of Xu (2007): Mean formant curves [(F2+F3)/2] of trisyllabic Mandarin phrases, averaged across 10 repetitions by a male speaker.


Need more help?

Detailed instructions can be also found at the beginning of the script.

Bug reports, suggestions on improvement and new features are also welcome.

How to cite

Xu, Y. and Gao, H. (2018). FormantPro as a tool for speech analysis and segmentation. Revista de Estudos da Linguagem. pre-print

Published research making use of FormantPro

  1. Xu, Y. (2007). Speech as articulatory encoding of communicative functions. In Proceedings of The 16th International Congress of Phonetic Sciences, Saarbrucken: 25-30.
  2. Cheng, C. and Xu, Y. (2013). Articulatory limit and extreme segmental reduction in Taiwan Mandarin. Journal of the Acoustical Society of America 134: 4481-4495.
  3. Gao, H. and Xu, Y. (2013). Coarticulation as an epiphenomenon of syllable-synchronized target approximation—Evidence from F0-aligned formant trajectories in Mandarin. Presented at the 166th meeting of the Acoustical Society of America.
  4. Prom-on, S., Birkholz, P. and Xu, Y. (2014). Estimating vocal tract shapes of Thai vowels from contextual vowel variation. In Proceedings of Co-ordination and Standardization of Speech Databases and Assessment Techniques (COCOSDA), 2014 17th Oriental Chapter of the International Committee for the. IEEE: 1-6.
  5. Liu, X. and Xu, Y. (2015). Relations between affective music and speech: Evidence from dynamics of affective piano performance and speech production. Frontiers in Psychology 6: 886.
  6. Chiu, F., Fromont, L., Lee, A. and Xu, Y. (2015). Long-distance anticipatory vowel-to-vowel assimilatory effects in French and Japanese. In Proceedings of The 18th International Congress of Phonetic Sciences, Glasgow, UK: 1008-1012.
  7. Lee, A. and Mok, P. (2016). Durational correlates of Japanese phonemic quantity contrasts by Cantonese-speaking L2 learners. In Proceedings of Speech Prosody 2016, Boston, USA: 597-601.

Yi's other tools