[ NORM v. 1.1 | original version ] The Vowel Normalization and Plotting Suite

About NORM

NORM is a web-based interface to the vowels R package, which is designed to aid sociophoneticians, phoneticians, and sociolinguists in manipulating, normalizing, and plotting vowel formant data. (See our page About Normalization if you're not sure what "normalization" is or why you should do it.) Our motivation for NORM stems from the fact that there are a large and growing number of different techniques available for normalizing formant data. Some are better than others, though all have disadvantages as well as advantages. While there have been a few good comparisons of vowel normalization techniques (e.g., Disner 1980 and Adank et al. 2004), it's not always clear which method is best to use or even the exact formulae one should use for a given method.

NORM allows you run a number of the methods and quickly compare the results, determining which may be best and most suited for your dataset. However, please be sure you understand the specifics of each method - not all will be equally appropriate for all datasets. In addition to developing the NORM software, we have also compiled information on each method - on the Methods page - which discuss the specifics (and our implementation) of each method and their advantages and disadvantages as we've discovered them.

How NORM Works

Vowel Plot of Bark Normalized Mean Values - Rainbow colored
Figure 1. Rainbow colors with SD bars

NORM, this software, works by processing a spreadsheet of your raw vowel measurements through your choice from a variety of the published normalization techniques.

The processing is conducted by using a combination of PHP, the open-source web-oriented scripting language (see, and R, the open-source statistics and graphing language (see As of NORM version 1.0 (February 2009), NORM has been rewritten in the form of a much improved R package - the vowels package. Most of the actual processing of the vowel data is done through the R package.

Used in R, the vowels package is much more powerful and flexible than the NORM website. If you use R, even just a little, you may want to install and try the vowels package rather than use NORM. The vowels package provides much greater control over the formant of your vowel plots. It also provides functions for such tasks as converting formant data from Hertz to Bark and ERB scales. Full features of the vowels package are described in the help files (Click here to access the official PDF manual from CRAN). vowels is available from the CRAN website and also by download here:

R package: xls icon vowels_1.1.tar.gz [ 15 kb; Last Mod: 11/18/2015 ]

See the Change Log for information on recent changes to the vowels package and information about differences between versions. To install the R package to your local computer, download the package in its compressed form above. Then, either (a) from a shell terminal, run the command: R CMD install vowels_1.1.tar.gz or (b) from within R run the command: install.packages(vowels_1.1.tar.gz, repos=NULL). Where vowels_1.1.tar.gz is the complete path to the downloaded file. After that, the vowels package will appear in your R application's Package Manager list (from the Packages & Data menu). You can use that list to click the check box to load the library. Alternatively, you can also load the library within the R command interface with the command: library("vowels").

There are complete help files included in the installation and these help files provide examples of how to use the vowels functions to normalize vowel data and to generate vowel plots like Figure 1.

Alternatively, you can load the vowels package temporarily by sourcing the R file directly from the website. To load vowels temporarily, execute the following within R: source(""). Note that, loaded this way, you will not have access to the help files within R itself.

PHP is used primarily to build the web pages - to retrieve your data and to present your results back to you. In order for the PHP to communicate with the R package, a small R script is used as a "staging area", converting the web page's commands to R commands and formatting the output for reading by the web page. In the spirit of the open-source movement, the main staging script is available, under the GNU General Public License, here:

R staging script: xls icon norm11_stage.R [ 9 kb; Last Mod: 11/18/2015 ]

(This is the actual script that processes your data when you upload them.) You are welcome to modify the script or re-use it as you like. We ask that you let us know if you find errors and that you share with us any improvements you make to the script. Of course, we recommend that you confirm the output of the script before publishing your results. We'll periodically make changes to the script, so check back for updates, new normalization methods, and possible bug fixes.

About NORM's Scaling

Note: We do not recommend scaling your normalized data (see below). Also, note that the F'3 formula, below, is not very good, but that it doesn't matter for the generation of vowel plots. If you need to scale your F3 values, you will probably be better off determining your own scaling formula based on the below.

A number of the normalization methods implemented in NORM (namely, the Lobanov, Nearey, and Watt & Fabricius methods) result in vowel data that are not in Hertz or Bark values. In order to "translate" the resultant values into Hertz-like values, we provide the Scale normalized results to Hz? option on the NORM Form. The formulas for the scaling algorithm are:

F'1 = 250 + 500 (FN1 - FN1MIN) / (FN1MAX - FN1MIN)
F'2 = 850 + 1400 (FN2 - FN2MIN) / (FN2MAX - FN2MIN)
F'3 = 2000 + 1200 (FN3 - FN3MIN) / (FN3MAX - FN3MIN)

Where FNi is a normalized value for formant i and FNiMIN and FNiMAX are the minimum and maximum normalized formant values for formant i.

IMPORTANT: It is imperative that the MIN and MAX values for the formants are determined speaker extrinsically, that is from ALL speakers' normalized formant values together. If this is not done, the scaling will, in effect, undo much of the work of the normalization procedure! In fact, it will do something equivalent to Gerstman's (1968) normalization technique (see Disner 1980: 254-5) - simply scaling each vowel to the relative position it occupies in the speaker's vowel space - a technique which has been out-performed and out-dated since Lobanov (1971) and Nearey (1977) (n.b. we don't even provide a NORM option for it). In short, DO NOT scale your normalized data, UNLESS you have submitted all of the speakers you are comparing to NORM at the same time. Otherwise, it is recommended that you scale your results manually, using the above formulas, when you have finished normalizing all of your data.

How to Cite NORM

To cite the vowels R package:

You can cite NORM by one of the following:

  • Thomas, Erik R. and Tyler Kendall. 2007. NORM: The vowel normalization and plotting suite. [ Online Resource: ]

  • Thomas, Erik R., Tyler Kendall, Malcah Yeager-Dror, and William Kretzschmar. 2007. Two things sociolinguists should know: Software packages for vowel normalization, and accessing linguistic atlas data. [ Workshop at New Ways of Analyzing Variation (NWAV) 36, University of Pennsylvania, PA ]

[ To Top ]
NORM v. 1.1
Last Mod: 11/18/2015
© Erik R. Thomas & Tyler Kendall 2007-2015
erthomas [at] & tsk [at]