Introducing IBM TTS - The Future of ETI Eloquence in NVDA
This is David CM, a computer engineer from Costa Rica, and the developer of the IBMTTS driver that is compatible with eloquence synthesizer as well. In this article, I'm going to talk about the licence situation and python 3 compatibility.
What is IBMTTS?
The IBMTTS add-on is the new driver for NVDA to use IBM tts synths. This driver can also be used with Eloquence synthesizer, since both shares the same communication protocol (sdk).
The original driver was called IBMTTS when I developed it. Someone changed it to Eloquence at some point of the history and since the driver was considered illegal, I didn't do anything to avoid the confusion.
To create this new driver I took the anonymous contributions here and there, mixed them with my own contributions, cleaned the code a little (I was an inexpert school teenager when I created the first driver) and uploaded it to github. Thanks to all the anonymous contributors for improving my driver. Now you can contribute without hiding your name if you want.
In short, the IBMTTS add-on is the sum of all contributions of the older driver known as eloquence (all I could find) with new improvements and updated compatibility.
Licence, reasons to officialize and renaming:
I developed this driver a long time ago (around 2008) and the driver was considered illegal.
Since there was no official repository, many people made contributions anonymously. I like the contributions to my projects, but is hard to deal with a lot of different copies of the same thing. You can't get all the good features in one driver.
So, the past year I decided to officialize the driver on github. I renamed it to IBMTTS to avoid legal problems. You'll always be able to get the latest release there. If you are a developer or translator, feel free to send me your contributions via a pull request. You can report issues here.
I'm not a law expert, but in my opinion (and opinion from others) the driver is 100% legal because this driver is based on the public sdk documentation of the IBMTTS synthesizer. You can get drivers for IBMTTS on linux, based on the same SDK.
The driver is legal, but not the libraries taken from software that includes eloquence like JAWS for example. So, I can't distribute the Eloquence Libraries. You will need to get them from another place.
Main changes of the driver (at 19.10b2 version):
I upgraded the code to be compatible with python 3 and the speech framework of NVDA 2019.2 or later. This new driver has several improvements, so you should use this even if you are using NVDA 2019.2 or older.
The compatibility with older versions of NVDA will be gone when the second version of NVDA with python 3 is released. Its very hard for me to maintain compatibility with two frameworks and two python versions at the same time in a single driver and I can't take advantage of Python 3 improvements.
If you need to use an older NVDA version, you can get all IBMTTS releases available on github.
Changes:
- Now the min rate is 40 (was 0 previously) max rate is 156 (was 250). It means that a 0 value in NVDA settings is equivalent to 40 IBMTTS units, 100 in the settings is equivalent to 156 units. If you need more rate, use the turbo boost feature.
- Added a rate boost setting. If a rate of 100% (156) is not enough for you, you can enable this option to get the maximum power of IBMTTS. This option increases the rate by 1.6x.
- Now pauses between punctuation symbols is shorter. Currently considering adding a setting to adjust this behavior.
- Now IBMTTS releases the audio player when stops talking. Now NVDA should work correctly with audio ducking enabled when using IBMTTS.
- Increased accuracy of index reported when reading.
- Added IBMTTS settings category, currently it allows to configure tts path folder and the dll library name. You can browse for an Eloquence or IBMTTS library there.
- Added an option to copy the current library with files included, in a separate add-on. It allows you to upgrade the driver without losing the libraries.
- Now the path for the libraries and the dll name are saved on the NVDA user settings.
- Now the default path to find libraries is "addons\IBMTTS\synthDrivers\ibmtts". So, you can place library files inside that folder if you want a driver with integrated libraries.
- Added more checks to ensure that the library is correct.
- Added documentation.
- Solved a critical issue when changing from IBMTTS to another synthesizer. Now NVDA doesn't crash if the user changes parameters in the new selected synth before closing voice settings dialog.
- Add French, Italian and Portuguese translations.
How to use this driver?
You can download the latest release of the driver from this link.
This driver doesn't include libraries and it won't show in the synthesizers list until you set a library. So, you need to obtain the libraries yourself.
Users can create a driver that installs libraries automatically. If you have the add-on that installs libraries automatically just install both the driver and the libraries add-on, and then use it.
How to set an external library to use with the IBMTTS driver?
This add-on allows you to explore for the files from the IBMTTs driver.
- Open the NVDA settings dialog and select IBMTTS category in the categories list.
- Then press tab to find "Browse for IBMTTS library..." button and activate it.
- Select the dll inside the folder where libraries are located and press OK.
- Now accept the settings dialog and restart NVDA. Now, IBMTTS should work for you.
Note that with this setting, you can't use NVDA in other computers in portable mode.
But after it, if you call the option "Copy IBMTTS files in an add-on (may not work for some IBMTTS distributions)" the add-on will register a new add-on in your NVDA installation. This new add-on will store the current libraries and works properly with portable versions of NVDA.
How to integrate libraries inside the driver add-on?
You can copy the library files inside the IBMTTS add-on in the path: "%AppData%\nvda\addons\IBMTTS\synthDrivers\IBMTTS"
The IBMTTS folder is not included in the driver. So, you must create it first.
Note that if you do it, the libraries will be deleted when you update this driver. NVDA deletes all files before updating, so the libraries will be loss.
Generating your own libraries package:
You can build your own package with libraries. So, when anyone installs your add-on, the same add-on will configure the libraries path to point to the libraries included in your add-on. Use the template uploaded here.
- Download the template file and uncompress it.
- Create a folder called eciLibraries.
- Place library files inside eciLibraries folder, and compress it. The files should be placed in the root. It means that if you open the compressed file, you will see all the files without open any folder in the compressed file.
- Change the extension of the compressed file from ".zip" to ".nvda-addon". E.G. "eciLibraries.nvda-addon".
Now you or any user can install this package and the libraries will be automatically set for the driver.
Final Remarks by BHP:
The ETI Eloquence that we were using in NVDA until now was origenally called IBMTTS but was somehow renamed to Eloquence. Now the origenal Developer David CM has tookover the development again and made it IBMTTS once again to avoid leagalities. BHP has colaberated with David and as a result we are providing the ready made version of the IBMTTS packaged with library for those who have trouble understanding its technicalities. We are glad that we got the chance to serve the community together. For those who want to integrate the library themselves in the origenal package can follow the directions of this article. In other case we have the package build for you. To download, head over to IBMTTS post in our software pool. We once again thanks to David CM for his hard work. And it's a moment of celebration for all NVDA users around the globe for whom life was imposible without Eloquence.
- 15491 reads
Your Help Required to Keep The Lights On!
Satisfied with the provided Services?
Show your LOVE and Secure BHp's Future.
Every single Penny helps, counts and means a lot
And will be spent to Deliver Even More.
Introducing Free Membership of BookShare for Pakistanis
Popular on BHP
-
Type: softwareTotal views: 1,039,991
-
Type: softwareTotal views: 258,682
-
Type: softwareTotal views: 200,206
-
Type: softwareTotal views: 148,072
-
Type: softwareTotal views: 130,667
-
Type: softwareTotal views: 88,223
-
Type: softwareTotal views: 70,837