Difference between revisions of "Application:SpeechDispatcher"

From WebOS Internals
Jump to navigation Jump to search
 
Line 27: Line 27:
  
  
* Name: getOutput, Parameter: n.a. <br> Returns the current audio output channel in the 'reply' property.
+
* Name: getOutput, Parameter: n.a. <br> Returns the current default audio output channel in the 'reply' property.
  
 
  this.request = new Mojo.Service.Request('palm://org.webosinternals.speechd.service', {
 
  this.request = new Mojo.Service.Request('palm://org.webosinternals.speechd.service', {
Line 45: Line 45:
  
  
* Name: setOutput, Parameter: output. <br> Set the audio output channel.
+
* Name: setOutput, Parameter: output. <br> Set the default audio output channel. This channel is used for all text that is spoken from any application (e.g. Navit) that do not set a special audio channel. Use the output parameter of the say method if you only what to send this text to a specific audio channel (e.g. Use the espeak-ringtone output of the say method if you speak the caller name)
  
 
The allowed values for output are:<br>
 
The allowed values for output are:<br>

Latest revision as of 09:08, 1 November 2012

What is the Speech Dispatcher

SpeechDispatcher.png

This daemon provides speech synthesis. At the moment, it is only used by the Navit application and there is no dedicated application front-end, but a Mojo service and application will be developed in the future.

How does it work

The speech dispatcher is based on speechd. It accepts text via a sokect and/or C-API. This text is then sent sentence by sentence to a speech synthesizer. At the moment we have included espeak as the speech synthesizer.

Where I can get help

See the thread on Precentral: http://forums.precentral.net/showthread.php?p=2549731

Can my PDK app use this service

Yes it can. The C-Api is documented on the speechd home page => http://cvs.freebsoft.org/doc/speechd/speech-dispatcher.html#SEC42

The other way would be to use the spechd socked directly as doumented here => http://cvs.freebsoft.org/doc/speechd/ssip.html#Top

The default socket for the PalmPre is 'export SPEECHD_SOCKET=/tmp/speechd-sock'

Can my Mojo app use this service

Starting with version 0.7.1-14 the package contains 4 Javascript service that can be used in Mojo or Enjo Apps. The service url is palm://org.webosinternals.speechd.service and has the following methods:


  • Name: getOutput, Parameter: n.a.
    Returns the current default audio output channel in the 'reply' property.
this.request = new Mojo.Service.Request('palm://org.webosinternals.speechd.service', {
	method: 'getOutput',
	parameters: {},
	onSuccess:	function(result) {
			this.setHtml(result.reply);
			delete this.request;
		}.bind(this),
	onFailure:	function(err) {
			delete this.request;
			Mojo.Log.error('Unable to get speech dispatcher audio output');
			Mojo.Controller.errorDialog('Unable to get speech dispatcher audio output');
			}.bind(this)
	});


  • Name: setOutput, Parameter: output.
    Set the default audio output channel. This channel is used for all text that is spoken from any application (e.g. Navit) that do not set a special audio channel. Use the output parameter of the say method if you only what to send this text to a specific audio channel (e.g. Use the espeak-ringtone output of the say method if you speak the caller name)

The allowed values for output are:
espeak-voip: used for phone calls. This channel uses the devce speaker even if the device is connected to a buetooth output. If a phone call is active the audio is mixed into it.
espeak-ringtones: Uses for ringtones
espeak-feedback:
espeak-alarm: Used for caledar or other device alarms
espeak-media: all webOS appication audio output
espeak-navigation: The running volume of audio from the media is reduced while the text is spoken. ATTATION: The seech output will be dissmissed if the phone is rining or an arlam is active
All audio channes uses the device audio settinge. Example: If you use the espeak-ringtones output and the phone is on mute the text will not be spoken. If not on mute it will use the volume of the rintone settings settings.

this.request = new Mojo.Service.Request('palm://org.webosinternals.speechd.service', {
		method: 'setOutput',
		parameters: {
			"output":audio
		},
	onSuccess:	function(result) {
				this.setHtml(audio);
				delete this.request;
			}.bind(this),
	onFailure:	function(err) {
				delete this.request;
				Mojo.Log.error('Unable to set speech dispatcher audio output');
				Mojo.Controller.errorDialog('Unable to set speech dispatcher audio output');
			}.bind(this)
});


  • Name: say, Speak some text.

Parameter: say are all optional expect of text. The default language is English interdependent of the device setting!
text: The test to be spoken
language: text language (iso code)
output: Use a special output instead of the default, the possible values are listet in the setOutput method
rate: rate of the speech (between -100 and +100, default: 0)
pitch: pitch of the speech (between -100 and +100, default: 0)
volume: volume (intensity) of the speech (between -100 and +100, default: 0)
type: voice type (male1, male2, male3, female1, female2, female3, child_male, child_female)

	new Mojo.Service.Request('palm://org.webosinternals.speechd.service', {
		method: 'say',
		parameters: {
			language: "en",
			text: $L("Let us do a test")
		}
	});


You can test all methods from novaterm:

root@HPPre3:/# luna-send -n 1 palm://org.webosinternals.speechd.service/checkperms '{}'
{"reply":{"root":true,"homebrew":true},"returnValue":true}
root@HPPre3:/# luna-send -n 1 palm://org.webosinternals.speechd.service/say '{"text":"Dies ist ein Test","language":"de","output":"espeak-ringtones"}'
{"reply":"","error":"","returnValue":true}
root@HPPre3:/# luna-send -n 1 palm://org.webosinternals.speechd.service/setOutput '{"output":"espeak-ringtones"}'
{"reply":"(00639/790284550) org.webosinternals.speechd (stop) running, process 1221\n(00639/790559209) org.webosinternals.speechd (stop) pre-stop, (main) process 1221\n(00639/790681280) org.webosinternals.speechd (stop) stopping, process 1221\n(00639/791108526) org.webosinternals.speechd (stop) killed, process 1221\n(00639/791261114) org.webosinternals.speechd (stop) post-stop\n(00639/791566289) org.webosinternals.speechd (stop) waiting\n(00639/810426153) org.webosinternals.speechd (start) waiting\n(00639/810609259) org.webosinternals.speechd (start) starting\n(00639/810700811) org.webosinternals.speechd (start) pre-start\n(00639/810822882) org.webosinternals.speechd (start) spawned, process 2334\n(00639/812257208) org.webosinternals.speechd (start) post-start, (main) process 2334\n(00639/812409796) org.webosinternals.speechd (start) running, process 2334\n","error":"","returnValue":true}
root@HPPre3:/# luna-send -n 1 palm://org.webosinternals.speechd.service/getOutput '{}'
{"reply":"espeak-ringtones","error":"","returnValue":true}