speick
来自于:开发者
dataCopy init play stop listen
概述
speick 封装了百度开放平台的语音合成SDK,可以实现离线或在线语音合成。
开发流程:
1.先在百度云申请账号,然后在控制台创建应用(APP包名必须与在百度云创建的应用语音包名一致,否则离线语音合成不可用)。
2.按照以下示例配置config.xml文件
配置方法如下:
- 名称:baiduTTSauthorization
- 参数:appid、appkey、secretkey
- 配置示例:
<feature name="baiduTTSauthorization">
<param name="appid" value="在百度申请的appid"/>
<param name="apikey" value="在百度申请的appkey"/>
<param name="secretkey" value="在百度申请的secretkey"/>
</feature>
3.调用dataCopy方法,将离线资源文件拷贝至手机存储中,该方法只需要调用一次即可。
4.调用init方法并携带参数。
5.调用play方法实现语音合成功能。
dataCopy
拷贝离线语音合成资源文件到手机内存,路径为:/手机存储/Android/data/你的应用包名/file/baiduTTS,例如:/sdcard/Android/data/com.yourapp.tts/file/baiduTTS
提示:如果只使用在线模式进行语音合成,则不需要运行此方法。
dataCopy(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
- 内部字段:
{
state: "ok" //"ok" 代表成功,返回其他值则为失败
}
示例代码
var wx = api.require('speick');
var errpd = function (ret,err) {
if(ret){
alert('返回:'+JSON.stringify(ret))
}
if(err){
alert('返回:'+JSON.stringify(err))
}
}
speick.dataCopy(errpd);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
init
语音合成初始化
init({params}, callback(ret, err))
params
onlyOnline:
- 类型:布尔
- 描述:(必填)是否只使用在线语音合成模式
true:只使用在线合成模式
false:使用离在线混合模式
speakId:
- 类型:int
- 范围:1-4
- 描述:(选填)离线模式下的发音人。默认为离线女生。
1:离线女生
2:离线男生
3:离线度丫丫
4:离线度逍遥
file:
- 类型:布尔
- 范围:true或false
- 描述:(选填)是否保存语音合成的文件到手机存储(路径为/手机存储/Android/data/你的应用包名/file/wav/voice.wav,例如:/sdcard/Android/data/com.yourapp.tts/file/wav/voice.wav)。
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{
msg: "初始化成功", //字符串,初始化结果描述
state:"1" //字符串,返回1则成功,返回其他值则失败
}
示例代码
var speick = api.require('speick');
var errpd = function (ret) {
if(ret){
alert('返回:'+JSON.stringify(ret))
}
}
speick.init({
speakId:1,
onlyOnline:false,
file:false
},errpd);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
play
开始合成语音,如果初始化时参数file为true,调用本方法则会存储合成的语音音频文件到手机存储中,存储路径上面有介绍。
提示:根据百度官方SDK文档,目前有两种模式
纯在线模式 : WIFI 4G 3G 2G 都会尝试连接百度服务器。如果百度服务器失败,那么合成失败。
离在线混合模式: WIFI下强制尝试在线优先。其它网络情况可以设置是否为在线优先(如果连接失败,那么切换成离线合成)或者直接离线合成。
play({params}, callback(ret, err))
params
text:
- 类型:字符串
- 描述:(必填)要进行语音合成的文本,text不超过1024的GBK字节,即512个汉字或英文字母数字。
play:
- 类型:布尔
- 描述:(必填)语音合成完毕后是否进行播放。
onlineSpeakId:
- 类型:int
- 描述:(选填)在线模式下发音人
- 取值范围:0-4(默认为普通女声)
0:普通女声
1:普通男声
2:特别男声
3:情感男声<度逍遥>
4:情感儿童声<度丫丫>
volume:
- 类型:int
- 描述:(选填)合成语音的音量
- 取值范围:0-9(默认为5)
speed:
- 类型:int
- 描述:(选填)合成语音的语速
- 取值范围:0-9(默认为5)
tone:
- 类型:int
- 描述:(选填)合成语音的语调
- 取值范围:0-9(默认为5)
way:
- 类型:int
- 描述:(选填)离在线混合模式下的策略
- 取值范围:1-4(默认为1)
1:默认 ,wifi状态下使用在线,非wifi离线。在线状态下,请求超时6s自动转离线
2:wifi状态下使用在线,非wifi离线。在线状态下, 请求超时1.2s自动转离线
3:wifi状态下使用在线,其它状态离线。在线状态下,请求超时1.2s自动转离线
4:2G 3G 4G wifi状态下使用在线,其它状态离线。在线状态下,请求超时1.2s自动转离线
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{
state:"1" //字符串,返回1则成功,返回其他值则失败
}
stop
停止语音合成以及播放
stop(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{
state:1 //返回1则成功,返回其他值则失败
}
示例代码
var speick = api.require('speick');
var errpd = function (ret) {
if(ret){
alert('返回:'+JSON.stringify(ret))
}
}
speick.stop(errpd);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
listen
监听语音播放事件。
注意:该函数在开始播放合成语音时会不停的进行回调,SpeechError返回的错误代码在此处查询https://ai.baidu.com/docs#/TTS-Android-SDK/ed68f1e9
listen(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{
data:{
code:"onSpeechFinish", //回调事件名称
//onSpeechFinish 表示合成语音播放结束
//onSpeechProgressChanged 表示合成语音播放正在进行
//onSpeechStart 表示合成语音开始播放
//onSynthesizeStart 表示语音合成开始
//error 表示语音合成过程中出现错误
broadcastPace:0, //当code等于onSpeechProgressChanged时,实时返回播放进度,
从0 到 “合成文本的字符数”,code为其他值时不会返回该参数
SpeechError:0 //当code等于error时,返回语音合成出现的错误,错误代码
}
}
示例代码
var speick = api.require('speick');
var errpd = function (ret) {
if(ret){
alert('返回:'+JSON.stringify(ret))
}
}
speick.listen(errpd);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
listenstop
停止语音播放监听
listenstop(callback(ret))
callback(ret)
ret:
- 类型:JSON对象
内部字段:
{
state:1 //返回1则成功,返回其他值则失败
}
示例代码
var speick = api.require('speick');
var errpd = function (ret) {
if(ret){
alert('返回:'+JSON.stringify(ret))
}
}
speick.listenstop(errpd);
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本