`
stephen830
  • 浏览: 2965173 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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代码:

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

}
 

 

 

 

 

 

 

 

 

 

分享到:
评论
6 楼 f839903061 2013-02-05  

除了不能卸载你的apk
其他都挺好的!
可以用!
5 楼 jobdream001 2012-05-11  
你好,按你的程序我手机安装手说apk,执行程序时就报错,意外停止 QQ345857492
4 楼 zhou_zheng1201 2012-03-07  
  
3 楼 zhou_zheng1201 2012-03-06  
good 
2 楼 gzg 2011-12-29  
这样还是得先安装手说的apk,然后进行二次开发,这样很不好。。。。如何自己开发呢?
1 楼 xff 2011-12-20  
谢谢分享  

相关推荐

    android实现语音朗读 支持中文朗读 TTS 讯飞语音库

    android下实现对文本的语音朗读,TTS技术,支持中文朗读。Android SDK 4.04下测试通过。 附件包含测试源代码及语音库文件 这是语音合成测试工程,如果需要朗读中文请安装中文引擎。我采用的是讯飞语音库,手机版本...

    科大讯飞TTS离线语音包

    科大讯飞TTS离线语音包,供科大讯飞Android TTS引擎使用

    TTS_library_stub_3.0_market.jar

    用于android开发语音识别TTS的jar包。支持朗读中文。为在google无法下载提供方便!

    离线语音合成(TTS)安卓版(Android)

    包含两款支持安卓(Android)离线语音合成(朗读)的演示App源码,采用塘上科技语音合成SDK,支持变声,变音高和语速,无需联网可节省流量。项目请用Eclipse+ADT进行编译,ADT需要v21.1.0-569685或更新的版本。 最新版...

    度秘语音引擎3.0-BaiduSpeechService.apk

    度秘语音引擎,3.0版本,android系统安装后可以选择引擎进行TTS转换。

    TTS_library_stub_3.0_market.jar.rar_TTS library stub.jar_TTS_lib

    一个能说中文tts jar包,辅助开发者开发。Android 从1.6 版本开始支持Text To Speech ,使用的是Pico 语音合成引擎,但是只支持 English 、 French 、 German...因此使用 Android 默认的 TTS Engine 是没法朗读中文的。

    疯狂Android讲义源码

     8.5 自动朗读(TTS) 347  8.6 本章小结 350  第9章 使用ContentProvider实现  第9章 数据共享 351  9.1 数据共享标准:  ContentProvider简介 352  9.1.1 ContentProvider简介 352  9.1.2 Uri简介 353  ...

    疯狂Android讲义.part2

    8.5 自动朗读(TTS) 347 8.6 本章小结 350 第9章 使用ContentProvider实现 第9章 数据共享 351 9.1 数据共享标准: ContentProvider简介 352 9.1.1 ContentProvider简介 352 9.1.2 Uri简介 353 9.1.3 使用...

    疯狂Android讲义.part1

    8.5 自动朗读(TTS) 347 8.6 本章小结 350 第9章 使用ContentProvider实现 第9章 数据共享 351 9.1 数据共享标准: ContentProvider简介 352 9.1.1 ContentProvider简介 352 9.1.2 Uri简介 353 9.1.3 使用...

    PowerWord.exe

    在默认情况下,语音识别的语言为英文,你可以通过长按语音按钮切换语言,当然,你要是不嫌麻烦,在设置中也能进行更改。金山词霸给出的识别结果有时不仅仅只有一个备选项,而相 对来说,字母拼写的方式更加准确。 ...

Global site tag (gtag.js) - Google Analytics