Android TTS技术《转》

  Android TTS技术,也就是Text-to-speech技术。就是通过文字转化与语音的能力,而Android手机平台,也绑定了英文语音引擎,对英文语音提拱了内置的支持。通过输入一段英文,就可以将其以语音的形式播放出来。这也是该平台下的一个创意设计。

       下面我们来看看这是如何实现的:
       第一步:检查TTS数据是否可用:

java代码:
  1. //检查TTS数据是否已经安装并且可用
  2. Intent checkIntent = new Intent();
  3. checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
  4. startActivityForResult(checkIntent, REQ_TTS_STATUS_CHECK);
  5. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  6. if(requestCode == REQ_TTS_STATUS_CHECK)
  7. {
  8. switch (resultCode) {
  9. case TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:
  10. //这个返回结果表明TTS Engine可以用
  11. {
  12. mTts = new TextToSpeech(this, this);
  13. Log.v(TAG, "TTS Engine is installed!");
  14. }
  15. break;
  16. case TextToSpeech.Engine.CHECK_VOICE_DATA_BAD_DATA:
  17. //需要的语音数据已损坏
  18. case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA:
  19. //缺少需要语言的语音数据
  20. case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_VOLUME:
  21. //缺少需要语言的发音数据
  22. {
  23. //这三种情况都表明数据有错,重新下载安装需要的数据
  24. Log.v(TAG, "Need language stuff:"+resultCode);
  25. Intent dataIntent = new Intent();
  26. dataIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
  27. startActivity(dataIntent);
  28. }
  29. break;
  30. case TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL:
  31. //检查失败
  32. default:
  33. Log.v(TAG, "Got a failure. TTS apparently not available");
  34. break;
  35. }
  36. }
  37. else
  38. {
  39. //其他Intent返回的结果
  40. }
  41. }
复制代码

       下一步,初始化TTS。


java代码:

  1. //实现TTS初始化接口
  2. @Override
  3. public void onInit(int status) {
  4. // TODO Auto-generated method stub
  5. //TTS Engine初始化完成
  6. if(status == TextToSpeech.SUCCESS)
  7. {
  8. int result = mTts.setLanguage(Locale.US);
  9. //设置发音语言
  10. if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
  11. //判断语言是否可用
  12. {
  13. Log.v(TAG, "Language is not available");
  14. speakBtn.setEnabled(false);
  15. }
  16. else
  17. {
  18. mTts.speak("This is an example of speech synthesis.", TextToSpeech.QUEUE_ADD, null);
  19. speakBtn.setEnabled(true);
  20. }
  21. }
  22. }
复制代码

        接下来,设置发音语言


java代码:

  1. public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
  2. // TODO Auto-generated method stub
  3. int pos = langSelect.getSelectedItemPosition();
  4. int result = -1;
  5. switch (pos) {
  6. case 0:
  7. {
  8. inputText.setText("I love you");
  9. result = mTts.setLanguage(Locale.US);
  10. }
  11. break;
  12. case 1:
  13. {
  14. inputText.setText("Je t'aime");
  15. result = mTts.setLanguage(Locale.FRENCH);
  16. }
  17. break;
  18. case 2:
  19. {
  20. inputText.setText("Ich liebe dich");
  21. result = mTts.setLanguage(Locale.GERMAN);
  22. }
  23. break;
  24. case 3:
  25. {
  26. inputText.setText("Ti amo");
  27. result = mTts.setLanguage(Locale.ITALIAN);
  28. }
  29. break;
  30. case 4:
  31. {
  32. inputText.setText("Te quiero");
  33. result = mTts.setLanguage(new Locale("spa", "ESP"));
  34. }
  35. break;
  36. default:
  37. break;
  38. }
  39. //设置发音语言
  40. if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
  41. //判断语言是否可用
  42. {
  43. Log.v(TAG, "Language is not available");
  44. speakBtn.setEnabled(false);
  45. }
  46. else
  47. {
  48. speakBtn.setEnabled(true);
  49. }
  50. }
复制代码

       最近点击Button按钮发音:


java代码:

  1. public void onClick(View v) {
  2. // TODO Auto-generated method stub
  3. mTts.speak(inputText.getText().toString(), TextToSpeech.QUEUE_ADD, null);
  4. //朗读输入框里的内容
  5. }
复制代码

posted on 2011-05-30 21:50  android爱好者  阅读(334)  评论(0编辑  收藏  举报

导航