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