Android文字转语音TTS离线程序

android原生rom,本自带tts语音,在这基础上可以直接调用使用即可。源码如下。

public class TTSdemo extends Activity implements OnInitListener{

	/** Called when the activity is first created. */
	private EditText inputText = null;
	private Button speakBtn = null;
	/**
	 * default state : CHECK_VOICE_DATA_FAIL = 0;
	 */
	private static final int REQ_TTS_STATUS_CHECK = 0;
	private static final String TAG = "TTS Demo";
	private TextToSpeech mTts;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		try {//"这里注意,如果本机tts没有安装,这里就会抓获到异常的。tts使用的时候也要注意非空验证"
			// 检查TTS数据是否已经安装并且可用
			Intent checkIntent = new Intent();
			checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);// 检查TTS状态

			PackageManager pm = getPackageManager();
			ResolveInfo resolveInfo = pm.resolveActivity( checkIntent, PackageManager.MATCH_DEFAULT_ONLY );
			if( resolveInfo == null ) {
				// Not able to find the activity which should be started for this intent
				Log.e("----resolveInfo--------", "" + " Not able to find the activity which should be started for this intent");
			} else {
				startActivityForResult(checkIntent, REQ_TTS_STATUS_CHECK);
			}

		} catch (ActivityNotFoundException e) {
			Log.e(TAG, "Oops! The function is not available in your device." + e.fillInStackTrace());

		}

		inputText = (EditText) findViewById(R.id.inputText);
		speakBtn = (Button) findViewById(R.id.speakBtn);
		inputText.setText("This is an example of speech synthesis.");
		speakBtn.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				mTts.speak(inputText.getText().toString(), TextToSpeech.QUEUE_ADD, null);
				// 朗读输入框里的内容
			}
		});

	}

	// 实现TTS初始化接口
	@Override
	public void onInit(int status) {
		// TODO Auto-generated method stub
		// TTS Engine初始化完成
		if (status == TextToSpeech.SUCCESS) {
			int result = mTts.setLanguage(Locale.US);
			// 设置发音语言
			if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
			// 判断语言是否可用
			{
				Log.v(TAG, "Language is not available");
				speakBtn.setEnabled(false);
			} else {
				mTts.speak("This is an example of speech synthesis.", TextToSpeech.QUEUE_ADD, null);
				speakBtn.setEnabled(true);
			}
		}

	}

	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == REQ_TTS_STATUS_CHECK) {
			switch (resultCode) {
			case TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:
			// 这个返回结果表明TTS Engine可以用
			{
				mTts = new TextToSpeech(this, this);
				Log.v(TAG, "TTS Engine is installed!");

			}

				break;
			case TextToSpeech.Engine.CHECK_VOICE_DATA_BAD_DATA:
				// 需要的语音数据已损坏
			case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA:
				// 缺少需要语言的语音数据
			case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_VOLUME:
			// 缺少需要语言的发音数据
			{
				// 这三种情况都表明数据有错,重新下载安装需要的数据
				Log.v(TAG, "Need language stuff:" + resultCode);
				Intent dataIntent = new Intent();
				dataIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
				startActivity(dataIntent);

			}
				break;
			case TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL:
				// 检查失败
			default:
				Log.v(TAG, "Got a failure. TTS apparently not available");
				break;
			}
		} else {
			// 其他Intent返回的结果
		}
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		if (mTts != null)
		// activity暂停时也停止TTS
		{
			mTts.stop();
		}
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		// 释放TTS的资源
		if (mTts != null)
		mTts.shutdown();
	}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/inputText"
        android:hint="@string/hint"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

    <Button
        android:id="@+id/speakBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"

        />

</LinearLayout>

以上源码粘贴进入项目就没有问题了。但是这只是英文。而且对于手机的tts依赖很高,如果手机没有装tts,那么这个程序时不起作用的,无法发音。

所有,第二种,从网络寻找 离线“语音合成”,   大家都在说什么  讯飞XX ,百度XX等等,  百度不知道。至少讯飞亲自测试了。  就是一个收费的垃圾??

根本没有免费,而且还是在线的。如下。

于是继续找寻,暂时找到了一个离线的 ‘语音合成’demo,支持中文语音,但是发现一个问题,对于单词都读成一个个字母了。  暂时没有调整。 项目如下。

诸如此类的大量文章,手机如果没有tts,都是无法运行的(http://blog.csdn.net/ichliebephone/article/details/6373184#java)

我找到的,离线语音包的demo现在分享出来,共同研究。   下载地址:http://download.csdn.net/detail/flyingsir_zw/9453049

后续会继续更新。

时间: 2024-09-04 10:58:29

Android文字转语音TTS离线程序的相关文章

Android 基于百度语音的语音交互功能(推荐)_Android

项目里面用到了语音唤醒功能,前面一直在用讯飞的语音识别,本来打算也是直接用讯飞的语音唤醒,但是讯飞的语音唤醒要收费,试用版只有35天有效期.只好改用百度语音,百度语音所有功能免费,功能也比较简单实用,包括语音识别,语音合成和语音唤醒,正好可以组成一套完整的语音交互功能. 效果图: 首先是语音唤醒功能,说出关键词即可叫语音识别,唤醒成功会有语音提示,这里采用了百度语音的合成功能.然后百度语音识别会根据wifi情况自动切换在线或者离线识别,但是离线识别只能识别已经导入的关键词,而且离线第一次识别需要

与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令

原文:与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令 [源码下载] 与众不同 windows phone (45) - 8.0 语音: TTS, 语音识别, 语音命令 作者:webabcd 介绍与众不同 windows phone 8.0 之 语音 TTS(Text To Speech) 语音识别 语音命令 示例1.演示 TTS(Text To Speech)的应用Speech/TTS.xaml <phone:PhoneApplicationP

android-急求文字转语音的模块

问题描述 急求文字转语音的模块 最近弄一个程序,在程序中加一个把文字转换成语音的功能,但是一直找不到,有哪位知道或者做个这个的麻烦告诉我 多谢 解决方案 微信5.2 for iPhone 全体验:新增图片墙.语音转文字,可搜索聊天记录,群聊被@会收到提醒 解决方案二: 最近刚好也是在接触语音交互方面的东西,文字转换成语音还是挺多的,讯飞语音和云知声应该都不错

Android实现客户端语音动弹界面实例代码

今天为大家介绍一下语音动弹界面的实现,新版本的客户端大家应该都看过了,这里我就只简单的介绍一下控件布局了.你可以在这里看到本控件的完整源码:http://git.oschina.net/oschina/android-app/blob/master/osc-android-app/src/net/oschina/app/widget/RecordButton.java 首先,整体界面分三部分,最上层自定义ActionBar相信不需要我讲大家就能看出来了. 中间部分是文字动弹部分,主体就是一个设置

求android文字识别能成功的demo

问题描述 求android文字识别能成功的demo 关于android 文字识别 ,好像除了5个相关jar包以外,到现在都没找到个demo,解决这个问题 啊 解决方案 http://www.cnblogs.com/hangxin1940/archive/2012/01/13/2321507.htmlhttp://blog.csdn.net/xieyan0811/article/details/5931619http://www.pudn.com/downloads524/sourcecode/c

与众不同windows phone (45) 8.0 语音: TTS, 语音识别, 语音命令

介绍 与众不同 windows phone 8.0 之 语音 TTS(Text To Speech) 语音识别 语音命令 示例 1.演示 TTS(Text To Speech)的应用 Speech/TTS.xaml <phone:PhoneApplicationPage x:Class="Demo.Speech.TTS" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmln

急求解决-求一个关于甲骨文文字识别的程序包,或者有关图像,文字的的识别的程序包。

问题描述 求一个关于甲骨文文字识别的程序包,或者有关图像,文字的的识别的程序包. 求一个关于甲骨文文字识别的程序包,或者有关图像,文字的的识别,文物的拼接累似的程序包. 解决方案 http://blog.csdn.net/manji_lee/article/details/9002228

Android实现的截屏小程序示例_Android

本文实例讲述了Android实现的截屏小程序.分享给大家供大家参考,具体如下: 先看截图,不过这个截屏还不够完整,头上的statusbar没有,呈黑色. 多按了几次,就成这样了,呵呵. package com.test; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Bitmap.Config; import

Android编程之退出整个应用程序的方法_Android

本文实例讲述了Android编程之退出整个应用程序的方法.分享给大家供大家参考,具体如下: 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序,没有释放系统资源.有时跳转的activity较多时,还需要多次按返回键,这样感觉一点都不爽. 后面添加了一个菜单返回功能键,这个方法也只能用system.exit(0)来关闭当前活动的Activity,代码如下: p