Import Debian changes 1.2.2-5.1
[debian/freetts] / docs / index.html
1 <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
2
3 <!--
4
5 /**
6  * Copyright (c) 2001, 2002, 2003, 2005  Sun Microsystems, Inc.
7  * 
8  * See the file "license.terms" for information on usage and
9  * redistribution of this file, and for a DISCLAIMER OF ALL 
10  * WARRANTIES.
11  */
12
13 -->
14
15 <html>
16 <head>
17   <title>FreeTTS 1.2 - A speech synthesizer written entirely in the
18   Java(TM) programming language</title>
19 </head>
20
21 <body bgcolor="white">
22   <center>
23     <table bgcolor="#bbbae2" border="0" width="100%">
24       <tbody>
25         <tr>
26           <td align="center" width="100%">
27             <h2><i>FreeTTS 1.2</i> - A speech synthesizer written
28                 entirely in the Java<sup><font size="-1">TM</font></sup> 
29                 programming language</h2>
30           </td>
31         </tr>
32       </tbody>
33     </table>
34   </center>
35
36   <table border="0" width="100%">
37     <tbody>
38       <tr>
39         <td bgcolor="#eeeeff" valign="top" width="20%">
40           <center>
41             <p><br><big><b>Listen to <i>FreeTTS!</i></b></big></p>
42           </center>
43           <p><font size="-1"><b>Talking clock (16k voice):</b><br>
44           <a href="audio/12-35.au">AU</a> format<br>
45           <a href="audio/12-35.wav">WAV</a> format </font></p>
46           <p><font size="-1"><b>Talking machine (8k):</b><br>
47           <a href="audio/talkforever.au">AU</a> format<br>
48           <a href="audio/talkforever.wav">WAV</a> format </font></p>
49           <p><font size="-1"><b>Talking machine (16k):</b><br>
50           <a href="audio/talkforever16.au">AU</a> format<br>
51           <a href="audio/talkforever16.wav">WAV</a> format </font></p>
52           <p><font size="-1"><b>Susie (16k):</b><br>
53           <a href="audio/shoeshineshop.au">AU</a> format<br>
54           <a href="audio/shoeshineshop.wav">WAV</a> format </font></p>
55           <p><font size="-1"><b>Cookie Cooks (16k):</b><br>
56           <a href="audio/cookiecooks.au">AU</a> format<br>
57           <a href="audio/cookiecooks.wav">WAV</a> format </font></p>
58           <p><font size="-1"><b>Tricky Tokenizing (16k):</b><br>
59           <i>"For 3/4 or 75% of his time, Dr. Walker practices for $90 a
60              visit on Dr. Dr., next to King Philip X of St. Lameer St. in 
61              Nashua NH."</i><br>
62           <a href="audio/complex.au">AU</a> format<br>
63           <a href="audio/complex.wav">WAV</a> format<br>
64           </font></p>
65           <p><font size="-1"><b>Thanks! (16k MBROLA):<br>
66           </b><a href="audio/thanks.au">AU</a> format<br>
67           <a href="audio/thanks.wav">WAV</a> format<br>
68           </font></p>
69       <hr>
70           <center><big><b><small>WebStartClock</small> </b></big></center>
71           <div align="left">
72           <div align="left"><small>A clock that uses FreeTTS to announce
73             the time.</small><br>
74           </div>
75           <small> <br>
76           </small>
77           <div align="center"><a href="../WebStartClock/clock.jnlp"><small>
78           <img src="images/TinyWebStartClock.jpg" alt="WebStart Clock" 
79             width="90" height="55"></small></a><br>
80           </div>
81           <br>
82           <div align="center"><a href="../WebStartClock/clock.jnlp">
83           <small>Launch WebStartClock</small></a><b>&nbsp;</b> </div>
84           </div>
85       <hr>
86           <center><b><font>FreeTTS Links</font></b></center>
87           <b><font size="-1"><br>
88           <a href="http://sourceforge.net/projects/freetts">Project Page</a><br>
89           <a href="https://sourceforge.net/forum/?group_id=42080">Forums</a><br>
90           <a href="http://sourceforge.net/project/showfiles.php?group_id=42080">
91           Download</a> <br>
92           <a href="http://sourceforge.net/cvs/?group_id=42080">CVS Repository</a> <br>
93           <br>
94           <br>
95       <hr>
96           <center><a href="http://www.sourceforge.net">
97           <img src="http://sourceforge.net/sflogo.php?group_id=40785&amp;type=1"
98           width="88" height="31" border="0" alt="SourceForge Logo"></a>
99           <br>Hosted by SourceForge.net</center>
100           </font></b></td>
101
102       <td width="5%"><br>
103       </td>
104
105       <td valign="top"><br><br>
106           <b><i>Welcome!</i></b> Thank you for your interest in <i>FreeTTS</i>.
107
108       <h3>General Information</h3>
109       <ul>
110         <li><a href="#what_is_freetts">Introduction</a></li>
111         <li><a href="#who_authors">Authors</a></li>
112         <li><a href="../RELEASE_NOTES">Release Notes</a></li>
113         <li><a href="#possible_uses">Possible uses of FreeTTS</a></li>
114         <li><a href="#contribute">How to contribute to FreeTTS</a></li>
115         <li><a href="#acknowledgments">Acknowledgments</a></li>
116       </ul>
117
118       <h3>Installation</h3>
119       <ul>
120         <li><a href="#download_and_install">Downloading and Installing</a></li>
121         <li><a href="#quick_start">Quick Start</a></li>
122         <li><a href="#how_app">Building Applications with FreeTTS</a></li>
123         <li><a href="#how_build">Building FreeTTS</a></li>
124         <li><a href="#how_test">Testing FreeTTS</a></li>
125       </ul>
126
127       <h3>Demos</h3>
128       <ul>
129         <li><a href="#run_demo">Running the Demos</a></li>
130         <li><a href="#test_program">FreeTTS Test Program</a></li>
131       </ul>
132
133       <h3>Tools</h3>
134       <ul>
135         <li><a href="#festvox">Importing Voice Data from FestVox</a></li>
136       </ul>
137
138       <h3>Documentation</h3>
139       <ul>
140         <li><a href="#freetts_api">API documentation</a></li>
141         <li><a href="#writing_software">Writing software using FreeTTS</a></li>
142         <li><a href="#freetts_guide">Programmer's Guide</a></li>
143       </ul>
144       <h3>Frequently Asked Questions</h3>
145       <ul>
146         <li><a href="#why_jdk1.4">Why must I use Java<sup><font size="-1">
147             TM</font></sup> 2 SDK, Standard Edition, v 1.4?</a></li>
148         <li><a href="#performance">How does FreeTTS perform?</a></li>
149         <li><a href="#voices_available">What voices are available?</a></li>
150         <li><a href="#why_sound_bad">Why does the diphone synthesizer
151             sound so bad?</a></li>
152         <li><a href="#How_do_I_create_a_new_voice_How_do_I">How do I
153             create a new voice?</a>
154         </li>
155         <li><a href="#import_voice_data">How do I import new voice data
156             from Festival and FestVox?</a></li>
157         <li><a href="#How_do_I_add_support_for_a_voice_with">How do I
158             add support for a language other than English?</a></li>
159         <li><a href="#output_to_file">How do I output synthesized
160             speech to an audio file?</a></li>
161         <li><a href="#is_full_jsapi">Does FreeTTS provide full support
162             for the JSAPI 1.0 specification?</a></li>
163         <li><a href="#no_jsapi">Why do I get a NoClassDefFoundError
164             when I try to run a demo?</a></li>
165         <li><a href="#old_java">Why do I get an
166              UnsupportedClassVersionError  when I try to run a demo?</a></li>
167         <li><a href="#What_does_the_message_Cant_find">What does the
168             message "Can't find diphone xx-yy" mean?</a></li>
169         <li><a href="#I_get_no_sound_when_I_run_one_of_the">I get no
170             sound when I run one of the FreeTTS demos. Why?</a></li>
171         <li><a href="#Can_I_use_FreeTTS_in_an_applet">Can I use FreeTTS
172             in an applet?</a></li>
173         <li><a href="#Can_I_use_FreeTTS_with_JavaTM_Web_Start">Can I
174             use FreeTTS with Java<sup>TM</sup> Web Start</a></li>
175         <li><a href="#How_do_I_bypass_speech_properties">
176             How do I bypass the need for <code>speech.properties</code>?</li>
177         <li><a href="#What_does_the_message_Line_unavailable">What does
178             the message "Line unavailable" mean?</a></li>
179         <li><a href="#where_is_recognizer">Where is the speech
180             recognizer?</a></li>
181       </ul>
182       <br>
183       </td>
184 <!--PHP-1--> </tr>
185   </tbody>
186 </table>
187
188 <hr>
189
190 <h3>General Information about FreeTTS</h3>
191 <ul>
192   <li><a name="what_is_freetts"><b>Introduction</b></a>
193     <p>FreeTTS is a speech synthesis system written entirely in the
194        Java<sup><font size="-1">TM</font></sup> programming language. It
195        is based upon <a href="http://www.cmuflite.org">Flite</a>: a
196        small run-time speech synthesis engine developed at Carnegie
197        Mellon University. Flite is derived from the
198        <a href="http://www.cstr.ed.ac.uk/projects/festival/">Festival</a> 
199        Speech Synthesis System from the University of Edinburgh and the
200        <a href="http://festvox.org/">FestVox</a> project from Carnegie
201        Mellon University.</p>
202
203     <p>This release of FreeTTS includes:</p>
204     <ul>
205       <li>Core speech synthesis engine</li>
206       <li>Support for a number of voices:</li>
207       <ul>
208         <li>an 8khz diphone, male, US English voice</li>
209         <li>a 16khz diphone, male US English voice</li>
210         <li>a 16khz limited domain, male US English voice</li>
211       </ul>
212       <li>Support for <a href="../tools/FestVoxToFreeTTS/README.html">
213           importing voices from FestVox (US English only)</a></li>
214       <li>Specific support for <a href="../tools/ArcticToFreeTTS/README.html">
215           importing CMU ARCTIC voices from FestVox (US English only)</a></li>
216       <li><a href="../mbrola/README.html">Support for MBROLA voices</a> 
217           (downloaded separately):</li>
218       <ul>
219         <li>a 16khz female, US English voice</li>
220         <li>two 16khz male US English voices<br>
221         </li>
222       </ul>
223       <li>Partial <a href="jsapi_setup.html">support for JSAPI 1.0</a></li>
224       <li>Extensive <a href="../javadoc/index.html">API documentation</a></li> 
225       <li>Several <a href="#run_demo">demo applications</a></li>
226     </ul>
227   </li><br>
228
229   <li><a name="who_authors"><b>Authors</b></a>
230     <p>FreeTTS was built by the 
231        <a href="http://research.sun.com/research/speech/index.html">
232        Speech Integration Group</a> of <a href="http://research.sun.com">
233        Sun Microsystems Laboratories</a>:</p>
234     <ul>
235       <li>Willie Walker, Manager and Principal Investigator</li>
236       <li>Paul Lamere, Staff Engineer</li>
237       <li>Philip Kwok, Member of Technical Staff</li>
238     </ul>
239
240     <p>You can contact the Sun Microsystems Speech Integration Group
241        through the <a href="https://sourceforge.net/forum/?group_id=42080">
242        FreeTTS Forums</a>. </p>
243
244     <p>FreeTTS is based on <a href="http://www.cmuflite.org">CMU's Flite</a>,
245        written by:</p>
246     <ul>
247       <li>Alan Black </li>
248       <li>Kevin Lenzo</li>
249     </ul>
250
251     <p>Kevin and Alan generated the data used by FreeTTS.  In addition,
252        Kevin is the voice behind the diphone voices (kevin 8k, kevin 16k),
253        and Alan is the voice behind the speaking clock.
254
255     <p>Support for MBROLA voice output was contributed by Marc
256        Schr&ouml;der, text-to-speech Researcher in the <a
257        href="http://www.dfki.de/lt">Language Technology Lab at DFKI</a>,
258        Saarbr&uuml;cken, Germany.
259
260     <p>Support for <a href="../tools/FestVoxToFreeTTS/README.html">
261        importing FestVox voices into FreeTTS</a>, and support for
262        dynamically discovering and loading voices was developed by David
263        Vos, a Sun Microsystems Laboratories student intern.
264   </li>
265
266   <li><a name="possible_uses"><b>Possible uses of FreeTTS</b></a>
267     <p>Here are a few possible uses of FreeTTS: </p>
268     <ul>
269       <li><i><b>JSAPI 1.0 Synthesizer.</b></i> FreeTTS provides
270           partial support for the
271           <a href="jsapi_setup.html">
272           Java Speech API</a> (JSAPI) 1.0 specification. </li>
273       <li><i><b>Remote TTS Server.</b></i> FreeTTS can serve as a back-end
274           text-to-speech engine that works with a speech/telephony system, 
275           or does the "heavy lifting" for a wireless PDA.  Our 
276           <a href="../demo/freetts/ClientServer/README.html">
277           client/server demo</a> shows how this can be done. </li>
278       <li><i><b>Desktop TTS engine.</b></i> You can use FreeTTS as your
279           workstation/desktop TTS engine. For example, our 
280           <a href="../demo/JSAPI/Emacspeak/README.html">
281           Emacspeak demo</a> works right out of the box with 
282           <a href="http://www.cs.cornell.edu/Info/People/raman/emacspeak/emacspeak.html">
283           Emacspeak</a>.<br></li>
284       <li><i><b>Downloadable Web Application.</b></i> You can use FreeTTS 
285           with Java Web Start.  Our 
286           <a href="../demo/JSAPI/WebStartClock/README.html">
287           WebStartClock demo</a> provides an example of how to do this.<br>
288       </li>
289     </ul>
290   </li><br>
291
292   <li><a name="contribute"><b>How to contribute to FreeTTS</b></a>
293     <p>We welcome contributions to FreeTTS.  If you have code or fixes
294        you would like to submit, please contact the FreeTTS team at 
295        <a href="mailto:freetts-contacts@sourceforge.net">
296        freetts-contacts@sourceforge.net</a>.  The terms for contributing 
297        code are generous and are as follows:</p>
298     <ul>
299       <li>Your code must be made available under the same BSD-style 
300           <a href="../license.terms">license</a> agreement as FreeTTS.</li>
301       <li>You may place your own copyright in your source files.</li>
302       <li>You must sign and return the <a href="ContributorsAgreement.pdf">
303           Contributor's Agreement</a> to the address specified in the 
304           Contributor's Agreement.</li>
305       <li>If you wish, we will add you to the "Acknowledgments" section on
306           the FreeTTS front page.</li>
307     </ul>
308
309     <p>These terms are for your and our protection and help ensure FreeTTS 
310        continues to be a viable and successful open source project.</p>
311   </li>
312
313   <li><a name="acknowledgments"><b>Acknowledgments</b></a>
314     <p>Refer to <a href="../acknowledgments.txt">acknowledgments</a> to
315        see the list of people and organizations we would like to thank for
316        making this project possible. Most of all, we thank our management for
317        letting us do this, and Alan Black and Kevin Lenzo for doing Flite. </p>
318   </li>
319 </ul>
320
321 <hr>
322
323 <h3>Installation</h3>
324
325 <p>FreeTTS has been tested on the Solaris<sup>
326    <font size="-1">TM</font></sup> Operating Environment, Mac OS X,
327    Linux and Win32 operating systems.  
328
329 <p>Running, building, and testing FreeTTS requires the
330    Java<sup>TM</sup> 2 SDK, Standard Edition, 1.4.  You can download
331    the developer kit from <a href="http://java.sun.com/j2se/1.4/">
332    http://java.sun.com/j2se/1.4/</a>.  Make sure you set your
333    JAVA_HOME environment variable to point your installation (e.g.,
334    JAVA_HOME=/usr/java/j2sdk1.4.0).
335
336 <h4><a name="download_and_install">Downloading and Installing</a></h4>
337
338 <p>FreeTTS has three packages available for 
339    <a href="http://sourceforge.net/project/showfiles.php?group_id=42080"> 
340    download</a>:
341 <ul>
342   <li><b>bin</b>: provides the jar files, documentation, and demos</li>
343   <li><b>src</b>: provides the sources, documentation, and demos</li>
344   <li><b>tst</b>: provides the JUnit and regression tests; requires the src
345       package</li>
346 </ul>
347
348 <p>If you plan on just creating applications with FreeTTS, the <b>bin</b>
349 package will be sufficient.  If you plan on making modifications to FreeTTS
350 itself, however, you should use the <b>src</b> package.  The <b>tst</b>
351 package will be useful if you wish to make sure any changes you made to
352 FreeTTS did not introduce any bugs or regressions.
353
354 <p>Download and unpack the package(s) appropriate for what you want to do.
355 Depending upon what you download, you will end up with all or part of the 
356 following directory structure:</p>
357
358 <pre>
359     bin                 Binaries for the demos
360     build.xml           Ant file for building the sources
361     com                 FreeTTS sources
362     de                  Sources for MBROLA support
363     demo                Sources for the demos
364     demo.xml            Ant file for building the demos
365     docs                System documentation
366     javadoc             Javadoc for FreeTTS
367     lib                 Jars for FreeTTS
368     mbrola              Support for MBROLA
369     tests               Sources and scripts for JUnit and regression tests
370     tools               Tools for importing CMU ARCTIC and FestVox voice data
371 </pre>
372
373 <p>FreeTTS makes liberal use of the "Class-Path" attribute of a jar
374 Manifest.  As such, you need to place very little in your classpath
375 when you run applications.  The only things you need to do are the
376 following:
377 <ul>
378   <li>Place the <b>lib</b> directory anywhere you want.
379   <li>Make sure <b>lib/freetts.jar</b> is in your classpath.
380 </ul>
381
382 <p>Note that the <a href="#run_demo">demonstration applications</a> 
383 also use a jar Manifest that uses the "Class-Path" attribute.  The
384 build places the jar files for FreeTTS in the <b>lib</b> directory, and
385 the jar files for the demos in the <b>bin</b> directory.  The jar manifests
386 for the demos depend on the <b>lib</b> and <b>bin</b> directories being
387 in the same top level directory.  If you change this, the demos may not
388 work properly.
389
390 <h4><a name="quick_start">Quick Start</a></h4>
391   <p>If you are not interested in building FreeTTS, then you only need to 
392      download the FreeTTS binary distribution from the 
393      <a href="http://sourceforge.net/project/showfiles.php?group_id=42080">
394      FreeTTS Download Page</a>.  Once you've downloaded and unpacked
395      the FreeTTS binary distribution, perform the following steps:
396   <ol>
397     <li><a href="jsapi_setup.html">Set up support for the Java Speech API 
398         (JSAPI).</a>
399     </li>
400     <li><a href="#run_demo">Run any of the demos</a>.
401     </li>
402   </ol>
403
404 <h4><a name="how_app"><b>Building Applications with FreeTTS</b></a></h4>
405
406 <p>We have provided a number of <a href="#run_demo">demonstration 
407 applications</a> that use FreeTTS.  We highly suggest that you use
408 these as examples for how to create your own applications.  As noted
409 above, FreeTTS makes liberal use of the "Class-Path" attribute of a jar
410 Manifest.  As such, you need to place very little in your classpath
411 when you run applications.  The only things you need to do are the
412 following:
413 <ul>
414   <li>Place the <b>lib</b> directory anywhere you want.
415   <li>Make sure <b>lib/freetts.jar</b> is in your classpath.
416 </ul>
417
418 <h4><a name="how_build"><b>Building FreeTTS</b></a></h4>
419 <p>The prerequisites for building FreeTTS are as follows:
420 <ul>
421   <li><b>FreeTTS Source Distribution</b>.  Download from 
422       <a href="http://sourceforge.net/project/showfiles.php?group_id=42080&amp;release_id=65759">the FreeTTS download page</a>.
423   </li><br>
424
425   <li><b> JSAPI 1.0 specification implementation</b>.  The JSAPI 1.0
426       specification implemention comes with the FreeTTS Source 
427       Distribution.  All you need to do is <a href="jsapi_setup.html">
428       set up JSAPI support</a>.
429   </li><br>
430
431   <li><b>Java<sup><font size="-1">TM</font></sup> 2 SDK, Standard
432       Edition, v1.4</b> available at 
433       <a href="http://java.sun.com/j2se/1.4/">
434       http://java.sun.com/j2se/1.4/</a> (all platforms).  After you
435       have downloaded and installed the SDK, remember to set your
436       <code><b>JAVA_HOME</b></code> environment variable to point to
437       where you installed it.
438     </li><br>
439
440     <li><b>Apache Ant 1.5.3</b> or
441         better.  After you install ant, sure the "ant" command is in
442         your path.  Visit the <a href="http://ant.apache.org/">Apache
443         Ant site</a> to get ant. <b>NOTE:</b> As you can see, we are
444         no longer using GNUMake.
445     </li><br>
446
447     <li><b>JUnit Version 3.7</b>.  available at 
448         <a href="http://www.junit.org">http://www.junit.org</a> 
449         (all platforms).  <b>IMPORTANT</b>: copy the <code>junit.jar</code>
450         to the <code>lib</code> directory of your Apache Ant installation.
451     </li><br>
452   </ul>
453
454 <p>To build FreeTTS, merely type the following in a command prompt 
455    situated at the top level FreeTTS directory:
456    <ul>
457      <p><code>ant</code>
458    </ul>
459
460 <p>This executes the <a href="http://ant.apache.org/">Apache Ant</a>
461    command to build the FreeTTS classes, voices, demos, and jar files.
462    The output will be placed under the <code>bld</code> directory.
463
464 <p>We have also provided a number of ant targets for convenience:
465 <ul>
466    <p><code>ant clean</code>: deletes all the output from the build 
467       to give you a fresh start
468    <br><code>ant javadoc</code>: builds the javadoc documentation and
469       places the results in the <code>javadoc</code> directory
470    <br><code>ant junit</code>: for testing only; runs the JUnit tests
471       (see <a href="#how_test">Testing FreeTTS</a>)
472 </ul>
473
474 <h4><a name="how_test"><b>Testing FreeTTS</b></a></h4>
475
476 <p>FreeTTS includes a number of unit and regression tests. The unit
477    tests verify that critical routines are working properly. The
478    regression tests verify that the output of FreeTTS matches what is
479    expected.
480
481 <p>Although we test FreeTTS regularly as part of our development process, 
482    testing FreeTTS is optional for you.  The prerequisites for testing 
483    FreeTTS are as follows:
484
485 <ul>
486   <li><b>Follow Instructions for <a href="#how_build">Building FreeTTS</a></b>.
487   </li><br>
488
489   <li><b>FreeTTS Test Distribution</b>.  In addition to the sources, you
490       must also download the test distribution from 
491       <a href="http://sourceforge.net/project/showfiles.php?group_id=42080&amp;release_id=65759">the FreeTTS download page</a>.
492   </li><br>
493
494   <li><b>UNIX Scripting tools</b>. The regression tests use a number of 
495       UNIX tools including: <code>sed, awk, diff,</code>and <code>wc</code>.  
496       For Windows users, these tools are available with the Cygwin
497       (<a href="http://www.cygwin.com">http://www.cygwin.com</a>)
498       package.  As part of the Cygwin install, make sure you select
499       the "make" package from the "Devel" category, the "findutils"
500       package from the "Base" category, and the "zip" package from
501       the "Archive" category.  In addition, make sure you modify
502       your PATH environment variable to include the cygwin/bin
503       directory before any Windows directories.
504   </li>
505 </ul>
506
507 <p>To run the units tests for FreeTTS, merely type the following in a command 
508    prompt situated at the top level FreeTTS directory:
509    <ul>
510      <p><code>ant junit</code>
511    </ul>
512 <p>The test output should be self explanatory.
513
514 <p>To run the regression tests, merely type the following in a command 
515    prompt situated at the FreeTTS <code>tests</code> directory:
516 <ul>
517    <code>./regression.sh</code>
518 </ul>
519 <p>The test output should be self explanatory.
520
521 <hr>
522
523 <h3><a name="run_demo">Demos</a></h3>
524   <p>FreeTTS includes a number of demos. Each demo directory has Java
525      source file(s) containing the demo source and a 'README.html'
526      file with brief instructions as to how to run the demo.</p>
527
528   <ul>
529     <li><a href="../demo/JSAPI/HelloWorld/README.html"><b>
530         JSAPI/HelloWorld</b></a>: uses the JSAPI 1.0 Synthesis interface
531         to speak "Hello, World".
532     </li><br>
533
534     <li><a href="../demo/JSAPI/MixedVoices/README.html"><b>
535         JSAPI/MixedVoices</b></a>: demonstrates using multiple voices
536         and speech synthesizers in a coordinated fashion using JSAPI
537         1.0.
538     </li><br>
539       
540     <li><a href="../demo/JSAPI/Player/README.html"><b>JSAPI/Player</b></a>:
541         Swing-based GUI that allows the user to monitor and manipulate a
542         JSAPI 1.0 Speech Synthesizer.
543     </li><br>
544
545     <li><a href="../demo/JSAPI/JTime/README.html"><b>JSAPI/JTime</b></a>:
546         JSAPI program that uses a limited-domain, high quality voice to
547         tell the time.
548     </li><br>
549
550     <li><a href="../demo/JSAPI/Emacspeak/README.html"><b>JSAPI/Emacspeak</b></a>:
551         uses JSAPI 1.0 to provide a text-to-speech server for Emacspeak.
552     </li><br>
553
554     <li><b><a href="../demo/JSAPI/WebStartClock/README.html">
555          JSAPI/WebStartClock</a></b>: JSAPI talking clock that can be
556          downloaded from the web using Java Web Start.
557     </li><br>
558
559     <li><a href="../demo/freetts/HelloWorld/README.html"><b>
560         freetts/HelloWorld</b></a>: low-level (non-JSAPI) program that
561         speaks a greeting to the world.
562     </li><br>
563
564     <li><a href="../demo/freetts/ClientServer/README.html"><b>
565         freetts/ClientServer</b></a>: low-level (non-JSAPI) socket-based
566         TTS server with sample clients written in the C programming
567         language and the Java programming language.
568     </li>
569   </ul>
570
571   <p><b>NOTE</b>: The binaries for the demos exist as jar files in the
572      bin directory of the binary distribution.  If you only wish to
573      run the demos, follow only the "Running" instructions for each
574      demo.  If you want to compile the demos, you must get the sources
575      from the FreeTTS source distribution available on the
576      <a href="http://sourceforge.net/project/showfiles.php?group_id=42080">
577      FreeTTS Download Page</a>.  
578
579 <p>Note also that the <a href="#run_demo">demonstration applications</a> 
580 also use a jar Manifest that uses the "Class-Path" attribute.  The
581 build places the jar files for FreeTTS in the <b>lib</b> directory, and
582 the jar files for the demos in the <b>bin</b> directory.  The jar manifests
583 for the demos depend on the <b>lib</b> and <b>bin</b> directories being
584 in the same top level directory.  If you change this, the demos may not
585 work properly.
586
587   <hr>
588
589 <h3><a name="test_program"></a>FreeTTS Test Program</h4>
590   <p>The FreeTTS distribution includes a program that will allow you to
591      test many of the features of FreeTTS.  This program is started by
592      running the following command:
593
594   <p><code>java -jar lib/freetts.jar</code>.
595
596 <pre>
597 <b>NAME</b>
598     freetts - exercise the FreeTTS synthesis sytem<br><br>
599 <b>DESCRIPTION</b>
600     The lib/freetts.jar contains a main entry point that allows a user to
601     interactively control the FreeTTS synthesizer.  When invoked with no 
602     arguments, freetts will read text from the command line and convert 
603     the text to speech.  freetts can also be used to convert text from a 
604     file to speech.  It includes options that allow you to redirect the 
605     audio to file, as well as a number of metrics and debugging options.
606
607 <b>OPTIONS</b>
608     There are a number of options that can be used to affect the operation 
609     of freetts as described here:
610
611     -detailedMetrics: turn on detailed metrics
612     -dumpAudio file : dump audio to file 
613     -dumpAudioTypes : dump the possible output types
614     -dumpMultiAudio file : dump audio to file 
615     -dumpRelations  : dump the relations 
616     -dumpUtterance  : dump the final utterance
617     -dumpASCII file : dump the final wave to file in ASCII form (for testing)
618     -file file      : speak text from given file
619     -lines file     : render lines from a file
620     -help           : shows usage information
621     -metrics        : turn on metrics
622     -run  name      : sets the name of the run
623     -silent         : don't say anything
624     -streaming      : use streaming audio player
625     -text say me    : speak given text (should be last argument)
626     -url path       : speak text from given URL
627     -verbose        : verbose output
628     -version        : shows version number
629     -voice VOICE    : kevin, kevin16, mbrola_us1, mbrola_us2, or mbrola_us3
630     -voiceInfo      : print detailed voice info
631
632 <b>EXAMPLES</b>
633 <P><i>Interactive mode:</i>
634
635     % java -jar lib/freetts.jar
636     Enter text:  Hello World.
637     <i>&lt;text is spoken></i>
638     Enter text:  ^D
639     %
640
641 <p><i>Speaking text from a command line:</i>
642
643     % java -jar lib/freetts.jar -text hello world
644     <i>&lt;text is spoken></i>
645
646 <p><i>Speaking text from a file:</i>
647
648     % java -jar lib/freetts.jar -file my_email.txt
649     <i>&lt;text is spoken></i>
650
651 <p><i>Selecting an alternate voice:</i>
652
653     % java -jar lib/freetts.jar -voice kevin16 -text Hello World
654     <i>&lt;text is spoken></i>
655
656 <p><i>Redirecting audio to a file:</i>
657
658     % java -jar lib/freetts.jar -dumpAudio hello.wav -text Hello World
659
660 </pre>
661
662 <hr>
663
664 <h3>Tools</h3>
665
666 <h4><a name="festvox">Importing Voice Data from FestVox</a></h4>
667 <p>FreeTTS now has the ability to import voice data from FestVox (US
668 English only).  With this, you can record your own voice using the
669 FestVox tools, and then turn the resulting data into a FreeTTS voice.
670
671 <p>Visit our <a href="../tools/FestVoxToFreeTTS/README.html">
672 FestVoxToFreeTTS</a> page to learn how to create your own
673 voices for FreeTTS.  It's not trivial, and it requires using
674 Festival and FestVox.
675
676 <h4><a name="festvox">Importing CMU ARCTIC Voice Data</a></h4>
677 <p>FreeTTS now has the ability to import CMU ARCTIC voice data from
678 FestVox (US English only).  The CMU ARCTIC voices are quite large
679 and require a little extra work, so we created tools just for these
680 voices.
681
682 <p>Visit our <a href="../tools/ArcticToFreeTTS/README.html">
683 ArcticToFreeTTS</a> page to learn how to import the CMU ARCTIC voices
684 into FreeTTS.
685
686
687 <hr>
688
689 <h3>Documentation</h3>
690 <ul class="noindent">
691   <li><a name="freetts_api"><b>API documentation</b></a>:
692       The <a href="../javadoc/index.html">FreeTTS API</a> contains the
693       engine documentation.
694   </li><br>
695
696   <li><a name="writing_software"><b>Writing software with FreeTTS</b></a>:
697       We recommend that you use the 
698       <a href="http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-doc/index.html">
699       Java Speech API (JSAPI) 1.0</a> to interface with FreeTTS. The
700       JSAPI interface provides the best method of controlling and
701       using FreeTTS.  The <a href="#run_demo">JSAPI demos</a> provide
702       a set of examples that show how to select a FreeTTS synthesizer
703       and make it speak.
704   </li><br>
705
706   <li><a name="freetts_guide"><b>Programmer's Guide</b></a>:
707        The <a href="ProgrammerGuide.html">Programmer's Guide</a> provides
708        a view of the FreeTTS internals.  This is meant for people who wish
709        to enhance FreeTTS itself.
710   </li>
711 </ul>
712
713 <hr>
714
715 <h3>Frequently Asked Questions</h3>
716 <ul>
717   <li><a name="why_jdk1.4"><b>Why must I use Java 2 SDK, Standard
718       Edition, v1.4?</b></a>
719     <p>Some of the many compelling reasons to use Java 2 SDK, Standard
720        Edition, v1.4. are: </p>
721     <ul>
722       <li><b>New IO package</b> - Java 2 SDK, Standard Edition, v1.4
723           provides a new IO (<code><b>java.nio</b></code>) package
724           that provides memory mapped file I/O. This package
725           drastically reduces the load times of the FreeTTS
726           databases. </li>
727       <li><b>Regular expressions</b> - Java 2 SDK, Standard Edition,
728           v1.4 provides a new package for regular expression matching
729           (<code><b>java.util.regex</b></code>).  They are used in the
730           FreeTTS text normalization step.</li>
731       <li><b>Assert Facility</b> - Java 2 SDK, Standard Edition, v1.4
732           added the new <code>assert</code> keyword to ensure that
733           certain conditions are satisfied before continuing
734           execution. FreeTTS uses this keyword in all stages of speech
735           synthesis.</li>
736       <li><b>Compiler Optimizations</b> - Java 2 SDK, Standard
737           Edition, v1.4 has numerous compiler optimizations that
738           produce faster and more compact code. For example, with the
739           <code><b>-server</b></code> switch, byte codes are optimized
740           to eliminate bounds checking on array accesses whenever
741           possible.</li>
742     </ul>
743   </li><br>
744
745   <li><a name="performance"><b>How does FreeTTS perform?</b></a>
746     <p>We compared the performance of FreeTTS with that of Flite
747        (original C version) on a machine with this configuration:</p>
748     <ul>
749       <li>single 296MHz CPU SPARC v9 processor</li>
750       <li>Solaris<sup><font size="-1">TM</font></sup> 8 in 64-bit mode</li>
751       <li>Java 2 SDK, Standard Edition, v 1.4&nbsp;</li>
752     </ul>
753
754     <p>We rendered the first two chapters of <i>Alice's Adventures in
755        Wonderland</i> by Lewis Carroll (about 20 minutes of text), and
756        the entire text of Jules Verne's <i>Journey to the Center of
757        the Earth</i> (about 8 hours of text) using both Flite and
758        FreeTTS. The results are summarized below: </p>
759   
760     <p><table border="1" cellspacing="0" cellpadding="1" width="60%">
761       <tbody>
762         <tr>
763           <td bgcolor="#ccccee"> <b>Single CPU 296MHz SPARC v9</b></td>
764           <td bgcolor="#ccccee"><b>Flite</b></td>
765           <td bgcolor="#ccccee"><b>FreeTTS</b></td>
766         </tr>
767         <tr>
768           <td bgcolor="#ddddee">Loading Time for 'Alice' text</td>
769           <td> 0.0s</td>
770           <td> 4.1s</td>
771         </tr>
772         <tr>
773           <td bgcolor="#ddddee">Processing Time for 'Alice' text</td>
774           <td>43.7s</td>
775           <td> 24.1s</td>
776         </tr>
777         <tr>
778           <td bgcolor="#eeeeff">Loading Time for 'Journey' text</td>
779           <td> 0.0s</td>
780           <td> 7.0s</td>
781         </tr>
782         <tr>
783           <td bgcolor="#eeeeff">Processing Time for 'Journey' text</td>
784           <td> 1019.2s</td>
785           <td> 341.0s</td>
786         </tr>
787         <tr>
788           <td bgcolor="#ddddee">Time to first Sample (10 word sentence)</td>
789           <td> 195ms</td>
790           <td> 41ms</td>
791         </tr>
792       </tbody>
793     </table></p>
794
795     <p>On a 2-CPU system with the following configuration: </p>
796     <ul>
797       <li> Dual 360MHz CPU SPARC v9 Processor system</li>
798       <li>Solaris<sup><font size="-1">TM</font></sup> 8 in 64-bit mode</li>
799       <li>Java 2 SDK, Standard Edition, v 1.4&nbsp;</li>
800     </ul>
801
802     <p>The results are summarized below: </p>
803     <p><table border="1" cellspacing="0" cellpadding="1" width="60%">
804       <tbody>
805         <tr>
806           <td bgcolor="#ccccee"> <b>Dual CPU 360MHz SPARC v9</b></td>
807           <td bgcolor="#ccccee"><b>Flite</b></td>
808           <td bgcolor="#ccccee"><b>FreeTTS</b></td>
809         </tr>
810         <tr>
811           <td bgcolor="#ddddee">Loading Time for 'Alice' text</td>
812           <td>0.0s</td>
813           <td> 2.9s</td>
814         </tr>
815         <tr>
816           <td bgcolor="#ddddee">Processing Time for 'Alice' text</td>
817           <td>35.7s</td>
818           <td> 14.2s</td>
819         </tr>
820         <tr>
821           <td bgcolor="#eeeeff">Loading Time for 'Journey' text</td>
822           <td> 0.0s</td>
823           <td> 3.8s</td>
824         </tr>
825         <tr>
826           <td bgcolor="#eeeeff">Processing Time for 'Journey' text</td>
827           <td> 842.7s</td>
828           <td> 189.5s</td>
829         </tr>
830         <tr>
831           <td bgcolor="#ddddee">Time to first Sample (10 word sentence)</td>
832           <td> 165ms</td>
833           <td> 33ms</td>
834         </tr>
835       </tbody>
836     </table></p>
837   </li><br>
838
839   <li><a name="voices_available"><b>What voices are available?</b></a>
840       <p>Currently, the distribution comes with these 3 voices:</p>
841     <ul>
842       <li>a low quality, unlimited domain, 8kHz diphone voice, called
843           kevin</li>
844       <li>a medium quality, unlimited domain, 16kHz diphone voice, called
845           kevin16</li>
846       <li>a high quality, limited domain, 16kHz cluster unit voice,
847           called alan</li>
848     </ul>
849
850     <p>Each of the <a href="#run_demo">demos</a> describes how to select
851        which voice to use.
852
853     <p>FreeTTS also interfaces with the MBROLA synthesizer and can
854        use MBROLA voices.  There are three US English MBROLA voices
855        available:
856     <ul>
857       <li>16kHz female (mbrola1)</li>
858       <li>16kHz male (mbrola2)</li>
859       <li>16kHz male (mbrola3)</li>
860     </ul>
861
862     <p>See <b><a href="../mbrola/README.html">Installing MBROLA
863        Voices</a> </b>for more details on installing support for
864        MBROLA voices.  
865
866     <p><b>NOTE</b>:  FreeTTS does not support MBROLA on
867        the Windows platform.
868   </li><br>
869
870   <li><a name="why_sound_bad"><b>Why does the diphone synthesizer sound
871       so bad?</b></a>
872     <p>First of all, we're happy to say you can now 
873        <a href="../tools/FestVoxToFreeTTS/README.html">create your own
874        voices for FreeTTS</a>, and you can also 
875        <a href="../tools/ArcticToFreeTTS/README.html">import CMU
876        ARCTIC voices</a>.  It's not trivial, and it requires using
877        Festival and FestVox.
878
879     <p>However, the ability to create your own voices doesn't explain
880        why the current voices sound so bad.  FreeTTS uses the same
881        algorithms and voice data from Flite. Here is what the Flite
882        README says about voice quality:</p>
883
884     <blockquote>
885       <i>"So you've eagerly downloaded flite, compiled it and run it,
886           now you are disappointed that is doesn't sound wonderful,
887           sure its fast and small but what you really hoped for was
888           the dulcit tones of a deep baritone voice that would make
889           you desperately hang on every phrase it sang.  But instead
890           you get an 8Khz diphone voice that sounds like it came from
891           the last millenium.</i>
892       <p><i>Well, first, you are right, it is an 8KHz diphone voice
893           from the last millenium, and that was actually deliberate.
894           As we developed flite we wanted a voice that was stable and
895           that we could directly compare with that very same voice in
896           Festival.  Flite is an *engine*.  We want to be able take
897           voices built with the FestVox process and compile them for
898           flite, the result should be exactly the same quality (though
899           of course trading the size for quality in flite is also an
900           option).  The included voice is just an sample voice that
901           was used in the testing process.  We have better voices in
902           Festival and are working on the conversion process to make
903           it both more automatic and more robust and tunable, but we
904           haven't done that yet, so in this first beta release. This
905           old poor sounding voice is all we have, sorry, we'll provide
906           you with free, high-quality, scalable, configurable, natural
907           sounding voices for flite, in all languages and dialects,
908           with the tools to built new voices efficiently and robustly
909           as soon as we can.  Though in the mean time, a few higher
910           quality voices will be released with the next
911           version.</i>''
912       </p>
913     </blockquote>
914   </li>
915
916   <li><b><a name="How_do_I_create_a_new_voice_How_do_I"></a>
917       How do I create a new voice?</b>
918      <p>As of FreeTTS 1.2, we provide a 
919         <a href="../tools/FestVoxToFreeTTS/README.html">set of tools</a>
920         that allow you to import FestVox voice data directly.  As such, 
921         you need to use Festival and FestVox to record your data.  See
922         <a href="../tools/FestVoxToFreeTTS/README.html">our documentation</a>
923         for more detail on how to do this.
924   </li>
925
926   <li><a name="import_voice_data"><b>How do I import new voice data
927       from Festival and FestVox?</b></a>
928      <p>As of FreeTTS 1.2, we provide a 
929         <a href="../tools/FestVoxToFreeTTS/README.html">set of tools</a>
930         that allow you to import FestVox voice data directly, and we
931         also have tools that allows you to <a
932         href="../tools/ArcticToFreeTTS/README.html">import CMU ARCTIC voices</a>.
933   </li>
934
935   <li><b><a name="How_do_I_add_support_for_a_voice_with"></a>
936       How do I add support for a language other than English?</b>
937     <p>This is not a trivial task as it requires a lexicon for the language
938        as well as various statistical data about the language.  The document 
939        <a href="http://festvox.org/festvox/festvox_toc.html">
940        http://festvox.org/festvox/festvox_toc.html</a> describes this
941        is more detail.
942   </li>
943
944   <li><a name="output_to_file"><b>How do I output synthesized speech to
945       an audio file?</b></a>
946     <p>With <code>the <a href="#test_program">FreeTTS</a></code>
947        <a href="#test_program">test program</a>, you can dump audio output 
948        to a file using the <code>-dumpAudio</code> option: </p>
949     <p><code><b>-dumpAudio filename</b></code></p>
950     <p>The audio file format can be .wav, .au, or .aif, depending on
951        the file name. For example, if <code>"filename"</code> is
952        "foo.au" the file format will be .au. </p>
953     <p>The <code><b>-dumpMultiAudio</b></code> option (same format as
954        <code>-dumpAudio</code>) dumps audio to multiple audio files,
955        one file per utterance. In this case, if
956        <code>"filename"</code> is "foo.wav", the files are named
957        foo0.wav, foo1.wav, foo2.wav, etc.. Again, the file format is
958        determined by the extension of the filename.<br>
959
960     <p>If you are writing your own application, you can set the audio player
961        of the FreeTTS Voice to one of the file-based audio players.
962        See the FreeTTS API documentation for:
963
964     <ul>
965       <li><a href="../javadoc/com/sun/speech/freetts/Voice.html">Voice</a> -
966           describes how to set the 
967           <a href="../javadoc/com/sun/speech/freetts/audio/AudioPlayer.html">
968           AudioPlayer</a> for a voice.  You can also set the
969           default AudioPlayer via the command line by defining the
970           "com.sun.speech.freetts.voice.defaultAudioPlayer" system
971           property.  The value of this property must be the name of
972           a class that implements the AudioPlayer interface, and which
973           also has a no-arg constructor.</li><br>
974       <li><a href="../javadoc/com/sun/speech/freetts/jsapi/FreeTTSVoice.html#getVoice()">
975           FreeTTSVoice.getVoice</a> - allows you to get the underlying 
976           FreeTTS Voice object from the JSAPI FreeTTSVoice object.  
977           NOTE that doing this means you end up straying from the
978           JSAPI specification.  An example of how you might use this
979           method is as follows:
980 <pre>
981     desc = (SynthesizerModeDesc) synthesizer.getEngineModeDesc();
982     javax.speech.synthesis.Voice[] jsapiVoices = desc.getVoices();
983     javax.speech.synthesis.Voice jsapiVoice = voices[0];
984     
985     /* Non-JSAPI modification of voice audio player
986      */
987     if (jsapiVoice instanceof com.sun.speech.freetts.jsapi.FreeTTSVoice) {
988         com.sun.speech.freetts.Voice freettsVoice = 
989             ((com.sun.speech.freetts.jsapi.FreeTTSVoice) jsapiVoice).getVoice();
990         freettsVoice.setAudioPlayer(new SingleFileAudioPlayer());
991     }
992 </pre>
993       </li>
994       <li><a href="../javadoc/com/sun/speech/freetts/audio/SingleFileAudioPlayer.html">
995           SingleFileAudioPlayer</a> - an AudioPlayer that sends all
996           output to a single file.</li><br>
997       <li><a href="../javadoc/com/sun/speech/freetts/audio/MultiFileAudioPlayer.html">
998           MultiFileAudioPlayer</a> - an AudioPlayer that sends each utterance to a separate file.</li>
999     </ul>
1000   </li><br>
1001
1002   <li><a name="is_full_jsapi"><b>Does FreeTTS provide full support for
1003        the JSAPI 1.0 specification?</b></a>
1004
1005       <p>No. Since FreeTTS is a speech synthesis system, none of the
1006          JSAPI 1.0 Recognition interfaces are supported. In addition,
1007          FreeTTS supports only a subset of the JSAPI 1.0
1008          javax.speech.synthesis specification.  The FreeTTS support
1009          for JSAPI 1.0 has the following restrictions:
1010     <ul>
1011       <li>JSML Speech Markup is ignored. FreeTTS JSAPI will process
1012           JSML, but currently does not apply the markup to the
1013           generated speech.</li>
1014       <li>FreeTTS does not currently generate the <code>WORD_STARTED</code>
1015           or the <code>MARKER_REACHED</code> events.</li>
1016       <li>Vocabulary management is not supported.</li>
1017       <li>The <code>Synthesizer.phoneme()</code> method is not
1018           implemented.</li>
1019       <li><code>PropertyVeto</code> exceptions are not always properly
1020           thrown when property change requests are rejected or
1021           constrained.</li>
1022     </ul>
1023
1024     <p>Note that the JSAPI specification is undergoing changes.  The
1025        official work being done on JSAPI is now for JSAPI 2.0 via the
1026        Java Community Process (JCP) under JSR-113.  Read more about
1027        the JCP and JSR-113 at 
1028        <a href="http://www.jcp.org">http://www.jcp.org.</a></p>
1029   </li>
1030
1031   <li><a name="no_jsapi"><b>Why do I get a NoClassDefFoundError when I
1032       try to run a demo?</b></a>
1033     <p>You probably need to install the JSAPI 1.0 specification
1034        implementation. See the <a href="jsapi_setup.html">JSAPI setup guide</a>
1035        for more details.</p>
1036   </li>
1037
1038   <li><a name="old_java"><b>Why do I get an
1039       UnsupportedClassVersionError when I try to run a demo?</b></a>
1040     <p>You probably are trying to run with an older (jdk 1.4) version of
1041        the java runtime. To verify this type:</p>
1042     <pre>% java -version<br></pre>
1043     <p>You should see something like: <code>java version
1044        "1.4.0"</code> or <code>&nbsp;higher</code>.  If you see
1045        something older that this, such as <code> java version "1.2.2"
1046        </code> then you are indeed running with an older version of
1047        the java runtime. See <a href="#how_build">Prerequisites
1048        for building and running FreeTTS</a> for more details on what
1049        is needed to run FreeTTS.
1050   </li>
1051
1052   <li><b><a name="What_does_the_message_Cant_find"></a>
1053       What does the message "Can't find diphone xx-yy" mean?</b>
1054
1055     <p>There are approximately 45 phonemes in the English
1056        language.  FreeTTS uses a technique called diphone synthesis
1057        which uses pairs of phonemes called diphones as an index into
1058        the unit database.  Not all phoneme combinations occur in the
1059        English language.  FreeTTS, in order to conserve space, does not
1060        include diphone information for diphones that do not naturally
1061        occur.  This message indicates that FreeTTS encountered one of
1062        these omitted diphones. This generally occurs when FreeTTS
1063        tries to speak gibberish or non-English text.
1064   </li>
1065
1066   <li><b><a name="I_get_no_sound_when_I_run_one_of_the"></a>
1067       I get no sound when I run one of the FreeTTS demos. Why?</b>
1068
1069     <p>If you run HelloWorld or another one of the FreeTTS demos and
1070        receive no messages, then FreeTTS thinks that everything is
1071        working fine, but obviously it's not if you are not hearing
1072        anything.  Try running another java application that uses the
1073        javax.sound APIs.  Try downloading the javasound demo from
1074        <a href="http://java.sun.com/products/java-media/sound/samples/JavaSoundDemo/" target="_blank">
1075        http://java.sun.com/products/java-media/sound/samples/JavaSoundDemo/</a>
1076        and make sure that it runs (and 'sounds') OK.
1077   </li>
1078
1079   <li><b><a name="Can_I_use_FreeTTS_in_an_applet"></a>
1080       Can I use FreeTTS in an applet?</b>
1081
1082     <p>We do not recommend trying this.  It's a quagmire of complexity
1083        and the end user experience is not what you expect.  The JSAPI
1084        layer of FreeTTS will attempt to access to the 
1085        <code>speech.properties</code> file in the user's home
1086        directory.  The applet security mechanism will not allow such
1087        access and will throw a SecurityException if such an attempt is
1088        made. 
1089     <p>Instead of using FreeTTS in an applet, we highly recommend you
1090        consider using <a href="#Can_I_use_FreeTTS_with_JavaTM_Web_Start">
1091        Java Web Start</a>.
1092   </li>
1093
1094   <li><b><a name="Can_I_use_FreeTTS_with_JavaTM_Web_Start"></a>Can I
1095       use FreeTTS with Java<sup>TM</sup> Web Start?</b>
1096
1097     <p>FreeTTS includes a <a href="../demo/JSAPI/WebStartClock/README.html"> 
1098        WebStartClock demo</a> application that demonstrates how to write a 
1099        Web Start application that uses FreeTTS. 
1100   </li>
1101
1102   <li><b><a name="How_do_I_bypass_speech_properties"></a>
1103       How do I bypass the need for <code>speech.properties</code>?</b>
1104
1105       <p>JSAPI's <code>Central</code> class looks for a file named
1106          <code>speech.properties</code>.  To bypass this, use a
1107          different mechanism.  A detailed discussion of this approach
1108          in the FreeTTS Help forum: 
1109          <a href="https://sourceforge.net/forum/message.php?msg_id=1549044">
1110          Avoiding the need for speech.properties.</a> 
1111
1112       <p>The <a href="../demo/JSAPI/WebStartClock/README.html">
1113          WebStartClock demo</a> also provides an example of how to do this:
1114 <pre>
1115     public void createSynthesizer() {
1116         try {
1117             SynthesizerModeDesc desc = 
1118                 new SynthesizerModeDesc(null, 
1119                                         "time", /* use "time" or "general" */
1120                                         Locale.US, 
1121                                         Boolean.FALSE,
1122                                         null);
1123
1124             FreeTTSEngineCentral central = new FreeTTSEngineCentral();
1125             EngineList list = central.createEngineList(desc); 
1126             
1127             if (list.size() > 0) { 
1128                 EngineCreate creator = (EngineCreate) list.get(0); 
1129                 synthesizer = (Synthesizer) creator.createEngine(); 
1130             } 
1131             if (synthesizer == null) {
1132                 System.err.println("Cannot create synthesizer");
1133                 System.exit(1);
1134             }
1135             synthesizer.allocate();
1136             synthesizer.resume();
1137
1138         } catch (Exception e) {
1139             e.printStackTrace();
1140         }
1141     }
1142 </pre>
1143   </li>
1144
1145   <li><b><a name="What_does_the_message_Line_unavailable"></a>What does
1146 the message "Line unavailable" mean?</b>
1147
1148     <p>This message is output when FreeTTS tries to allocate sound
1149        resources and the requested resources are unavailable. This can
1150        occur for a number of reasons:
1151
1152     <ul>
1153       <li>Your computer does not have any sound capabilties, or is not
1154           allowing FreeTTS to access these capabilities</li>
1155       <li>Another application is using the resources and cannot share them</li>
1156       <li>The requested audio format is not suppported by your hardware</li>
1157     </ul>
1158   </li><br>
1159
1160   <li><a name="where_is_recognizer"><b>Where is the speech recognizer?</b></a>
1161     <p>This is an implementation of a speech synthesizer and does not
1162        include a speech recognizer.  Please keep your eye on the
1163        'cmusphinx' project on <a
1164        href="http://sourceforge.net/projects/cmusphinx/">SourceForge</a>
1165        for developments in this area. </p>
1166   </li>
1167 </ul>
1168
1169 <hr>
1170
1171 See the <a href="../license.terms">license terms</a> and 
1172 <a href="../acknowledgments.txt">acknowledgments</a>.<br>
1173 Copyright 2001, 2002, 2003, 2005 Sun Microsystems, Inc. All Rights Reserved. 
1174 Use is subject to license terms.
1175 </body>
1176 </html>