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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

`./src/modules/diphone'<br />

An optional module contain the previouslty used diphone synthsizer.<br />

`./src/modules/clunits'<br />

A partial implementation of a cluster unit selection algorithm as described in black97c.<br />

`./src/modules/Database rjc_synthesis'<br />

This consist of a new set of modules for doing waveform synthesis. They are inteneded to unit size<br />

independent (e.g. diphone, phone, non-uniform unit). Also selection, prosodic modification, joining and signal<br />

processing are separately defined. Unfortunately this code has not really been exercised enough to be<br />

considered stable to be used in the default synthesis method, but those working on new synthesis techniques<br />

may be interested in integration using these new modules. They may be updated before the next full release of<br />

<strong>Festival</strong>.<br />

`./src/modules/*'<br />

Other optional directories may be contained here containing various research modules not yet part of the<br />

standard distribution. See below for descriptions of how to add modules to the basic system.<br />

One intended use of <strong>Festival</strong> is offer a software system where new modules may be easily tested in a stable<br />

environment. We have tried to make the addition of new modules easy, without requiring complex modifications to<br />

the rest of the system.<br />

All of the basic modules should really be considered merely as example modules. Without much effort all of them<br />

could be improved.<br />

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

27.2 Writing a new module<br />

This section gives a simple example of writing a new module. showing the basic steps that must be done to create and<br />

add a new module that is available for the rest of the system to use. Note many things can be done solely in Scheme<br />

now and really only low-level very intensive things (like waveform synthesizers) need be coded in C++.<br />

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

27.2.1 Example 1: adding new modules<br />

The example here is a duration module which sets durations of phones for a given list of averages. To make this<br />

example more interesting, all durations in accented syllables are increased by 1.5. Note that this is just an example for<br />

the sake of one, this (and much better techniques) could easily done within the system as it is at present using a handcrafted<br />

CART tree.<br />

Our knew module, called Duration_Simple can most easily be added to the `./src/Duration/' directory<br />

in a file `simdur.cc'. You can worry about the copyright notice, but after that you'll probably need the following<br />

includes<br />

#include <br />

The module itself must be declared in a fixed form. That is receiving a single LISP form (an utterance) as an<br />

argument and returning that LISP form at the end. Thus our definition will start<br />

LISP FT_Duration_Simple(LISP utt)<br />

{<br />

Next we need to declare an utterance structure and extract it from the LISP form. We also make a few other variable<br />

declarations

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

Saved successfully!

Ooh no, something went wrong!