# JSAPI 1.0 Setup

FreeTTS provides some level support for the Java Speech API v1.0 (JSAPI). In particular, 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:

- JSML Speech Markup is ignored. FreeTTS will process JSML, but currently does not apply the markup to the generated speech.
- FreeTTS does not currently generate the `WORD_STARTED` or the `MARKER_REACHED` events.
- Vocabulary management is not supported.
- The `Synthesizer.phoneme()` method is not implemented.
- `PropertyVeto` exceptions are not always properly thrown when property change requests are rejected or constrained.

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 http://www.jcp.org.

### Set Up Your JSAPI Environment

The sources to the JSAPI 1.0 specification implementation (i.e., the `javax.speech.*` classes) are not available under a BSD-style license. Instead, we make the JSAPI binary available under a separate binary code license (BCL).

Obtaining the JSAPI binary is as simple as unpacking the `jsapi.jar` file in the `lib` directory:

- UNIX Systems

  - Go to the `lib` directory.
  - Type `chmod +x ./jsapi.sh`.
  - Type `sh ./jsapi.sh` and view the BCL.
  - If the BCL is acceptable, accept it by typing "y". The `jsapi.jar` file will be unpacked and deposited into the `lib` directory.

- Windows Systems

  - Go to the `lib` directory.
  - Type `.\jsapi.exe` and view the BCL.
  - If the BCL is acceptable, accept it by typing "y". The `jsapi.jar` file will be unpacked and deposited into the `lib` directory.

### Copy speech.properties

You will also need to copy the `speech.properties` file to your home directory before running he demos that use JSAPI. If you are not sure where to copy this file, try running one of the JSAPI demos. If the demo cannot find the `speech.properties` file, it will tell you where you should put it.

NOTE: if you want to avoid the need for using the `speech.properties` file with any applications you create, you can subvert the JSAPI specification by obtaining the FreeTTS JSAPI synthesizer directly rather than using the recommended and standard way (i.e., java.speech.Central). See the code in the WebStartClock demo for an example of how to do this.