speaker
Oxford University logo
Phonetics Laboratory
Faculty of Linguistics, Philology, and Phonetics

Parametric interpretation

After temporal interpretation, each node in the prosodic representation has been assigned a start time and a duration. We can then assign a parametric interpretation to each node.

This is done by evaluating a set of phonetic exponency rules, which have the following general form:

Category:Features -->
...
Parameter(T0 .. T) = (V0 .. V).
  • Parameter indicates a parameter for the synthesizer
  • (T0 .. T) indicates points in time relative to the start time of a constituent
  • (V0 .. V) indicates corresponding values between which the parameter should be interpolated
  • ... indicates optional pickup of values from the exponecy database, and the consultation of lookup tables

Order of evaluation

  • Across syllables, parametric interpretation is top-down, left-to-right
  • Within syllables, parametric interpretation is top-down, head-first

Top-down interpretation

  • holistic properties of constituents are implemented as early as possible
  • lower-level constituent may refine the exponents of higher-level constituents

Left-to-right interpretation

  • each syllable is glued to the previous one
  • each onset is overlaid on the coda of the previous syllable

Head-first interpretation

  • weak nodes are overlaid on their strong sister nodes
  • weak nodes may adapt their exponents to those of their strong sister nodes, because the exponents of the sister node are already known

Implementation

As exponency rules are evaluated, parameter tracks are added to a database, which is treated as a stack:

parameter_track(Parameter, T0, T, V0, V)

The following predicate is used to retrieve values from this database:

value(Parameter, Time, Value) :-
parameter_track(Parameter, T0, T, V0, V),
T0 <= Time,
T >= Time, !,
Value is V0 + (Time - T0) * ((V - V) / (T - T0)).
value(Parameter, _, Default) :-
parameter_default(Parameter, Default).

Example

Exponency rules for F2:

Nu -->
A = END,
B = F2_VALUE,
f2(170, A) = (B, B).

Co:[BACK, AFFRICATE] -->
A = END,
B = f2(-35),
f2(-35, 10, 95, A) = (B, 1760+0.1*(B-1760), 2100, 1740).
  • END calls a built-in macro that returns the end time of the current constituent relative to the start time
  • F2_VALUE is a reference to a lookup table
  • f2(-35) picks up a value for F2 at a point in time 35 ms before the start of the current constituent.

Lookup table entries

F2_VALUE = 1400 :- Nu:[MID, SPREAD].
F2_VALUE = 850 :- Nu:[MID, ROUND].

The evaluation of these rules is shown below for the inputs /@J/ (spread vowel, voiced affricate) and /oC/ (rounded vowel, voiceless affricate):

/@J/ /oC/


 

Arthur Dirksen / adirksen@prl.philips.nl / January 1995