Please note: NORM has a new home at http://lingtools.uoregon.edu/norm/. The version of NORM here (i.e. the one you are currently using) is going away. Please update your bookmarks. You will be redicted automatically in a moment...

NORM is a web-based interface to the vowelsR 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.

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 http://www.php.net), and R, the open-source statistics and graphing language (see http://www.r-project.org/). 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:

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("http://ncslaap.lib.ncsu.edu/tools/norm/vowels.R"). 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:

(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.

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:

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.