Writing a driver for Finnish speaking synthesizer?
hanke at brailcom.org
Sat Oct 25 12:28:27 CEST 2008
Petteri Heiskari wrote:
> I noticed one "specification bug" in Speech Dispatcher docs. It states that
> output module may not send notification replies like 701 EVENT BEGIN when
> processing for example SPEAK-command.
> However the output module cannot lock any mutex at right time. The exact
> time should be _before_ Speech Dispatcher starts to send command, for
> example line:
> Since Speech Dispatcher and output modules are separate processes, there is
> no simple way to synhronize this I guess.
Actually, there is. I don't think there is any problem, just that the
documentation is not so clear about it. Before Speech Dispatcher
sends any new requests (like SET, SPEAK etc.) it waits for the previous
request to be terminated by the output module by signalling "STOP",
"END" or "PAUSE" index marks. So there can't possibly be any pending
index marks when Speech Dispatcher sends the "SPEAK" command.
The only thing the output module must ensure is that it doesn't
send any index marks until it acknowledges the receival of the
new message via ,,200 OK SPEAKING''. It must also ensure that
index marks written to the pipe are well ordered -- of course
it doesn't make any sense to send any index marks after "STOP",
"END" or "PAUSE" is sent.
I've modified the documentation a bit and I hope it is now clear
about this issue.
The method you suggested of handling index marks really
asynchronously is what I now consider a better solution as
it is more bullet proof and easier to debug if one of the two
sides doesn't do their job well. Also, it allows for a better flexibility
of the communication protocol. We have implemented this method
in the TTS API Provider I told you about and this is also why I was
a little confused by your question at first. Please apologize
my late reply.
More information about the Speechd