android 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(mon.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下载地址.
推荐阅读:
android tts离线库,【Android语音合成TTS】云知声离线TTS使用详解相关推荐
- 融云android聊天界面,Android 融云IM集成以及使用详解(一)
Android 融云IM集成以及使用详解(一) 集成 1.具体的集成步骤就不在详细介绍,我们只说干货,附上融云IM官方文档地址,里面有更为详细的集成介绍 https://www.rongcloud.c ...
- Android 融云IM集成以及使用详解(二)
Android 融云IM集成以及使用详解(二) 上篇讲解了集成和好友列表和消息记录的使用,这篇将讲解聊天界面和群聊界面的使用 先附上一张效果图 先介绍布局文件 <LinearLayout xml ...
- Android基础入门教程——8.3.1 三个绘图工具类详解
Android基础入门教程--8.3.1 三个绘图工具类详解 标签(空格分隔): Android基础入门教程 本节引言: 上两小节我们学习了Drawable以及Bitmap,都是加载好图片的,而本节我 ...
- 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!
李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/327.html 很多童鞋说 ...
- android 6.0 存储卡,Android 6.0区别U盘和SD卡设备的方法详解
如下所示: public static boolean isSdcardExists(Context context) { StorageManager storageManager = Storag ...
- 前沿分享|阿里云数据库高级技术专家 宋利兵:阿里云企业级自治数据库RDS详解
简介:本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库高级技术专家 宋利兵关于"阿里云企业级自治数据库RDS详解"的分享. 本文将从2方面为大家介绍企业级 ...
- 【华为云计算产品系列】云上迁移工具RainBow实战详解
[华为云计算产品系列]云上迁移工具RainBow实战详解 1. 迁移方案 2.迁移流程 3. 迁移实验 3.1. Windows系统迁移 3.2. Linux系统迁移 3.3. 存储层迁移 1. 迁移 ...
- python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...
1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...
- python获取系统时间函数_python3中datetime库,time库以及pandas中的时间函数区别与详解...
1介绍datetime库之前 我们先比较下time库和datetime库的区别 先说下time 在 Python 文档里,time是归类在Generic Operating System Servic ...
- linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解
前言 UTC 时间DateTime.UtcNow 和 系统本地时间 DateTime.Now 相差8个时区 ,美国本地时间和北京时间相差15个时区: 美国,而一般使用UTC时间方便统一各地区时间差异. ...
最新文章
- 【DP】[ZJOI2008][HYSBZ/BZOJ1037]生日聚会Party
- PHP控制转盘抽奖代码,PHP 根据概率 实现抽奖转盘算法 代码
- FastJson 中 jsonArray 转换成 list 集合的方法
- CH 5102Mobile Service题解
- Hibernate的数据删除,更改
- 使用负载均衡SLB时为何出现请求分布不均衡的现象
- 服务器上装双系统,服务器上安装双系统
- CentOS 设置网络(修改IP修改网关修改DNS)
- java httppost raw_httpclient raw请求
- 【论文笔记】激光里程计网络 LO-Net:Deep Real-time Lidar Odometry2019
- Android 首次开机优化
- 献给七夕|微生物和您的爱情生活
- 第三方登录 人人php,php 使用curl模拟登录人人(校内)网的简单实例
- 高德地图js-api简单使用
- EndNote文献管理(二)基操勿六
- 时间序列预测-入门概念
- 移动自带的光猫带无线路由功能,用不用关掉,用光猫的路由拨号还是自备的路由器拨号?
- 文件完整性校验码计算工具
- Vue更新数组和对象的方法
- 【英语学习】【WOTD】writhe 释义/词源/示例
热门文章
- php 504网关,php出现504错误的原因是什么
- 如何用计算机抢座位,火车票可以自选座位啦!内附史上最强抢票攻略!
- sort()与拉姆达表达式
- 2020科目一考试口诀_科目一口诀顺口溜2020
- 【高数】高数第七章节——微分方程概念一阶微分方程高阶微分方程
- 一阶线性偏微分方程通解法和特征线法(二)| n个自变量情况 | 偏微分方程(八)
- 傅佩荣谈道家逍遥自在的人生
- c语言写街机,19年了!街机模拟器MAME正式成为开源软件
- 领导科学 读书笔记(一)
- 世界上最大的在线学习平台: Coursera 入门指南