The Android text to speech engine still seems to be a pretty underused
resource in Android apps. However, implementing it in your own
applications is straightforward. There are a few potential issues and
choices you need to consider, but for most purposes, the process is not a
complex one. In this tutorial we jump around a bit within one Android
Activity, but don’t worry, the complete code is listed at the end. The
aim is to give you a clear idea of the what’s going on at each
processing stage so that you can successfully use the function in any
app.
import android.app.Activity;import android.os.Bundle;import android.view.View.OnClickListener;import android.widget.Button;import android.view.View;import android.widget.EditText;import android.speech.tts.TextToSpeech;import android.speech.tts.TextToSpeech.OnInitListener;import android.content.Intent;import java.util.Locale;import android.widget.Toast;public class SpeakingAndroid extends Activity implements OnClickListener, OnInitListener { //TTS object private TextToSpeech myTTS; //status check code private int MY_DATA_CHECK_CODE = 0; //create the Activity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //get a reference to the button element listed in the XML layout Button speakButton = (Button)findViewById(R.id.speak); //listen for clicks speakButton.setOnClickListener(this); //check for TTS data Intent checkTTSIntent = new Intent(); checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE); } //respond to button clicks public void onClick(View v) { //get the text entered EditText enteredText = (EditText)findViewById(R.id.enter); String words = enteredText.getText().toString(); speakWords(words); } //speak the user text private void speakWords(String speech) { //speak straight away myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null); } //act on result of TTS data check protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == MY_DATA_CHECK_CODE) { if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { //the user has the necessary data - create the TTS myTTS = new TextToSpeech(this, this); } else { //no data - install it now Intent installTTSIntent = new Intent(); installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(installTTSIntent); } } } //setup TTS public void onInit(int initStatus) { //check for successful instantiation if (initStatus == TextToSpeech.SUCCESS) { if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE) myTTS.setLanguage(Locale.US); } else if (initStatus == TextToSpeech.ERROR) { Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show(); } }} Remember to use your own class name and to indicate your application package at the top of the file. If you are using Eclipse, you should not need to add all of the import statements manually, as the IDE will insert some of them automatically. Run your app in the Android emulator and hear it in action.
This is a basic overview of implementing Text To Speech in your Android apps. The TTS resource provides a wide range of additional options you may want to explore depending on the nature of your apps. When calling the TextToSpeech object “speak” method for example, you can pass a HashMap object indicating the details of more complex playback options.
Official Android text to speech Documentation. Details Mobile tut plus tutorials. Details Android Hive full video and code. Details











0 comments
Thanks for your comment