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文件
java代码:
package com.zhouzijing.android.demo;
import com.shoushuo.android.tts.ITts;
import com.shoushuo.android.tts.ITtsCallback;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class SpeechActivity extends Activity {
private EditText edtSpeectText;
private Button btnSpeechGo;
private Context context;
private ITts ttsService;
private boolean ttsBound;
/**
* 定义Handler.
*/
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Toast.makeText(context, " 我的话说完了 ", Toast.LENGTH_SHORT).show();
btnSpeechGo.setEnabled(true);
}
};
/**
* 回调参数.
*/
private final ITtsCallback ttsCallback = new ITtsCallback.Stub() {
//朗读完毕.
@Override
public void speakCompleted() throws RemoteException {
handler.sendEmptyMessage(0);
}
};
/**
* tts服务连接.
*/
private final ServiceConnection ttsConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
try {
//注册回调参数
ttsService.unregisterCallback(ttsCallback);
} catch (RemoteException e) {
e.printStackTrace();
}
ttsService = null;
ttsBound = false;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
ttsService = ITts.Stub.asInterface(service);
ttsBound = true;
try {
//tts服务初始化
ttsService.initialize();
//撤销回调参数.
ttsService.registerCallback(ttsCallback);
} catch (RemoteException e) {
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.speech_text);
context = this;
edtSpeectText = (EditText) findViewById(R.id.edtSpeectText);
btnSpeechGo = (Button) findViewById(R.id.btnSpeechGo);
}
/**
* 按钮:朗读.
*
* @param v
*/
public void speechText(View v) {
v.setEnabled(false);
try {
ttsService.speak(edtSpeectText.getText().toString(),
TextToSpeech.QUEUE_FLUSH);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
protected void onDestroy() {
if (ttsBound) {
ttsBound = false;
//撤销tts服务
this.unbindService(ttsConnection);
}
super.onDestroy();
}
@Override
protected void onStart() {
super.onStart();
if (!ttsBound) {
String actionName = "com.shoushuo.android.tts.intent.action.InvokeTts";
Intent intent = new Intent(actionName);
//绑定tts服务
this.bindService(intent, ttsConnection, Context.BIND_AUTO_CREATE);
}
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
老一套做一个简易的游戏菜单,并且完善他的功能,选一开始游戏,选0退出游戏,超出就重选。 目录做完开始实现游戏内容,先做一个棋盘来放我们的雷和我们排查雷的情况,但是在一个棋盘上既要放雷,又要来存放我们排查的雷,完成起来就很乱,那么我们是不是就可以做两个棋盘,一个…