Android Text to Speech
Although visual feedback is usually the fastest way to provide users with information, this requires users to focus on the device. When a user cannot view a device, other communication methods are required. Android provides powerful Text-to-Speech and TTS APIs. This allows developers to add voice notifications and other voice feedback functions to their applications without requiring users to look at the screen.
The following code shows how to use the tts api:
Public class TextToSpeechDemo implements TextToSpeech. OnInitListener {
Private final TextToSpeech mTextToSpeech; // TTS object
Private final concurrent1_queue MBufferedMessages; // Message Queue
Private Context mContext;
Private boolean mIsReady; // identifier
Public TextToSpeechDemo (Context context ){
This. mContext = context; // obtain the context
This. mBufferedMessages = new concurrent1_queue (); // Instantiate a queue
This. mTextToSpeech = new TextToSpeech (this. mContext, this); // instantiate TTS
}
// Initialize the TTS Engine
@ Override
Public void onInit (int status ){
Log. I ("TextToSpeechDemo", String. valueOf (status ));
If (status = TextToSpeech. SUCCESS ){
Int result = this. mTextToSpeech. setLanguage (Locale. CHINA); // set the recognition speech to Chinese.
Synchronized (this ){
This. mIsReady = true; // set the identifier to true.
For (String bufferedMessage: this. mBufferedMessages ){
SpeakText (bufferedMessage); // read speech
}
This. mBufferedMessages. clear (); // clear the queue after reading
}
}
}
// Release resources
Public void release (){
Synchronized (this ){
This. mTextToSpeech. shutdown ();
This. mIsReady = false;
}
}
// Update the message queue or read the voice
Public void policynewmessage (String lanaugh ){
String message = lanaugh;
Synchronized (this ){
If (this. mIsReady ){
SpeakText (message );
} Else {
This. mBufferedMessages. add (message );
}
}
}
// Read speech processing
Private void speakText (String message ){
Log. I ("liyuanjinglyj", message );
HashMap Params = new HashMap ();
Params. put (TextToSpeech. Engine. KEY_PARAM_STREAM, "STREAM_NOTIFICATION"); // sets the playing type (audio stream type)
This. mTextToSpeech. speak (message, TextToSpeech. QUEUE_ADD, params); // after adding this pronunciation task to the current task
This. mTextToSpeech. playSilence (100, TextToSpeech. QUEUE_ADD, params); // Interval
}
}
Of course, mobile phones generally do not support Chinese characters. Baidu can download the TTS engine of xunfei and test the engine. See the final figure.
Because the initialization of the TTS engine is asynchronous, you need to put the message in the queue before executing the actual Text to Speech.
Multiple parameters can be sent to the TTS engine. The preceding figure shows how to determine the audio stream used by the spoken message. In this case, the same audio stream is used for the notification sound.
Finally, if you process multiple messages in a row, it is best to pause and play the next message after each message ends. This will clearly tell you the end and start of the message.