private SpeechSynthesizer mTts; 
private int isSpeaking = 0;
mTts= SpeechSynthesizer.createSynthesizer(this, null);

/*
* 开始合成
*
* @param view
*/
public void start() { mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
mTts.setParameter(SpeechConstant.SPEED, "50");//设置语速
mTts.setParameter(SpeechConstant.VOLUME, "80");//设置音量,范围 0~100
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端
mTts.startSpeaking(search_word_content.getText().toString().trim(), mSynListener);
}
//合成监听器
private SynthesizerListener mSynListener = new SynthesizerListener(){
//缓冲进度回调
//percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在
//文本中结束位置,info为附加信息。
@Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
// TODO Auto-generated method stub }
//会话结束回调接口,没有错误时,error为null
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub }
//会话事件回调接口
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub }
//开始播放
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub }
//暂停播放
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub }
//播放进度回调
//percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文
//本中结束位置.
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub } //恢复播放回调接口
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub } };
if (isSpeaking == 0) {
start();
gif_no.setVisibility(View.INVISIBLE);
gif.setVisibility(View.VISIBLE);
isSpeaking = 1;
} else if (isSpeaking == 1) {
// 暂停播放
mTts.pauseSpeaking();
gif_no.setVisibility(View.VISIBLE);
gif.setVisibility(View.INVISIBLE);
isSpeaking = 2;
} else if (isSpeaking == 2) {
// 继续播放
//System.out.println(".........."); mTts.resumeSpeaking();
isSpeaking = 1;
gif_no.setVisibility(View.INVISIBLE);
gif.setVisibility(View.VISIBLE); }
// 取消合成
mTts.stopSpeaking();
isSpeaking = 0;

总结, 开始初始化,start方法里面设置参数,再根据需要调用停止和继续方法,假如换了文本调用取消合成方法,重新start方法

使用讯飞SDK,实现文字在线合成语音的更多相关文章

  1. Android Studio快速集成讯飞SDK实现文字朗读功能

    今天,我们来学习一下怎么在Android Studio快速集成讯飞SDK实现文字朗读功能,先看一下效果图: 第一步 :了解TTS语音服务 TTS的全称为Text To Speech,即“从文本到语音” ...

  2. 讯飞SDK的使用

    在配置好Android Studio 2.3.3后,依照结合网上例子,动手创建讯飞语言听写app,最终手机上运行成功. 主要参考两篇博文(zqHero/XunFeiVoiceDEmo ,Android ...

  3. 初探机器学习之使用讯飞TTS服务实现在线语音合成

    最近在调研使用各个云平台提供的AI服务,有个语音合成的需求因此就使用了一下科大讯飞的TTS服务,也用.NET Core写了一个小示例,下面就是这个小示例及其相关背景知识的介绍. 一.什么是语音合成(T ...

  4. 安卓使用讯飞sdk报错

    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.iflytek.cloud.SpeechSy ...

  5. iphone之使用讯飞语音sdk实现语音识别功能

    1.首先下载讯飞sdk及文档:http://open.voicecloud.cn/ 2.学习里面的demo简单实现了一个小的语音识别功能 先做一个简单demo,看看识别效果.注:语音识别必须联网. 所 ...

  6. 使用javacv录像,同时进行讯飞声纹认证

    由于最近的demo中需要在活体检测的同时进行音视频录制 ,  尝试使用MediaRecord和camera来录制视频 , 然而Camera.onPreviewFrame 不能与 MediaRecord ...

  7. UNITY 接讯飞语音过程总结

    11:13 2017/3/141,安装问题:JDK与ECLIPSE位数一定要对应,32位对64位会出现 java was returned ....code 13的弹框错误.版本号可以不一致.2,EC ...

  8. Android 离线语音用法(讯飞语音)

    这次给大家带来的是项目的离线语音功能. 讯飞开放平台中的离线语音 首先创建开放平台的账号.这个不必多说 然后创建新应用 选择我的应用,例如以下图,注意下我打马赛克的地方,这个appId非常重要 点击进 ...

  9. Android 讯飞语音听写SDK快速接入(附空指针解决和修改对话框文字方法)

    1.账号准备工作 首先要有一个讯飞的账号啦,为后面申请APPID.APPKey等东西做准备.顺带一提:讯飞对不同认证类型用户开 放的SDK的使用次数是有不同的,详情如下图. 账号申请完成后,需要去你自 ...

随机推荐

  1. firefox常用扩展、脚本

    1.AutoPopup.uc.js:鼠标移到菜单和下拉箭头上自动弹出下拉菜单 2.moveButton.uc.js:移动或克隆按钮或菜单到火狐浏览器的任意位置 moveButton.uc.js使用说明 ...

  2. sqlserver 行转列、列转行[转]

    转自:http://www.cnblogs.com/luofuxian/archive/2012/02/23/2364328.html Sql Server 行转列.列转行   创建表:   CREA ...

  3. java 并发编程

    闭锁 一种可以延迟线程的进度直到其到达终止状态.可以用来确保某些活动直到其他活动都完成后才继续执行 例如: 确保某个计算在其需要的所有资源都被初始化了之后才继续执行. 确保某个服务在其他依赖的服务都启 ...

  4. java中的静态static关键字

    类的静态成员函数不能访问非静态的成员函数以及非静态的成员变量, 但是反过来却是成立的. 即:非静态成员函数可以访问静态成员函数和静态成员变量. 这个可以从静态成员的特点来解释,因为静态成员属于类,因此 ...

  5. 移动开发之meta篇

    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable= ...

  6. hdu 2837 Calculation

    公式:a^b%p=a^(b%phi(p)+phi(p))%p   b>=phi(p) #include<iostream> #include<stdio.h> #incl ...

  7. leetcode 5 :Longest Palindromic Substring 找出最长回文子串

    题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...

  8. hdu 1003(详解) java

    算法分析: 一列数   a[0],a[1],……a[i]…… 定义数组b[0],b[1,]……b[i]…… ***b[i]为i之前的任意位置到i的最大连续和!!! b[i]=max{b[i-1]+a[ ...

  9. JDK安装配置问题

    JDK安装过程中会有两个安装提示,一个是jdk的安装,一个是jre的安装

  10. WCF入门(十二)---WCF异常处理

    WCF服务开发者可能会遇到需要以适当的方式向客户端报告一些不可预见的错误.这样的错误,称为异常,通常是通过使用try/catch块来处理,但同样,这是非常具体的技术. 由于客户端的关注领域不是关于如何 ...