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);

}

}

}

相关推荐