texttospeech(Text-to-speech 入门与进阶学习笔记)

发布时间:2025-12-10 19:28:29 浏览次数:15

Text-to-speech 入门与进阶学习笔记-

Text-to-speech 入门与进阶学习笔记(android)1,入门:让TEXT朗读起来//1,先写一个用来检查tts是否安装的方法privatefinalstaticintCHECK_CODE=1;publicvoidcheckTts(){IntentcheckIntent=newIntent();checkI…

1,入门:让TEXT朗读起来

 

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

//1,先写一个用来检查tts是否安装的方法privatefinalstaticintCHECK_CODE=1; publicvoidcheckTts(){ IntentcheckIntent=newIntent();checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent,CHECK_CODE);} //创建一个TTS privateTextToSpeechmTts; //这个自己先去了解下onActivityResult是怎么回事,这里不作详解 @OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ //TODOAuto-generatedmethodstubsuper.onActivityResult(requestCode,resultCode,data); if(requestCode==CHECK_CODE){ if(resultCode==TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){ //成功创建一个TTS mTts=newTextToSpeech(this,this); }else{ //否则安装一个 IntentinstallIntent=newIntent();installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);startActivity (installIntent);}}} //2,让TTS朗读起来 //onCreate方法中 //检查TTS是否正常checkTts(); //创建用组件privatespeakValue=(EditText) findViewById(R.id.speakValue); privatespeakButton=(Button) findViewById(R.id.sayHello); speakButton.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub Stringtext=speakValue.getText().toString(); Log.d(“result”,“text–>”+text);sayTts(text);}}); //TTs朗读用privatevoidsayTts(Stringtext){ //最简单的例子mTts.speak(text,TextToSpeech.QUEUE_FLUSH,null); } //补充,使用TTS朗读,一定要实现OnInitListener 接口 //TTs对象创建后初始化 @OverridepublicvoidonInit(intstatus){ if(status==TextToSpeech.SUCCESS){ //设置语言区域intresult=mTts.setLanguage(Locale.US); //如果是不支持语言 if(result==TextToSpeech.LANG_MISSING_DATA||result==TextToSpeech.LANG_NOT_SUPPORTED){ Log.e(“error”,“不支持”);}}}

就这么点代码就可以正常运行了…

2,进阶使用:改变我们朗读播放的类型,回调函数的使用与自定义文字发音

1,更改播放的流类型(暂且这样说,希望,有人解释一下)

  //更改播放使用的流类型  //在sayTts作以下修改  //TTs朗读用privatevoidsayTts(Stringtext){HashMap<String,String>myAlarm=newHashMap();  //把播放类型,通过闹钟流实现myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM,String.valueOf(AudioManager.STREAM_ALARM));  //你播放的tts在音频播放的闹钟类型流中mTts.speak(text,TextToSpeech.QUEUE_FLUSH,myAlarm);  //英语原文是这样,我了解的就是以上我注释的内容  //我感觉不是很了解,希望有人帮帮   //OnAndroid,eachaudiostreamthatisplayedisassociatedwithone    //streamtype,asdefinedinandroid.media.AudioManager.Foratalking    //alarmclock,wewouldlikeourtexttobeplayedonthe   //AudioManager.STREAM_ALARMstreamtypesothatitrespectsthealarm   //settingstheuserhaschosenonthedevice.   }  

2,回调函数的使用

  //在sayTts()中实现..  //需要实现OnUtteranceCompletedListener这个接口  //TTs朗读用  privateToasttoast;prvateContextcontext=getApplicationContext();  privatevoidsayTts(Stringtext){HashMap<String,String>myAlarm=newHashMap();mTts.setOnUtteranceCompletedListener(this);   myAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,“metoo”);    toast=Toast.makeText(context,“metoo”,Toast.LENGTH_LONG);   //最简单的例子mTts.speak(text,TextToSpeech.QUEUE_FLUSH,myAlarm);}  //回调函数@OverridepublicvoidonUtteranceCompleted(StringutteranceId){speakPlayBack(utteranceId);}   privatevoidspeakPlayBack(Stringstr){Log.d(“result”,“playBack–>”+str);toast.show();}    

3,录制TTS朗读保存到SD卡中

  //把TTS朗读结果保存  privatevoidsayTofile(Stringtext){  HashMap<String,String>ttsRender=newHashMap<String,String>();   StringdestFileName=“/sdcard/tts/”+text+“.wav”;ttsRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,text);mTts.synthesizeToFile(text,ttsRender,destFileName);   }  //在    

你就可以看到你刚才朗读的Text被保存了

4,自定义Text发音

  //自定义文字播放  privatevoidsayTrue(Stringtext){   StringdestFileName=“/sdcard/tts/”+text+“.wav”;mTts.addSpeech(text,destFileName);    mTts.speak(text,TextToSpeech.QUEUE_FLUSH,null);}   //在onclick方法中运行sayTrue();   

亲测,MP3也可以播放…

5,销毁

  @OverrideprotectedvoidonDestroy(){super.onDestroy();   if(mTts!=null){   mTts.stop();  mTts.shutdown();}}


需要做网站?需要网络推广?欢迎咨询客户经理 13272073477