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:
Parameter(T0 .. T) = (V0 .. V).
Parameterindicates 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
- holistic properties of constituents are implemented as early as possible
- lower-level constituent may refine the exponents of higher-level constituents
- each syllable is glued to the previous one
- each onset is overlaid on the coda of the previous syllable
- 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
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) :-
Exponency rules for F2:
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).
ENDcalls a built-in macro that returns the end time of the current constituent relative to the start time
F2_VALUEis 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):
Arthur Dirksen / email@example.com / January 1995