Wednesday, February 16, 2005

Screen Reader Program

An ambitious attempt to write program handiling speech synthesis.

The program begins with the idea to create a speech synthesizer program that can read to user the text that was highlighted. It was then extended to enable it as a screen reader that could read mouse over icons names. This is very good for a blind person to read the screen.

Since the program is going to be free, I uses free program resources to do the programming.

First, I used BCX as a programming tool. BCX is a Basic to C compiler by Kevin Diggins. It is available at http://bcx-basic.sourceforge.net.

Next I use the Mbrola Speech API from http://tcts.fpms.ac.be/synthesis/mbrola.html. It is a diphone speech synthesizer engine. It is free for non commercial use.

I wrote the speech translation based on the Carnegie Mellon University speech dictionary at http://www.speech.cs.cmu.edu/cgi-bin/cmudict.

I also add a simple translation program based on adaptations from a number of programmers. The name of which I am unable to recall. My apologies.

The programming stops at the stage where I used window hooks to capture keystroke and pronounce the key typed. I am stuck with the accessible function where the window menus and icons properties can be retrieved.

Currently it worked as a standalone program with the main speech interface and my own translation interface as a dll. The reason being windows hook requires the call back function to be in a dll. I have used another windows hook (which does not need to be residing in a dll) since then but is too lazy to transform it back to the main exe.

Note. The souce code and the compiled program is not uploaded yet. i felt it useless to upload the program till the basic screen reader interface is completed. Thought of parking the program at sourceforge.

To do list.

1. integrate the screen reader function with the speech synthesizer. Currently, it can only read the text when user highlights it and press SHIFT-CTRL-Z.

2. Add windows menu and icon property reading.

3. speed up the reading translation interface. Currently it is quite slow with noticeable long pause between sentences (I break the reading of text by sentences so that long text can be pronounced without the full translation being completed.)

4. Adapt it to other OS. Currently it works on Win98 only. I tried XP and it hangged after a while.