Learn R Programming

phonTools (version 0.2-2.2)

PSTM: Probabilistic Sliding Template Model

Description

Classify Vowels Using the Probabilistic Sliding Template Model

Usage

PSTM (ffs, f0, template, winner = TRUE)

Value

If winner = TRUE:

A dataframe with the following columns:

vowel

The label for each winning vowel.

psi

The optimal psi determined for the winning vowel.

postprob

The posterior probability of observing the winning vowel, given the formants and the psi.

If winner = FALSE:

A list of dataframes, each of which contains information for every candidate vowel category for each token to be classified. Each dataframe has the following columns:

vowel

The label for each candidate vowel category.

psi

The optimal psi determined for each vowel category.

postprob

The posterior probability of observing each vowel category, given the formants and the psi.

Arguments

ffs

A matrix of formant frequencies in which each row represents a single vowel token, and each column represents a formant frequency. At least 3 formants need to be specified for every vowel.

f0

A vector containing the average f0 measured for each vowel to be classified. The length of this vector must equal the number of rows in ffs.

template

A 'template' object created with the createtemplate() function provided in this package. If no template is specified, vowels are classified relative to vowels from Edmonton English.

winner

If TRUE, only the winner of each classification is returned. If FALSE, information regarding all candidate vowels is returned. See 'value' subsection for details.

Author

Santiago Barreda <sbarreda@ucdavis.edu>

Details

The classic log-mean normalization method of Nearey (1978) helps compare the vowels produced by different speakers by controlling for the log-mean formant frequency (FF) produced by a speaker. This approach to normalization assumes that variation in the vowel spaces of speakers of the same dialect is primarily according to a single multiplicative parameter. When this speaker-specific scaling parameter is controlled for, differences in the vowel spaces of different speakers are minimized.

The Probabilistic Sliding Template Model (PSTM) of Nearey and Assmann (2007) attempts to predict perceived vowel quality by 'guessing' an appropriate speaker-specific scaling parameter and normalizing vowels using this estimated parameter. 'Method 6' of the PSTM (described in Nearey & Assmann, 2007) is used to estimate the necessary parameter. After normalization, vowels are classified by comparing them to a provided reference template, which can be created using the createtemplate() function included in this package. Normalized or unnormalized vowels may be classified, as long as the same transformations are performed on the data used to create the template and the data being classified.

If no template is passed, the model identifies vowels relative to the vowel system of Edmonton English speakers. For in-depth details regarding the specifics of this model, please see Nearey & Assmann (2007).

References

Nearey, T. M. (1978). Phonetic Feature Systems for Vowels. PhD thesis, Indiana University Linguistics Club.

Nearey, T. M. & P. F. Assmann. (2007). Pobabilistic 'sliding template' models for indirect vowel normalization. in Experimental Approaches to Phonology, edited by M.J. Sole, P. S., Beddor, and M. Ohala (Oxford University Press, Oxford), pp. 246-269.

Examples

Run this code
## load Peterson & Barney vowel data
#data (pb52)

## normalize vowel formant frequencies
#normdvowels = normalize (pb52[,7:9], pb52$speaker, pb52$vowel)
#formants = normdvowels[,1:3]
#vowels = pb52$vowel

## make a vowel template based on these frequencies
#template = createtemplate (formants, vowels) 

## first classify only the first three vowels
#ffs = pb52[1:3,c(7:9)] 
#f0 = pb52[1:3,6]

## outputting only the winners, and then the full posterior probabilities
#PSTM (ffs, f0, template)
#PSTM (ffs, f0, template, winner = FALSE)

## now classify all vowels
## uncomment to run
#ffs = pb52[,c(7:9)] 
#f0 = pb52[,6]  
#winner = PSTM (ffs, f0, template)
## with a good degree of accuracy
#table (winner$vowel, pb52$vowel)

Run the code above in your browser using DataLab