next up previous
Next: Generating SABLE markup for Up: FURTHER ISSUES Previous: FURTHER ISSUES

   
Adding support for a new TTS engine

A SABLE parser may be implemented as either an SGML-based language or as an XML-based language. XML is a subset of SGML offering a simpler definition of markup languages that are easier to implement.

As most synthesizers already have their own idiosyncratic markup language, the simplest method for implementing a SABLE interpreter is by translating the SABLE tags directly into the particular synthesizer's own markup escape sequences. There are a number of free XML parsers, and such translations can even be done directly in languages such as PERL. A complete translation of the file in a pre-processing stage will be sufficient for many cases, though when the input files are very big, a more integrated approach may be required.

When a particular engine does not support a tag it can (mostly) ignore the tag and simply synthesize the text contained within it. The tags are designed such that this is a reasonable fallback position as it is well known that different TTS engines may support quite different functionality. Where ignoring tags becomes problematic is in the SPEAKER and LANGUAGE tags.

We have allowed an engine-independent mechanism for specifying speakers but when a desired GENDER/AGE does not exist, the implementation should make a reasonable decision. Often a document may simply require one voice, plus an alternate voice the gender/age of which is not crucial. Although the NAME attribute may be used to specify a speaker by name, that is usually not going to work across engines: one possible solution -- one which has not yet been agreed upon -- is to allow a few standard names that an implementation should normally define, e.g. MALE1, MALE2, FEMALE1, FEMALE2, and VOICE1, VOICE2 when gender is not relevant. Such a mechanism is more likely to work across engines.

Dealing with the LANGUAGE tag when an engine does not support that language is a more difficult task. In the Festival implementation of SABLE, for example, the system simply says ``Something in X'' when a section of text is within marked as being of language X, where Festival does not support that language; there is of course some question about which language this comment should be said in.


next up previous
Next: Generating SABLE markup for Up: FURTHER ISSUES Previous: FURTHER ISSUES
Richard Sproat
1998-11-16