【Android语音合成TTS】云知声离线TTS使用详解

请尊重他人的劳动成果,转载请注明出处:【Android语音合成TTS】云知声离线TTS使用详解

PS.



云知声是2012年创立的,虽然只有1年多的发展历程,但其语音识别技术核心团队已经从业十余年,积累颇丰,这也是为什么能够短短一年时间能够在语音识别领域内做得风生水起的缘故。微语音插件、搜狗语音助手、乐视超级电视、老罗锤子操作系统、触宝输入法,还有网易+电信推出的的易信,用的是云知声的语音识别。2013年,云知声在资本市场的认可度非常高,极受追捧。

目前云知声提供免费的离线TTS,但API比较少,功能也比较简单,合成的语音也比较生硬,如果对合成的语音要求不高的话可以考虑接入。

集成方法:



导入云知声TTS相关jar包和so文件

如图:

为了方便使用我这里将百度语音合成引擎做了进一步的封装,封装成了SpeechUtilOffline以方便调用:

package comjph.tts.usc;

import android.content.Context;
import android.media.AudioManager;
import android.util.Log;
import cn.yunzhisheng.tts.offline.TTSPlayerListener;
import cn.yunzhisheng.tts.offline.basic.ITTSControl;
import cn.yunzhisheng.tts.offline.basic.TTSFactory;

/**
 * 离线语音解析
 *
 * @author JPH
 * @date 2015-4-14 下午7:20:25
 */
public class SpeechUtilOffline implements TTSPlayerListener {
	public static final String appKey = "_appKey_";
	public static final String  secret = "_secret_";
	private ITTSControl mTTSPlayer;
	private Context context;

	public SpeechUtilOffline(Context context) {
		this.context = context;
		init();
	}

	/**
	 * 初始化引擎
	 * @author JPH
	 * @date 2015-4-14 下午7:32:58
	 */
	private void init() {
		mTTSPlayer = TTSFactory.createTTSControl(context, appKey);// 初始化语音合成对象
		mTTSPlayer.setTTSListener(this);// 设置回调监听
		mTTSPlayer.setStreamType(AudioManager.STREAM_MUSIC);//设置音频流
		mTTSPlayer.setVoiceSpeed(2.5f);//设置播报语速,播报语速,数值范围 0.1~2.5 默认为 1.0
		mTTSPlayer.setVoicePitch(1.1f);//设置播报音高,调节音高,数值范围 0.9~1.1 默认为 1.0
		mTTSPlayer.init();// 初始化合成引擎
	}
	/**
	 * 停止播放
	 * @author JPH
	 * @date 2015-4-14 下午7:50:35
	 */
	public void stop(){
		mTTSPlayer.stop();
	}

	/**
	 * 播放
	 *
	 * @author JPH
	 * @date 2015-4-14 下午7:29:24
	 */
	public void play(String content) {
		mTTSPlayer.play(content);
	}

	/**
	 * 释放资源
	 *
	 * @author JPH
	 * @date 2015-4-14 下午7:27:56
	 */
	public void release() {
		// 主动释放离线引擎
		mTTSPlayer.release();
	}

	@Override
	public void onPlayEnd() {
		// 播放完成回调
		Log.i("msg", "onPlayEnd");
	}

	@Override
	public void onPlayBegin() {
		// 开始播放回调
		Log.i("msg", "onPlayBegin");
	}

	@Override
	public void onInitFinish() {
		// 初始化成功回调
		Log.i("msg", "onInitFinish");
	}

	@Override
	public void onError(cn.yunzhisheng.tts.offline.common.USCError arg0) {
		// 语音合成错误回调
		Log.i("msg", "onError");
	}

	@Override
	public void onCancel() {
		// 取消播放回调
		Log.i("msg", "onCancel");
	}

	@Override
	public void onBuffer() {
		// 开始缓冲回调
		Log.i("msg", "onBuffer");

	}
}

使用方法:

package comjph.tts.usc;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;

public class TTSOfflineActivity extends Activity implements OnClickListener {
	private EditText mTTSText;
	private SpeechUtilOffline offline;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_offline_tts);
		mTTSText = (EditText) findViewById(R.id.textViewResult);
		offline=new SpeechUtilOffline(this);
	}
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btnPlay:
			offline.play(mTTSText.getText().toString());
			break;
		case R.id.btnStop:
			offline.stop();
			break;
		default:
			break;
		}

	}
}

Demo下载地址.



http://download.csdn.net/detail/fengyuzhengfan/8595643

推荐阅读:

【Android语音合成TTS】国内主流引擎对比

【Android语音合成TTS】百度语音接入方法,和使用技巧详解

时间: 2024-10-20 05:50:57

【Android语音合成TTS】云知声离线TTS使用详解的相关文章

Android SDK离线安装方法详解(加速安装)

AndroidSDK在国内下载一直很慢··有时候通宵都下不了一点点,最后只有选择离线安装,现在发出离线安装地址和方法,希望对大家有帮助 一,首先下载SDK的安装包,android-sdk_r10-windows.zip(安装工具)解压到目录,如我的目录D:\programs\android-sdk-windows 下载地址:http://dl.google.com/android/android-sdk_r10-windows.zip(目前最新版) 二,然后新建以下 几个文件夹 platform

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756989) 前言:现在很多APP都需要云的功能,也就是通过网络与服务器交换数据.有的采用tcp/ip协议,但是你必须拥有一个固定ip的服务器,可以购买阿里云服务器之类的,就是贵了点.如果只是个人的小应用的的话可以采用新浪云平台这种免费的服务器,采用的协议是http协议,具体实现方式如下: 方式一.在线

Android应用盈利广告平台的嵌入方法详解

一.如何学习Android   android开发(这里不提platform和底层驱动)你需要对Java有个良好的基础,一般我们用Eclipse作为开发工具.对于过多的具体知识详细介绍我这里不展开,我只说我个人的学习方法和本人以为的好的步骤.   1.搭建环境:包括对Java和Eclipse及模拟器(有真机再好不过)的熟悉,对于android的tools和adb命令可以放到后面熟悉了解.   2.从helloworld开始:了解一个基本的android应用代码包含哪些,各部分做什么用.(这里只要

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

Android中的几种网络请求方式详解

http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用中使用AsyncHttpClient来异步网络数据 http://blog.csdn.net/sdvch/article/details/13615605 Android中的几种网络请求方式详解,布布扣,bubuko.com

Android中内容观察者的使用---- ContentObserver类详解

  转载请注明出处:http://blog.csdn.net/qinjuning 前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了 ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结. ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中的触发器(Trigger),当ContentObs

[Android 新特性] 安卓4.4新特性详解

在本月初,谷歌的5太子google  nexus5正式发布了,还给大家带来了全新的安卓android4.4的操作系统,并且官网给大家带来了新的说法,就是安卓4.4会比之前的系统更加省电,这个到底是为什么呢?网侠小编就来说说安卓4.4的为何省电的工作机制. 首先,我们要搞清楚一个问题,那就是什么是Dalvik? 在整个Android 4.4的更新特性中,最引人瞩目的应该就是虚拟机由Dalvik转成ART,也就是“中间件”的变更(Midware).先来看看什么是Dalvik. 如图,Dalvik虚拟

Android研究之英特尔 Android* 开发人员指南上的对等应用详解

简介 当没有 Wi-Fi 访问点或互联网访问时,Android* 应用可能需要对等连接在两台或多台 Android* 设备之间建立连接. 比如,文件共享应用和多人游戏. 该功能可使用 NFC.蓝牙或 Wi-Fi 对等技术来实施. 特定案例中的首选技术需要根据所需的距离.连接速度.功耗和独特的技术特性来决定. 本文将对 Wi-Fi 对等技术进行评估. Wi-Fi 对等(P2P)支持具备适当应用的 Android 4.0 或更高版本在没有接入点的情况下通过 Wi-Fi 彼此连接. Android W

【Android基础】内容提供者ContentProvider的使用详解

1.什么是ContentProvider 首先,ContentProvider(内容提供者)是android中的四大组件之一,但是在一般的开发中,可能使用的比较少. ContentProvider为不同的软件之间数据共享,提供统一的接口.也就是说,如果我们想让其他的应用使用我们自己程序内的数据,就可以使用ContentProvider定义一个对外开放的接口,从而使得其他的应用可以使用咱们应用的文件.数据库内存储的信息.当然,自己开发的应用需要给其他应用共享信息的需求可能比较少见,但是在Andro