diff --git a/emscripten/README.md b/emscripten/README.md index 1ea084eb..e1301bf8 100644 --- a/emscripten/README.md +++ b/emscripten/README.md @@ -8,7 +8,7 @@ allows client-side text-to-speech synthesis in any browser supporting Web workers and the Web Audio API. * Version: 1.49.0 -* Date: 2016-10-27 +* Date: 2016-11-01 * License: the GNU General Public License, Version 3 (GPLv3) * Size: 3.0 MB (including all the voices) @@ -17,7 +17,7 @@ supporting Web workers and the Web Audio API. For an online demo, visit [this page](https://www.readbeyond.it/espeakng/). -If you prefer a local demo, open the file `demo.html` in your browser. +If you prefer a local demo, open the file [`demo.html`](demo.html) in your browser. (Depending on your browser, you might need to serve it via a Web server. A simple way consists in calling `$ python -m SimpleHTTPServer 8000` and pointing your browser to `http://localhost:8000/demo.html`) @@ -26,18 +26,20 @@ and pointing your browser to `http://localhost:8000/demo.html`) ## Usage 1. Include `js/espeakng.js` in your HTML file: - + ```html ``` -2. Create a new `eSpeakNG` instance with the path of the worker (e.g., `espeakng.worker.js`) as the first argument. +2. Create a new `eSpeakNG` instance with the path of the worker + (e.g., `js/espeakng.worker.js`) as the first argument. You can supply a callback function that will be called once the worker is ready: ```js @@ -51,7 +53,7 @@ and pointing your browser to `http://localhost:8000/demo.html`) * `set_voice.apply(espeakng, voice)`: set the voice for synthesizing speech, `voice` must be the code string for the desired voice (e.g., `en`, `en-us`, `it`, etc.) * `synthesize(text, cb(samples, events))`: synthesize the given string `text` and call the callback function `cb` when done, passing the generated audio samples (`samples`) and events (`events`) - See the file `demo.html` for details. + See the file [`demo.html`](demo.html) for details. ## Download @@ -63,35 +65,44 @@ TODO: add the compiled JS files to a public free CDN, and list the URL here. ## Building -1. Make sure you have `emscripten` [installed and activated](http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html). +1. Make sure you have `emscripten` + [installed and activated](http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html), + and configured in your shell. -2. Clone the repo and enter the `espeak-ng` directory: +2. Clone the repository, enter the `espeak-ng` directory, and initialize it: ```bash $ git clone https://github.com/espeak-ng/espeak-ng $ cd espeak-ng + $ ./autogen.sh ``` 3. Compile `espeak-ng`: ```bash - $ ./autogen.sh $ ./configure --prefix=/usr --without-async --without-mbrola --without-sonic $ make ``` -4. Recompile `espeak-ng` with `emconfigure` and `emmake`: + Instead, if you just want a subset of languages of your choice, + run `make XX` for each of them, where `XX` is the language code. + For example: + + ```bash + $ # build English only + $ make en + $ + $ # build English, Italian, and German + $ make en && make it && make de + ``` + +4. Recompile the `espeak-ng` library with `emconfigure` and `emmake`: ```bash $ emconfigure ./configure --prefix=/usr --without-async --without-mbrola --without-sonic - $ emmake make + $ emmake make src/libespeak-ng.la ``` - Note: the `emmake make` command currently exits - with the error `recipe for target 'phsource/phonemes.stamp' failed`, - but you can safely ignore it. - (TODO: fix this issue.) - 5. Enter the `emscripten` directory and compile the JS worker with `emmake`: ```bash @@ -100,28 +111,29 @@ TODO: add the compiled JS files to a public free CDN, and list the URL here. ``` 6. The `js/` directory should contain the output JS files: - + * `espeakng.js`, * `espeakng.worker.js`, and * `espeakng.worker.data`. ### Notes -* If you want to build only a single voice, for example the English one, - run `$ make en` instead of `$ make` at step 3. - You can also build a subset of all the available voices, - by running (say) `$ make en && make it && make fr && make es`. - Note that `list_voices()` will still list all available voices, - but if you try using one that has not been compiled, +* Even if you build only a subset of languages, + the `list_voices()` function will still list all the available voices. + However, if you try using language that has not been built, you will get a runtime error. (TODO: fix this issue.) * The `-O3` optimization flag is passed to `emscripten` by default, achieving a considerable reduction of the size of the generated JS worker. If you want to omit it, for example for debug purposes, - just `$ export EM_DEBUG=1` before calling `emmake make` in step 5. + just export the `EM_DEBUG` environment variable with value `1` + (i.e., `$ export EM_DEBUG=1`) before step 3. * To remove intermediate files compiled by emscripten, - keeping only the JS worker files, run `$ emmake clean-intermediate`. -* To remove all the files compiled by emscripten, run `$ emmake clean`. + run `$ emmake clean-intermediate`. + This command will keep the output JS files, if any. +* To remove all the files compiled by emscripten, + including the output JS files, + run `$ emmake clean`. ## Credits