12.12.2012 Views

Festival Speech Synthesis System: - Speech Resource Pages

Festival Speech Synthesis System: - Speech Resource Pages

Festival Speech Synthesis System: - Speech Resource Pages

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

VOLUME<br />

Allows the specification of volume. Note in festival this causes an utetrance break before and after this tag.<br />

Please speak more loudly, except<br />

when I ask you to speak in a quiet voice.<br />

ENGINE<br />

This allows specification of engine specific commands<br />

An example is the festival speech synthesizer or<br />

the Bell Labs speech synthesizer.<br />

These tags may change in name but they cover the aspects of speech mark up that we wish to express. Later additions<br />

and changes to these are expected.<br />

See the files `festival/examples/example.sable' and<br />

`festival/examples/example2.sable' for working examples.<br />

Note the definition of Sable is on going and there are likely to be later more complete implementations of sable for<br />

<strong>Festival</strong> as independent releases consult `url://www.cstr.ed.ac.uk/projects/sable.html' for the<br />

most recent updates.<br />

[ < ] [ > ] [ > ] [Top] [Contents] [Index] [ ? ]<br />

10.3 Adding Sable tags<br />

We do not yet claim that there is a fixed standard for Sable tags but we wish to move towards such a standard. In the<br />

mean time we have made it easy in <strong>Festival</strong> to add support for new tags without, in general, having to change any of<br />

the core functions.<br />

Two changes are necessary to add a new tags. First, change the definition in `lib/Sable.v0_2.dtd', so that<br />

Sable files may use it. The second stage is to make <strong>Festival</strong> sensitive to that new tag. The example in<br />

festival/lib/sable-mode.scm shows how a new text mode may be implemented for an XML/SGML-based<br />

markup language. The basic point is that an identified function will be called on finding a start tag or end tags in the<br />

document. It is the tag-function's job to synthesize the given utterance if the tag signals an utterance boundary. The<br />

return value from the tag-function is the new status of the current utterance, which may remain unchanged or if the<br />

current utterance has been synthesized nil should be returned signalling a new utterance.<br />

Note the hierarchical structure of the document is not available in this method of tag-functions. Any hierarchical state<br />

that must be preserved has to be done using explicit stacks in Scheme. This is an artifact due to the cross relationship<br />

to utterances and tags (utterances may end within start and end tags), and the desire to have all specification in<br />

Scheme rather than C++.<br />

The tag-functions are defined in an elements list. They are identified with names such as "(SABLE" and ")SABLE"<br />

denoting start and end tags respectively. Two arguments are passed to these tag functions, an assoc list of attributes<br />

and values as specified in the document and the current utterances. If the tag denotes an utterance break, call<br />

xxml_synth on UTT and return nil. If a tag (start or end) is found in the document and there is no corresponding<br />

tag-function it is ignored.<br />

New features may be added to words with a start and end tag by adding features to the global<br />

xxml_word_features. Any features in that variable will be added to each word.<br />

Note that this method may be used for both XML based lamnguages and SGML based markup languages (though<br />

and external normalizing SGML parser is required in the SGML case). The type (XML vs SGML) is identified by the<br />

analysis_type parameter in the tts text mode specification.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!