Android SDK 文档
1、简介
与语音听写相反,语音合成是将一段文字转换为成语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。
离线语音合成详细的接口介绍及说明请参考: MSC Android API 文档 。
在集成过程中出现错误,请优先查询SDK&API 错误码查询 。如有疑问,请提交工单 进行咨询,也可登录讯飞开放平台论坛 与广大开发者共同学习和交流。
离线语音合成新版XTTS高品质版已经上线~ 合成效果更好,欢迎体验~普通版即旧版离线语音合成。新上线的高品质版合成效果比普通版更好,但资源占用略高,可根据业务需求合理选择,高品质版离线合成目前支持Android、iOS、Linux 平台。
#2、SDK集成指南
#2.1、Demo运行步骤
根据官网控制台普通版 、高品质版 提示,直接下载SDK,SDK中包含简易可运行的Demo。如下图所示:
下载完SDK后,解压至相应的路径。
注:使用demo测试时,需将res中除layout外资源拷贝到demo中assets相应的路径下
以Android Studio集成开发工具为例,测试时请直接用真机进行测试。
#方法一(导入project方式):
打开Android Studio,在菜单栏File--->new--->import project当前解压sdk路径,使用在线服务能力选择导入mscV5PlusDemo,如下图所示:
导入成功之后sync编译下,编译无误可连接手机,开启手机USB开发调试模式,直接在Android Studio运行导入的mscV5PlusDemo,最后生成的apk可直接安装在对应的手机上,如下图所示:
如果编译时出现“ERROR: Plugin with id 'com.android.application' not found.”错误,请在build.gradle文件中添加以下代码。
buildscript {
repositories {
google()
jcenter()
}
dependencies {
//版本号请根据自己的gradle插件版本号自行更改
classpath 'com.android.tools.build:gradle:3.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
如在导入项目中还出现其他问题,可参考帖子:安卓demo常见错误排查
#方法二(导入module方式):
打开Android Studio,在菜单栏File--->new--->import module当前解压sdk路径,使用在线服务能力选择导入mscV5PlusDemo,导入成功之后sync编译下,编译无误可连接手机,开启手机USB开发调试模式,直接在Android Studio运行导入的mscV5PlusDemo,最后生成的apk可直接安装在对应的手机上。
#2.2、项目集成步骤
#2.2.1、SDK包说明
《Android SDK目录结构一览》
- manifests:
- android配置应用权限文件
- sample:
- 相关离线能力demo(离线语音听写IatDemo)
- assets:
- SDK相关资源配置文件
- Libs:
- 动态库和jar包
- res:
- UI文件和相关布局文件xml
- readme说明(必看)
- release 版本说明
#2.2.2、导入SDK
将在官网下载的Android SDK 压缩包中libs目录下所有子文件拷贝至Android工程的libs目录下。如下图所示:
注:
- arm版本已经逐步淘汰了,arm架构的推荐使用armeabi-v7a。
- 如果您需要将应用push到设备使用,请将设备cpu对应指令集的libmsc.so push到/system/lib中。
- 集成到项目,需要将sdk中Demo/src/main/下文件拷贝到项目main中,以AS为例,且需要在项目main文件夹下新建Jnilibs并拷贝libmsc.so
- msc.jar需要拷贝至项目libs下,并且右键jar添加Add As Library。
- sdk下文件夹main/assets/,自带UI页面(iflytek文件夹)和相关其他服务资源文件(语法文件、音频示例、词表),使用自带UI接口时,可以将assets/iflytek文件拷贝到项目中;
#2.2.3、添加用户权限
在工程 AndroidManifest.xml 文件中添加如下权限
<!--连接网络权限,用于执行云端语音能力 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--获取当前wifi状态 -->
<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"/>
<!--读取联系人权限,上传联系人需要用到此权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!--外存储写权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--外存储读权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--配置权限,用来记录应用配置信息 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
<!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--如需使用人脸识别,还要添加:摄相头权限,拍照需要用到 -->
<uses-permission android:name="android.permission.CAMERA" />
注意:如需在打包或者生成APK的时候进行混淆,请在proguard.cfg中添加如下代码:
-keep class com.iflytek.**{*;}
-keepattributes Signature
#2.2.4、接入
为保证用户个人隐私,防止APP不当收集用户信息,我们强烈建议您遵守以下流程接入本SDK保证合规,防止因调用时机不当引发的后果,例如但不限于:APP被应用市场下架等。
(1)您需要确保贵APP有《隐私政策》,并且在用户首次启动App时就弹出《隐私政策》争得用户同意。
(2)您务必在App的《第三方共享清单及SDK目录》中告知用户MSC SDK收集的个人信息类型以及MSC SDK隐私政策。
(3)个人信息收集说明:MSC SDK需要收集唯一设备识别码(android ID)以提供能力授权服务。
(4)隐私政策 请点击查看。
(5)您务必严格遵守如下调用步骤,确保用户同意《隐私政策》之后,且在用户主动使用本SDK提供的各项功能时再进行相关函数调用。
确保App启动后,在用户阅读并同意《隐私政策》并取得用户授权之后,在用户使用SDK功能时,方可调函数SpeechUtility.createUtility(SpeechApp.this,xxxx)以使用MSC SDK。反之,如果用户不同意《隐私政策》授权,则不允许调用SpeechUtility.createUtility(SpeechApp.this,xxxx)初函数。
参考示例:SDK demo源码中获取到《隐私政策》的用户授权,后续的SDK demo函数SpeechUtility.createUtility(SpeechApp.this, xxxx)建议在用户使用SDK功能时进行使用。
接入即创建语音配置对象,只有接入后才可以使用MSC的各项服务。建议将接入放在程序入口处(如Application、Activity的onCreate方法),接入代码如下:
// 将“12345678”替换成您申请的APPID,申请地址:http://www.xfyun.cn
// 请勿在“=”与appid之间添加任何空字符或者转义符
SpeechUtility.createUtility(context, SpeechConstant.APPID +"=12345678");
#3、参数说明
#3.1、基础参数说明
参数名称 | 名称 | 说明 |
---|---|---|
ENGINE_TYPE | 引擎类型 | 通过此参数设置离线模式,普通版设置为TYPE_LOCAL,高品质版设置为TYPE_XTTS |
voice_name | 发音人 | 通过此参数设置不同的发音人,达到不同的语言和方言、性别等效果,默认发音人:xiaoyan |
speed | 合成语速 | 通过此参数,设置合成返回音频的语速,值范围:[0,100],默认:50 |
volume | 合成音量 | 通过此参数,设置合成返回音频的音量,值范围:[0,100],默认:50 |
pitch | 合成语调 | 通过此参数,设置合成返回音频的语调,值范围:[0,100],默认:50 |
sample_rate | 采样率 | 通过此参数设置音频的采样率,可选值:16000,8000(离线高品质合成暂不支持),默认:16000 |
tts_audio_path | 合成录音保存路径 | 通过此参数,可以在合成完成后在本地保存一个音频文件,值范围:有效的文件相对或绝对路径(含文件名),默认值:null |
audio_format | 音频格式 | 通过此参数设置合成音频文件格式,可选:pcm、wav,默认值:pcm |
备注:以上均为SDK常用参数说明,均在setParam()方法里面设置,设置示例:mTts.setParameter(SpeechConstant.VOICE_NAME, voicer);更多详细参数请参考:MSC Android API文档 .
#3.2、离线发音人列表
#3.2.1、离线语音合成(普通版)的common.jet(约4.10 MB)+发音人.jet资源配合使用,普通的离线语音合成中文和英文发音人均依赖common.jet。
类型 | 发音人中文名称 | 音色 | 发音人资源文件名 | 发音人资源大小 |
---|---|---|---|---|
播报 | 讯飞小燕 | 青年女声 | xiaoyan.jet | 3.91 MB |
播报 | 讯飞小峰 | 青年男声 | xiaofeng.jet | 1.27 MB |
播报 | 讯飞小梦 | 青年女声 | xiaomeng.jet | 10.6 MB |
播报 | 讯飞小媛 | 中英文青年女声 | xiaoyuan.jet | 1.89 MB |
播报 | iFlytek John | 英文男声 | john.jet | 1.60 MB |
播报 | 讯飞凯瑟琳 | 青年女声-美式英语 | catherine.jet | 25.5 MB |
播报 | 讯飞小溪 | 青年男声 | xiaoxi.jet | 4.95 MB |
播报 | 讯飞小雪 | 青年女声 | xiaoxue.jet | 3.41 MB |
播报 | 讯飞许久 | 青年男声 | jiuxu.jet | 3.91 MB |
听书 | 讯飞晓倩 | 青年女声-东北话 | xiaoqian.jet | 848 KB |
听书 | 讯飞小蓉 | 青年女声-四川话 | xiaorong.jet | 571 KB |
听书 | 讯飞小坤 | 青年男声-河南话 | xiaokun.jet | 672 KB |
听书 | 讯飞小强 | 青年男声-湖南话 | xiaoqiang.jet | 691 KB |
听书 | 讯飞小英 | 青年女声-陕西话 | xiaoying.jet | 850 KB |
听书 | 讯飞小梅 | 青年女声-广东话 | xiaomei.jet | 1.66 MB |
听书 | 讯飞嘉嘉 | 青年女声 | jiajia.jet | 1.79 MB |
听书 | 讯飞小侯 | 中年男声 | xiaohou.jet | 5.95 MB |
听书 | 讯飞一峰 | 中年男声 | yifeng.jet | 6.59 MB |
听书 | 讯飞晓琳 | 青年女声-台普 | xiaolin.jet | 1.81 MB |
交互 | 讯飞楠楠 | 女童声 | nannan.jet | 1.41 MB |
交互 | 讯飞马宝 | 女童声 | mabao.jet | 1.79 MB |
交互 | 讯飞小芳 | 女童声 | xiaofang.jet | 3.38 MB |
交互 | 讯飞小丸子 | 卡通声音 | xiaowanzi.jet | 13.0 MB |
#3.2.2、离线语音合成(高品质版)的common.jet(约20.4M)+发音人.jet资源配合使用
注:高品质离线语音合成若使用到了英文发音人,需配合common_en.jet(约3MB)使用,如果未用到英文发音人,可在SDK中移除此资源以释放空间
类型 | 发音人中文名称 | 音色 | 发音人资源文件名 | 发音人资源大小 |
---|---|---|---|---|
播报 | 讯飞小燕 | 青年女声 | xiaoyan.jet | 5.91MB |
播报 | 讯飞小峰 | 青年男声 | xiaofeng.jet | 5.91MB |
播报 | 讯飞小媛 | 青年女声 | xiaoyuan.jet | 5.91MB |
播报 | 讯飞一峰 | 青年男声 | yifeng.jet | 5.91MB |
交互 | 讯飞虫虫 | 青年女声 | chongchong.jet | 5.91MB |
交互 | 讯飞小雪 | 青年女声 | xiaoxue.jet | 5.91MB |
交互 | 讯飞楠楠 | 男童声 | nannan.jet | 5.91MB |
听书 | 讯飞小彬 | 青年男声 | xiaobin.jet | 5.91MB |
听书 | 讯飞芳芳 | 女童声 | xiaofang.jet | 5.91MB |
方言 | 讯飞晓琳 | 青年女声-台湾普通话 | xiaolin.jet | 5.91MB |
方言 | 讯飞晓倩 | 青年女声-东北话 | xiaoqian.jet | 5.91MB |
方言 | 讯飞晓蓉 | 青年女声-四川话 | xiaorong.jet | 5.91MB |
方言 | 讯飞小莹 | 青年女声-陕西话 | xiaoying.jet | 5.91MB |
方言 | 讯飞小坤 | 青年男声-河南话 | xiaokun.jet | 5.91MB |
英文 | iFlytek John | 青年男声-美式英语 | John.jet | 6.3MB |
英文 | 讯飞凯瑟琳 | 青年女声-美式英语 | catherine.jet | 6.28MB |
#3.2.3、离线语音合成发音人购买
购买方式1:离线语音合成主页 —离线发音人库—选择普通版或高品质版-立即购买—选择绑定的应用—付款;
购买方式2:控制台 —应用—离线语音合成(普通版)或离线语音合成(高品质版)—服务管理—购买离线发音人音库—付款。
注:
1、离线语音合成(普通版)和离线语音合成(高品质版)发音人不能共用,在购买时,请慎重选择服务。
2、购买成功后重新下载离线语音合成sdk,在sdk中会自动多一个购买的发音人资源。
#3.3、离线语音合成
平台上购买离线语音合成后下载的sdk包,默认只提供小燕和小峰的资源(.jet),也就是说只有这两个发音人可以使用,如果购买了其他的发音人的话,您就会拿到其他发音人的资源(.jet)。
#3.3.1、离线语音合成(普通版)发音人包集成
以小芳的发音人为例,购买后您会拿到小芳的资源(xiaofang.jet)。请看下面示例:
- 需将res中tts文件夹(包含合成的资源)资源拷贝到demo中assets相应的路径下,将xiaofang.jet资源放到demo中assets/tts路径下。注意:无论使用那个发音人,common.jet资源都是必须要放进去的。
- 将代码中的voice_name参数修改为小芳,同时资源发音人资源也要修改为xiaofang.jet这样才能正确的加载到正确的资源。
#3.3.2、离线语音合成(高品质版)发音人包集成
以小坤的发音人为例,购买后您会拿到小坤的资源(xiaokun.jet)。请看下面示例:
- 需将res中xtts文件夹(包含合成的资源)资源拷贝到demo中assets相应的路径下,将xiaokun.jet资源放到demo中assets/xtts路径下。注意:无论使用那个发音人,common.jet资源都是必须要放进去的。
- 将代码中的voice_name参数修改为小坤,同时资源发音人资源也要修改为xiaokun.jet这样才能正确的加载到正确的资源。
注意:
1、使用购买的新的发音人要注意加载的资源名称,voice_name,资源路径中的资源名称三者的统一,否则者会无法正常使用。
2、高品质离线发音人和普通离线发音人资源存放位置不能相互混淆。
#4、视频教程
#5、常见问题
#在线语音合成与离线语音合成的区别是什么?
答:在线合成针对有网环境,离线是无网环境;另外在线升级与公有云同步升级,离线响应速度快,在线效果更好,可选择的发音人也更多。
#离线语音合成的主要功能是什么?
答:将文字信息转化为声音信息,让应用具备离线语音合成的能力。即让机器像人一样开口说话,给开发者的应用配上“嘴巴”。
#离线语音合成支持哪些应用平台?
答:目前离线语音合成支持:IOS/Android/Windows/Linux应用平台,但离线语音合成(高品质版)暂不支持Windows应用平台。
#离线语音合成的字节有什么要求?
答:目前离线语音合成SDK接口一次最多可支持8192个字节。
#离线语音合成支持哪些语言?
答:目前离线语音合成目前支持的语种/方言:中文、英文、粤语、东北话、四川话、河南话、湖南话、陕西话、台湾普通话,但离线语音合成(高品质版)暂不支持湖南话和粤语。
#离线语音合成怎么收费的?
答:默认的中文普通话男女生讯飞小峰和讯飞小燕是免费使用的;离线发音人库2000元/人;高品质离线发音人库4000元/人。
#离线发音人库的发音人如何购买?
答:登录讯飞开放平台,点击到离线语音合成页面后,选择普通版或高品质版,可查看到相应版本下离线发音人的价格。点击发音人的“立即购买”即可支付购买。
#离线语音合成如何购买?
答: 登录讯飞开放平台,点击到离线语音合成页面后,选择普通版或高品质版,可查看到相对应版本价格表。点击对应套餐的“立即购买”即可支付购买。
#离线语音合成(普通版)和高品质版的区别
答: 高品质版合成效果比普通版更好,但资源占用略高,可根据业务需求合理选择
#已导入相关资源,但是合成还是无法使用
答: 首先确认导入资源是否正确引入,高品质版和普通版离线资源名字相同,但是不可通用,需要进行区分,不可混淆。