Android TTS技术 android tts
创始人
2024-07-30 18:01:07
0

Android TTS技术,也就是Text-to-speech技术。TTS技术对文本文件进行实时转换,转换时间之短可以秒计算。在其特有智能语音控制器作用下,文本输出的语音音律流畅,使得听者在听取信息时感觉自然,毫无机器语音输出的冷漠与生涩感。TTS语音合成技术即将覆盖国标一、二级汉字,具有英文接口,自动识别中、英文,支持中英文混读。所有声音采用真人普通话为标准发音,实现了120-150个汉字/秒的快速语音合成,朗读速度达3-4个汉字/秒,使用户可以听到清晰悦耳的音质和连贯流畅的语调。

下面我们来看看这是如何实现的:

***步:检查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. }   

***点击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. }  

【编辑推荐】

Android环境变量的设置

Android轻松实现语音识别

Android开发中插入新的Activity

Android开发之旅:Android架构

在Android应用程序中使用Internet数据

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...