Android 云之声离线语音合成
离线语音解析
public class SpeechUtilOffline implements TTSPlayerListener {
public static final String appKey = "_appKey_";
private ITTSControl mTTSPlayer;
private Context context;
private SoundUtil soundUtil;
public SpeechUtilOffline(Context context) {
this.context = context;
init();
}
/**
* 初始化引擎
* @author JPH
* @date 2015-4-14 下午7:32:58
*/
private void init() {
soundUtil=new SoundUtil(context);
mTTSPlayer = TTSFactory.createTTSControl(context, appKey);// 初始化语音合成对象
mTTSPlayer.setTTSListener(this);// 设置回调监听
mTTSPlayer.setStreamType(AudioManager.STREAM_MUSIC);//设置音频流
mTTSPlayer.setVoiceSpeed(0.5f);//设置播报语速,播报语速,数值范围 0.1~2.5 默认为 1.0
mTTSPlayer.setVoicePitch(0.9f);//设置播报音高,调节音高,数值范围 0.9~1.1 默认为 1.0
mTTSPlayer.init();// 初始化合成引擎
}
/**
* 停止播放
*/
public void stop(){
mTTSPlayer.stop();
}
/**
* 播放
*/
public void play(String content) {
mTTSPlayer.play(content);
}
/**
* 释放资源
*/
public void release() {
mTTSPlayer.release();
}
@Override
public void onPlayEnd() {
// 播放完成回调
soundUtil.playSound(1);
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");
}
}
云之声离线Jar包和so文件下载地址
Android SoundPool语音播放类
public class SoundUtil {
private static HashMap<Integer, Integer> musicId;
private static SoundPool mSoundPool;
public SoundUtil(Context context){
mSoundPool=new SoundPool(12, 0,5);
musicId= new HashMap<>();
musicId.put(1, mSoundPool.load(context, R.raw.tsc_success, 1));
musicId.put(2, mSoundPool.load(context, R.raw.check_failure, 1));
}
//播放
public void playSound(int redId) {
//音频资源 左声道音量 右声道音量 优先级 循环播放次数 回放速度:该值在0.5-2.0之间 1为正常速度
mSoundPool.play(musicId.get(redId),1,1, 0, 0, 1);
}
//暂停
public void pause(int redId){
mSoundPool.pause(redId);
}
//重新开始
public void resume(int redId){
mSoundPool.resume(redId);
}
//停止
public void stop(int redId){
mSoundPool.stop(redId);
}
//移除一个音频
public void unload(int redId){
mSoundPool.unload(redId);
}
//释放所有音频资源
public void release(){
mSoundPool.release();
}
}
Android 云之声离线语音合成的更多相关文章
- Android 开发 框架系列 百度语音合成
官方文档:http://ai.baidu.com/docs#/TTS-Android-SDK/6d5d6899 官方百度语音合成控制台:https://cloud.baidu.com/product/ ...
- Android之 -WebView实现离线缓存阅读
前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有 ...
- 利用HTML5开发Android(6)---构建HTML5离线应用
需要提供一个cache manifest文件,理出所有需要在离线状态下使用的资源例如 Manifest代码 CACHE MANIFEST #这是注释 images/sound-icon.png ima ...
- Android 讯飞语音之语音合成(在线有声朗读)
原文:http://www.cnblogs.com/scetopcsa/p/3845427.html 在线语音合成的使用方法: 首先下载相关的sdk,这个网址里有多种版本,我选择的Android. h ...
- android学习——ADT的离线安装
前一篇讲解了ADT的在线安装,不过有的时候在线在线安装的速度很慢.所以今天学习一下ADT的离线安装: 首先 下载与SDK相对应的ADT(如果SDK是最新版的就下最新版ADT否则就把SDK更新到最新版以 ...
- Android API 文档 离线秒开方法
http://blog.csdn.net/haifengzhilian/article/details/39898627 也是最近才看Android开发,但是,它的API文档无论是在线还是离线的,实在 ...
- Android Studio下载及离线升级方法
由于众所周知的原因,android官网无法访问,所以我们要用到翻.墙.工具,我用的是自.由.门,大家自行搜索下载. android studio下载地址: https://dl.google.com/ ...
- Android SDK 2.2 离线安装
android的普通安装方法非常easy,不必多说. 因为普通安装方法速度非常慢,对一般的用户要数小时的时间等待. 为更高速安装,能够採取离线安装方法.即,先分别下载所需包,再安装. 一,首先下载SD ...
- 【转】Android学习系列–App离线下载功能实现
原文:http://www.cnblogs.com/qianxudetianxia/archive/2011/07/20/2108965.html 宜未雨而绸缪,毋临渴而掘井.----朱用纯<治 ...
随机推荐
- [git] 文件操作
文件操作 1. git add 1.1 将未被git管理的文件添加到暂存区 一次可添加多个文件 文件夹,中间用空格隔开 git add 文件/文件夹 文件/文件夹 再次执行 git sta ...
- Servlet-转发和重定向的区别
实际发生位置不同,地址栏不同 转发是发生在服务器上的 转发是由服务器进行跳转的,细心的朋友会发现,在转发的时候,浏览器的地址栏是没有发生变化的,在我访问Servlet111的时候,即使跳转到了Serv ...
- web自动化测试(java)---测试过程中遇到的错误合集
摸索测试,不管是安装.调测第一个用例都会遇到各种各样的问题,或是自己的问题或是程序本身设置问题 只有把所有问题记录下来,才对得起自己的经历 1.设置firefox的执行文件错误 Exception i ...
- 使用maven构建多模块项目,分块开发
在多人使用Maven协作开发项目时,尤其是稍微上点规模的项目,每个RD的工作都细分到具体功能和模块,有些模块甚至还要单独部署. 我们假设有这样一个商城项目,包括以下几个模块: 商城前台(shop) 管 ...
- mysql 开发进阶篇系列 38 mysql日志之错误日志log-error
一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志.这此日志记录着数据库在不同方面的踪迹(区别sql server里只有er ...
- 讲解ontouchstart、ontouchend、onclick区别和坑点
今天要讲的这个并不复杂,我用一个例子来讲解吧 <div id="box"></div> var box = document.querySelector(& ...
- baguetteBox.js - 简单易用的 lightbox 插件
baguetteBox.js 是一个简单和易于使用的响应式的图像 Lightbox 插件,支持滑动手势在移动设备上使用.纯 JavaScript 实现,不依赖第三方库和插件,赶紧来体验吧. 在线演示 ...
- #7 Python顺序、条件、循环语句
前言 上一节讲解了Python的数据类型和运算,本节将继续深入,涉及Python的语句结构,相当于Python的语法,是以后编写程序的重要基础! 一.顺序语句 顺序语句很好理解,就是按程序的顺序逻辑编 ...
- Python和Java编程题(三)
1.题目:判断101到200之间有多少个素数,并输出所有素数 题目分析:判断一个数是否为素数,只需要判断这个数有没有除1和它自身外的其他因数.因此,判断这个数能否被2-它的平方根中的任意一个数整除即可 ...
- HashMap在JDK1.8中并发操作,代码测试以及源码分析
HashMap在JDK1.8中并发操作不会出现死循环,只会出现缺数据.测试如下: package JDKSource; import java.util.HashMap; import java.ut ...