[Nook Touch General] nmyshkin:
[NST/G] AlReader speaks!

I have finally managed to modify AlReader 1.77 to work with the Extended TTS API. This allows the settings app to select the default voice engine and voice, rather than simply defaulting to Pico TTS (which is what otherwise happens in Android 2.1). Having said that, I can't claim it's always pretty. It seems like the much more complex voice data puts a bit of a strain on the NST/G. Once it gets up a head of steam, it's not bad, but it is a little slow to start. It "may" help to play a section of a book using Pico or even espeak (see below) and then exit the reader, go back to the settings app and reselect the voice engine for one of the Ivona voices. I'm not quite sure yet, still playing around. Curious? There's a bit of work to do. Here's how:

1. Install svox and espeak voice data to your sdcard. Here is a direct link to the Eyes Free project code repository: https://storage.googleapis.com/goog...gle.com/eyes-free/voicedata-(espeak+svox).zip.

Unzip the file and copy the two folders of voice data to your sdcard. Without these files present, the next step will hang because it tries to download this data from the Android Market.

2. Install the TTS Service Extended app from the Eyes Free Project repository. Here's the link: https://storage.googleapis.com/goog.../code.google.com/eyes-free/tts_3.1_market.apk. This is essentially an Accessibility Settings app for TTS which includes a pre-Google Voice api to enable voice engine selection for apps that use the api. It also installs the espeak voice engine (worse than Pico,

really

).

If you run the TTS Service Extended app you will find the espeak voice engine as an option (on the second screen of settings). Pico is the default.

3. Download and install the Ivona voice engine and any voices you want as described in the first post. I have tried both Kendra and Amy. Localization doesn't seem to be an issue for this business, so you can select UK English even if your device is localized for the US. Or, there are a few other English voice options (Welsh, Australian). Knock yourself out!

4. Open the TTS Service Extended app and go to the end where you can select the Ivona voice engine, then configure the voice. Back on the first screen you can set the default engine (Ivona) and select the Language to use.

Don't

check the box to have this app override the settings of whatever app is using the TTS service.

5. Install the modified AlReader 1.77 (attached below). If you currently use AlReader, you will lose all your settings unless there is a way to back them up and even then they might not transfer since this modified app has a new signature. Not sure about that. You cannot install this modified version over your current version, but must uninstall the old version first. Caveat emptor, blah-blah-blah.

I never did find a way to get the TTS option into the slider menu system on AlReader, so I ended up assigning it to a tap on the header. But you can also use one of the 9 action tap zones to assign a spot to TTS.

I'd reboot. If you have some trouble initially, try changing the default engine back to Pico or even espeak, let it read a bit and then go back to Ivona. That may sort it. In the end, there may be a buffering issue because of the size of the Ivona language files. It's a miracle that I actually figured out how to do this by examining the smali files of the decompiled app and comparing them with the smali files of the TTS Service Extended app. Some pattern matching and lucky guesses eventually bore fruit.

I'm working on the FBReader TTS plugin next. It seems like it should be simpler, but it's not :(