SSIP for Windows -- beta almost ready for release

  • From: "Macarty, Jay {PBSG}" <Jay.Macarty@xxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Mon, 26 Nov 2007 11:13:24 -0600

All,
Some of you may be aware that I have been working for some time now on a
server for the Speech Synthesis Interface Protocol, SSIP, for the
windows platform. I started out trying to implement the server in
Auto-It but couldn't get the multi-threading functionality or object
oriented capabilities I wanted. I then switched to ruby but the 1.8
version didn't have the interface and abstract class support I wanted
and the executable packaging wasn't quite what I wanted either. I have
now switched the development over to C# and found the capabilities I
wanted. There is still a little clean-up of the initial beta release and
I'll have to find a website to host the download installer, but here is
a description of the initial release.

SSIP is a non-synthesizer specific protocol for producing speech output.
The specs haven't been updated in a while but can be found at the URL
http://www.freebsoft.org/doc/speechd/ssip.html

SSIP uses a simple socket connection and a text command syntax. To
produce the spoken output "this is a test." a calling client program
might send these commands:

set client_name j.macarty:demo:test1
speak
this is a test.
.

The set client_name command simply identifies this client session for
tracking purposes since the server supports multiple client sessions
concurrently. The speak command tells the server to start receiving text
to be spoken. The text input is terminated by a line containing a single
dot. this also triggers the server to send the text to the output speech
channel. 

The SSIP for windows server supports output to JAWS, window-Eyes or
SAPI. The SpeechManager class uses an interface named ITextToSpeech with
implementation classes written for each of these 3 output channels. The
server was written with C# 2.0, instead of 3.x, because some corporate
builds, including ours here at work, are still using Dot Net 2.0. Rather
than attempting to set up the COM interface for SAPI and Window-Eyes, I
decided to use the tlbimp utility and build assemblies for them. This
allowed for simply creating the objects like SpVoice for SAPI and
SpeakClass for Window-Eyes. Also, once the assemblies were built, it was
easier to examine them using the ildasm tool to see the method calls and
signatures. 

The current server supports multiple client connections. I tried it out
with 3 clients; one speaking thru JAWS, one speaking thru Window-Eyes,
and one speaking thru SAPI. The SAPI interface also supports the SET
RATE, SET VOICE, and SET VOLUME SSIP commands. The server also supports
the SSIP CHAR command for immediately speaking a single character. The
SSIP BLOCK structure command set and the Speech Synthesis Markup
Language, SSML, support are not included in this release but will be
added. 

The install includes a small Auto-It program called SSIPVoiceClient
which allows one to test out the server. The client contains an input
text field where you can enter SSIP commands to send to the server and
an output text area which echoes back the server response codes. 

I'll post another update when I have arranged for a download host and
have finished packaging up the install program. I'm hoping to provide a
java client API for the SSIP server, if Sina hasn't already developed
one, and some client examples in other languages as well. 
__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

Other related posts: