## 19 Duration ¶

A number of different duration prediction modules are available with varying levels of sophistication.

Segmental duration prediction is done by the module `Duration` which calls different actual methods depending on the parameter `Duration_Method`.

All of the following duration methods may be further affected by both a global duration stretch and a per word one.

If the parameter `Duration_Stretch` is set, all absolute durations predicted by any of the duration methods described here are multiplied by the parameter’s value. For example

    (Parameter.set 'Duration_Stretch 1.2)

will make everything speak more slowly.

In addition to the global stretch method, if the feature `dur_stretch` on the related `Token` is set it will also be used as a multiplicative factor on the duration produced by the selected method. That is `R:Syllable.parent.parent.R:Token.parent.dur_stretch`. There is a lisp function `duration_find_stretch` wchi will return the combined gloabel and local duration stretch factor for a given segment item.

Note these global and local methods of affecting the duration produced by models are crude and should be considered hacks. Uniform modification of durations is not what happens in real speech. These parameters are typically used when the underlying duration method is lacking in some way. However these can be useful.

Note it is quite easy to implement new duration methods in Scheme directly.