Android 通过手说tts中文语音包实现中文朗读
Android通过手说tts中文语音包实现中文朗读
关于手说tts中文语音包的详细资料可以查看官网http://shoushuo.com/index.html
手说TTS,是Android平台下的中文语音引擎,提供了中文文本到语音的转换。
使用手说TTS进行中文文本的朗读,包括中文简繁体、阿拉伯数字、英文字母及一些符号的混读。并且处理了中文的多音字和音调转换等问题。
开发人员可以使用手说TTS来开发Android平台下需要中文语音的应用程序。
开发准备:
第一步:安装手说TTS安装包
从官网http://shoushuo.com/sstts.html下载手说TTS安装包:ShoushuoTTS.apk。
安装到真实手机或者手机模拟器中。
第二步:下载手说TTS客户类库包
下载手说TTS客户类库包:shoushuotts.jar。
将该jar文件引入到你的应用中。
第二步:demo实现
xml文件
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/edtSpeectText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="太阳从东边升起,慢慢的露出红彤彤的笑脸。"
/>
<Button
android:id="@+id/btnSpeechGo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="开始朗读"
android:onClick="speechText"
/>
</LinearLayout>
java代码:
Java代码
packagecom.zhouzijing.android.demo;
importcom.shoushuo.android.tts.ITts;
importcom.shoushuo.android.tts.ITtsCallback;
importandroid.app.Activity;
importandroid.content.ComponentName;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.content.ServiceConnection;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.IBinder;
importandroid.os.Message;
importandroid.os.RemoteException;
importandroid.speech.tts.TextToSpeech;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
publicclassSpeechActivityextendsActivity{
privateEditTextedtSpeectText;
privateButtonbtnSpeechGo;
privateContextcontext;
privateITtsttsService;
privatebooleanttsBound;
/**
*定义Handler.
*/
privatefinalHandlerhandler=newHandler(){
@Override
publicvoidhandleMessage(Messagemsg){
Toast.makeText(context,"我的话说完了",Toast.LENGTH_SHORT).show();
btnSpeechGo.setEnabled(true);
}
};
/**
*回调参数.
*/
privatefinalITtsCallbackttsCallback=newITtsCallback.Stub(){
//朗读完毕.
@Override
publicvoidspeakCompleted()throwsRemoteException{
handler.sendEmptyMessage(0);
}
};
/**
*tts服务连接.
*/
privatefinalServiceConnectionttsConnection=newServiceConnection(){
@Override
publicvoidonServiceDisconnected(ComponentNamearg0){
try{
//注册回调参数
ttsService.unregisterCallback(ttsCallback);
}catch(RemoteExceptione){
e.printStackTrace();
}
ttsService=null;
ttsBound=false;
}
@Override
publicvoidonServiceConnected(ComponentNamename,IBinderservice){
ttsService=ITts.Stub.asInterface(service);
ttsBound=true;
try{
//tts服务初始化
ttsService.initialize();
//撤销回调参数.
ttsService.registerCallback(ttsCallback);
}catch(RemoteExceptione){
}
}
};
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.speech_text);
context=this;
edtSpeectText=(EditText)findViewById(R.id.edtSpeectText);
btnSpeechGo=(Button)findViewById(R.id.btnSpeechGo);
}
/**
*按钮:朗读.
*
*@paramv
*/
publicvoidspeechText(Viewv){
v.setEnabled(false);
try{
ttsService.speak(edtSpeectText.getText().toString(),
TextToSpeech.QUEUE_FLUSH);
}catch(RemoteExceptione){
e.printStackTrace();
}
}
@Override
protectedvoidonDestroy(){
if(ttsBound){
ttsBound=false;
//撤销tts服务
this.unbindService(ttsConnection);
}
super.onDestroy();
}
@Override
protectedvoidonStart(){
super.onStart();
if(!ttsBound){
Stringactionname="com.shoushuo.android.tts.intent.action.InvokeTts";
Intentintent=newIntent(actionName);
//绑定tts服务
this.bindService(intent,ttsConnection,Context.BIND_AUTO_CREATE);
}
}
}