Android 讯飞语音之语音合成(在线有声朗读)
原文:http://www.cnblogs.com/scetopcsa/p/3845427.html
在线语音合成的使用方法:
首先下载相关的sdk,这个网址里有多种版本,我选择的Android。
http://open.voicecloud.cn/index.php/services/voicebase?type=tts&tab_index=1
需要注意的是,最好先创建应用,审核通过后会返回一个APPID号,这个号在开发时会使用。
下载并解压后如图:
其中,doc中是相关文档,libs中是待会儿要导入的语音包,sample中是自带的Demo,大家可以看看。
下面我们通过实例来简单的使用在线语音合成功能:
首先创建工程。
导入语音包,结构如下图:
接下来是布局文件
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="有声朗读" /> </LinearLayout>
然后MainActivity.java:
注意导入的外部包:
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechSynthesizer;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.SynthesizerListener;
public class MainActivity extends Activity {
private SpeechSynthesizer mTts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=53c4c169");
mTts = SpeechSynthesizer.createSynthesizer(this, null);
set_mTts();
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mTts.startSpeaking(
"7月14日,2014年英国范堡罗航展正式开幕。瑞典萨伯公司研制的最新型“鹰狮NG”战斗机首次亮相该航展。该机在Jas-39“鹰狮”基础上进行全面改进,更换了最新型的AESA雷达,并配备有“流星”中程空空导弹、IRIS-T近距格斗导弹、KEPD-350远程防区外空地导弹等最新一代机载武器,战斗力得到空前飞跃。",
mTtsListener);
}
});
}
private void set_mTts() {
// 设置发音人
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
// 设置语速
mTts.setParameter(SpeechConstant.SPEED, "20");
// 设置音调
mTts.setParameter(SpeechConstant.PITCH, "50");
// 设置音量0-100
mTts.setParameter(SpeechConstant.VOLUME, "100");
// 设置播放器音频流类型
mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");
// 如果不需要保存保存合成音频,请注释下行代码
// mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH,
// "./sdcard/iflytek.pcm");
}
private SynthesizerListener mTtsListener = new SynthesizerListener() {
// 缓冲进度回调,arg0为缓冲进度,arg1为缓冲音频在文本中开始的位置,arg2为缓冲音频在文本中结束的位置,arg3为附加信息
@Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
// TODO Auto-generated method stub
}
// 会话结束回调接口,没有错误时error为空
@Override
public void onCompleted(SpeechError error) {
// TODO Auto-generated method stub
}
// 开始播放
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub
}
// 停止播放
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub
}
// 播放进度回调,arg0为播放进度0-100;arg1为播放音频在文本中开始的位置,arg2为播放音频在文本中结束的位置。
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
// 恢复播放回调接口
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub
}
};
@Override
protected void onDestroy() {
mTts.stopSpeaking();
mTts.destroy();// 退出时释放连接
super.onDestroy();
}
}
注意:千万不要忘记在清单文件中添加权限。
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
运行软件(记住要联网),点击按钮即可有声朗读了。
Demo下载:http://download.csdn.net/detail/af74776/7638817(注意:appid前应该加上=)
Android 讯飞语音之语音合成(在线有声朗读)的更多相关文章
- Android讯飞语音云语音听写学习
讯飞语音云语音听写学习 这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google" ...
- android讯飞语音开发常遇到的问题
场景:android项目中共使用了3个语音组件:在线语音听写.离线语音合成.离线语音识别 11208:遇到这个错误,授权应用失败,先检查装机量(3台测试权限),以及appid的申请时间(35天期限), ...
- Android 讯飞语音听写SDK快速接入(附空指针解决和修改对话框文字方法)
1.账号准备工作 首先要有一个讯飞的账号啦,为后面申请APPID.APPKey等东西做准备.顺带一提:讯飞对不同认证类型用户开 放的SDK的使用次数是有不同的,详情如下图. 账号申请完成后,需要去你自 ...
- cocos2dx实现android的对讯飞语音的合成(语言朗读的实现)
事实上非常easy,只是有些细节须要注意. 关于讯飞语音在android上的应用,大家须要自己去下载SDK,然后依照讯飞语音提供的api在自己的android的Demo上执行成功,那东西也相当的简单. ...
- 讯飞语音JavaWeb语音合成解决方案
在线语音合成 将文字信息转化为声音信息,给应用配上"嘴巴".我们提供了众多极具特色的发音人(音库)供您选择.其合成音在音色.自然度等方面的表现均接近甚至超过了人声.这种语音合成体验 ...
- Android自带语音播报+讯飞语音播报封装(直接用)
一.Android自带的语音播报 1.查看是否支持中文,在测试的设备中打开‘设置’ -->找到 '语言和输入法'-->查看语音选项,是否支持中文,默认仅支持英文. 使用如下: public ...
- android用讯飞实现TTS语音合成 实现中文版
Android系统从1.6版本开始就支持TTS(Text-To-Speech),即语音合成.但是android系统默认的TTS引擎:Pic TTS不支持中文.所以我们得安装自己的TTS引擎和语音包. ...
- 基于讯飞语音API应用开发之——离线词典构建
最近实习在做一个跟语音相关的项目,就在度娘上搜索了很多关于语音的API,顺藤摸瓜找到了科大讯飞,虽然度娘自家也有语音识别.语义理解这块,但感觉应该不是很好用,毕竟之前用过百度地图的API,有问题也找不 ...
- iOS: 讯飞语音的使用
一.介绍: 讯飞语音做的相当不错,容错率达到90%多,如果需要做语音方面的功能,它绝对是一个不错的选择.讯飞语音的功能很多:语音听写.语音识别.语音合成等,但我们最常用的还是语音听写.讯飞语音中包含界 ...
随机推荐
- JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
分布式开发的历史 利用Remote方式调用远程对象实现服务器与客户端之间通讯是一种常用的网络开发方式,在.NET与JAVA开发当中,对Remote远程对象早已有着足够的支持(对Remote远程对象调用 ...
- (转载)file_get_contents("php://input")
(转载)http://taoshi.blog.51cto.com/1724747/1165499 $data = file_get_contents("php://input"); ...
- POJ 2342 (树形DP)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3863 Accepted: 2172 ...
- PLS-00306:错误解决思路 - OracleHelper 执行Oracle函数的坑
如果你是像我一样初次使用Net+Oracle的结合,我想你会跟我一样,有很大的概率碰到这个问题 ==================================================== ...
- NHibernate统一类封装代码
NHibernate已经成为.net主流的ORM框架,当然,在开发中如果需要使用NHibernate的话,我们一般会对她进行一次封装,以便在项目中使用更方便,以及对NHibernate有一个全局的控制 ...
- 初来咋到先试试windows live writer
据说这个工具用来写博客很好用的,先试试哦... 来说说具体使用方法吧:(摘抄自博客园) 下面首先讲用Windows Live Writer 2012发博客: 一.软件准备: 最新版的是Windows ...
- UEditor 使用过程中问题
UEditor 百度的文本编辑器 具体详细信息请去百度文本编辑器官网,这里不多说了. 我使用的是 UBuilder 版本的NET版本 ,我只是需要图片上传功能,所以就做了最小化的定制.(可以在官 ...
- HW2.8
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- puppet yum仓库
http://tmz.fedorapeople.org/repo/puppet/epel/5/x86_64/ [epel-puppet] name=epel puppet baseurl=http:/ ...
- 数据绑定之DataFormatString
设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货币的格式取决于当前Thread中Cultur ...