davidacm / NVDA-IBMTTS-Driver

This project is aimed at developing and maintaining the NVDA IBMTTS driver. IBMTTS is a synthesizer similar to Eloquence. Please send your ideas and contributions here!
GNU General Public License v2.0
56 stars 23 forks source link
ibmtts nvda-addon screen-reader speech-synthesis text-to-speech tts

IBMTTS driver, Add-on for NVDA

This add-on implements NVDA compatibility with the IBMTTS synthesizer.
We can not distribute the IBMTTS libraries. So it is just the driver.
If you want to improve this driver, feel free to send your pull requests!

Although this driver is compatible with Eloquence libraries (since Eloquence has the same api as IBMTTS) it's not recommended to use Eloquence with this driver due to licensing issues. Before using any synthesis libraries with this driver, it's recommended to get the license usage rights first.

This driver was developed with the documentation available for IBMTTS, publicly available on the web. See references section for more details.

Download.

The latest release is available to download in this link

What is IBMTTS synthesizer?

ViaVoice TTS is a text-to-speech engine developed by IBM, which synthesizes textual representation of human language into speech.

Features and settings.

Extra settings:

IBMTTS category settings.

This add-on has its own category of settings within NVDA options, to manage some internal functionality not related to speech synthesis.

Note: The automatic or manual update functionality won't remove the internal files of the add-on. If you use your libraries in that place, you can safely use this function. Your libraries will be safe.

Requirements.

NVDA.

You need NVDA 2019.3 or later.

IBMTTS synthesizer libraries.

This is just the driver, you must get the libraries from somewhere else.
This driver supports the slightly newer libraries that add East-Asian language support, and has specific fixes for the proper encoding of text. The older libraries without this should work, though.
As of version 21.03A1, this driver also works with the even newer libraries from IBM, rather than just the SpeechWorks ones. A set of independent fixes for those libraries is included, and the additional languages and other differences are accounted for. Concatenative voices are supported, and can be accessed by setting the sample rate to 8 kHz after installing voices. For best results, use the June 2005 build of ibmeci.dll (version 7.0.0.0) as older versions can be unstable when receiving text rapidly, for example, by quickly scrolling through items in a list. Also note that if you are using Hong Kong Cantonese or Chinese IBMTTS libraries, you may want to disable the use spelling functionality if supported option, to prevent some characters in these languages from being spelled out using the pinyin they are internally converted to.

Installation.

Just install it as an NVDA add-on. Then open NVDA dialog settings, and set the IBMTTS folder files in the IBMTTS category. Also in this category you can copy the external IBMTTS files into an Add-on to use it locally.

Contributing to translation.

In order to make your work easier, I have left a translation template in the master branch.

For the documentation, I created a file called "docChangelog-for-translators.md". you can use that file to see what has been changed in the documentation and update the documentation for your language.

If you want to translate this add-on to another language and you don't want to open a github account or install python and other tools needed for the translation, do the following steps:

  1. Use this template, as a base for the target language.
  2. Download "poedit", this software will help you manage the translation strings.
  3. If you want to translate the documentation too, you can see the new changes of the documentation at this link. You can see the full english documentation here.
  4. Once you finished the translation, you can send me it to: "dhf360@gmail.com".

You won't need to compile the source files. I'll do it when releasing a new add-on version. I will mention your name in the respective commit. If you don't wish to be mentioned, let me in the e-mail.

Note: make sure you have used the latest translation strings template.

This is an alternative method. If you want, you always can go by the usual way. Fork this repo, update the translation for your language, and send me a PR. But this way just will add more complexity for you.

Packaging it for distribution.

  1. Install python, currently python 3.7 is used, but You can use a newer version.
  2. Install gettext, you can download a distribution for windows in this link. If you're using windows 64 bits, I recommend this version.
  3. (optional but recommended step) create a python virtual environment to be used to manage NVDA add-ons. In the console, use "python -m venv PAT_TO_FOLDER". Where PAT_TO_FOLDER is the path of your desired path for the virtual environment.
  4. If you did step 2, go to the PAT_TO_FOLDER and inside scripts folder, execute "activate". The name of the environment should be shown in the console prompt.
  5. Clone this repo in your desired path: "git clone https://github.com/davidacm/NVDA-IBMTTS-Driver.git".
  6. In the same console instance, go to the folder of this repo.
  7. Install the requirements: "pip install -r requirements.txt".
  8. Run the scons command. The created add-on, if there were no errors, is placed in the root directory of this repo.

Once you close the console, the virtual environment is deactivated.

Packaging libraries as an independent add-on.

Is not recommended to include the libraries with this driver. It's because if the user updates the driver from the official repo, using the NVDA add-on installer, the old version will be deleted including the libraries. One solution for this, is to install the libraries in a separate add-on. Follow this link to know how to package the libraries in a separate add-on.

Notes:

Reporting issues:

If you find a security issue with some of the libraries that are compatible with this driver, please do not open a github issue nor comment it on forums before the issue is solved. Please report the issue on this form.

If the issue doesn't crash the driver or the screen reader, then open an github issue here.

References.

This driver is based on the IBM tts sdk, the documentation is available on: this link

also at the university of Columbia in this link

Or you can get a backup copy on this repo

pyibmtts: Python wrapper for IBM TTS developed by Peter Parente

See the backup files here:

tts.pdf

or tts.txt.