Text-to-speech 入门与进阶学习笔记(android)
2011-09-10 23:27
567 查看
1,入门:让TEXT朗读起来
![](http://blog.51cto.com/attachment/201202/222639811.jpg)
//1,先写一个用来检查tts是否安装的方法 private final static int CHECK_CODE = 1; public void checkTts(){ Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent, CHECK_CODE); } //创建一个TTS private TextToSpeech mTts; //这个自己先去了解下onActivityResult是怎么回事,这里不作详解 @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(requestCode == CHECK_CODE){ if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){ //成功创建一个TTS mTts = new TextToSpeech(this, this); }else{ //否则安装一个 Intent installIntent = new Intent(); installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity (installIntent); } } } //2,让TTS朗读起来 //onCreate方法中 //检查TTS是否正常 checkTts(); //创建用组件 private speakValue = (EditText) findViewById(R.id.speakValue); private speakButton = (Button) findViewById(R.id.sayHello); speakButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String text = speakValue.getText().toString(); Log.d("result","text-->" +text); sayTts(text); } }); //TTs朗读用 private void sayTts(String text){ //最简单的例子 mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null); } //补充,使用TTS朗读,一定要实现OnInitListener 接口 //TTs对象创建后初始化 @Overridepublic void onInit(int status) { if(status == TextToSpeech.SUCCESS){ //设置语言区域 int result = mTts.setLanguage(Locale.US); //如果是不支持语言 if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){ Log.e("error","不支持"); } } }
![](http://blog.51cto.com/attachment/201202/222646790.png)
就这么点代码就可以正常运行了…
2,进阶使用:改变我们朗读播放的类型,回调函数的使用与自定义文字发音
1,更改播放的流类型(暂且这样说,希望,有人解释一下)
//更改播放使用的流类型 //在sayTts作以下修改 //TTs朗读用 private void sayTts(String text) { HashMap<String, String> myAlarm = new HashMap(); //把播放类型,通过闹钟流实现 myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM)); //你播放的tts在音频播放的闹钟类型流中 mTts.speak(text, TextToSpeech.QUEUE_FLUSH, myAlarm); //英语原文是这样,我了解的就是以上我注释的内容 //我感觉不是很了解,希望有人帮帮 //On Android, each audio stream that is played is associated with one //stream type, as defined in android.media.AudioManager. For a talking //alarm clock, we would like our text to be played on the //AudioManager.STREAM_ALARM stream type so that it respects the alarm //settings the user has chosen on the device. }
2,回调函数的使用
//在sayTts()中实现.. //需要实现OnUtteranceCompletedListener这个接口 //TTs朗读用 private Toast toast; prvate Context context = getApplicationContext(); private void sayTts(String text) { HashMap<String, String> myAlarm = new HashMap(); mTts.setOnUtteranceCompletedListener(this); myAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "me too"); toast = Toast.makeText(context, "me too", Toast.LENGTH_LONG); //最简单的例子 mTts.speak(text, TextToSpeech.QUEUE_FLUSH, myAlarm); } //回调函数 @Overridepublic void onUtteranceCompleted(String utteranceId) { speakPlayBack(utteranceId); } private void speakPlayBack(String str) { Log.d("result","playBack-->" + str); toast.show(); }
![](http://blog.51cto.com/attachment/201202/222653366.png)
3,录制TTS朗读保存到SD卡中
//把TTS朗读结果保存 private void sayTofile(String text) { HashMap<String, String> ttsRender = new HashMap<String, String>(); String destFileName = "/sdcard/tts/"+text+".wav"; ttsRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, text); mTts.synthesizeToFile(text, ttsRender, destFileName); } //在
![](http://blog.51cto.com/attachment/201202/222659919.png)
你就可以看到你刚才朗读的Text被保存了
4,自定义Text发音
//自定义文字播放 private void sayTrue(String text) { String destFileName = "/sdcard/tts/"+text+".wav"; mTts.addSpeech(text, destFileName); mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null); } //在onclick方法中运行 sayTrue();
![](http://blog.51cto.com/attachment/201202/222706828.png)
亲测,MP3也可以播放…
5,销毁
@Overrideprotected void onDestroy() { super.onDestroy(); if(mTts != null){ mTts.stop(); mTts.shutdown(); } }
相关文章推荐
- Text-to-speech 入门与进阶学习笔记(android)
- Text-to-speech 入门与进阶学习笔记(android)
- android学习--语音识别(Speech To text)
- zxing学习笔记 android入门
- android中使用WebView报出错误 Activity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connecti
- android 入门学习笔记 利用bundle实现android,activity间消息的传递
- 我的Android进阶之旅------>Android中编解码学习笔记
- 一个 Android程序员的小程序入门学习笔记『二』(template 模版的使用注意)
- Android 学习笔记之AndBase框架学习(六) PullToRefrech 下拉刷新的实现
- Android入门学习笔记(三)|Activity和Intent
- 【Android进阶学习】监听EditText的变化
- 介绍Text-To-Speech在Android中的用法
- Android TTS 英文或中文(要下载中文支持包)转语音 使用TextToSpeech
- linq to sql 增删改查入门编[linq学习笔记一]
- Android 初学入门代码注释 学习笔记001 16.03.18
- Android进阶学习-使用Canvas自定义简单TextView(1)
- Android 进阶学习笔记-----序列化和反序列化的理解
- Android 学习笔记(十四):Activity-AutoCompleteTextView
- Android开发学习笔记:EditText的属性介绍
- delphi xe5 android tts(Text To Speech)