speick

来自于:开发者

dataCopy init play stop listen

概述

speick 封装了百度开放平台的语音合成SDK,可以实现离线或在线语音合成。
开发流程:
1.先在百度云申请账号,然后在控制台创建应用(APP包名必须与在百度云创建的应用语音包名一致,否则离线语音合成不可用)。
2.按照以下示例配置config.xml文件

配置方法如下:

  • 名称:baiduTTSauthorization
  • 参数:appid、appkey、secretkey
  • 配置示例:
  1. <feature name="baiduTTSauthorization">
  2. <param name="appid" value="在百度申请的appid"/>
  3. <param name="apikey" value="在百度申请的appkey"/>
  4. <param name="secretkey" value="在百度申请的secretkey"/>
  5. </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对象
  • 内部字段:
  1. {
  2. state: "ok" //"ok" 代表成功,返回其他值则为失败
  3. }

示例代码

  1. var wx = api.require('speick');
  2. var errpd = function (ret,err) {
  3. if(ret){
  4. alert('返回:'+JSON.stringify(ret))
  5. }
  6. if(err){
  7. alert('返回:'+JSON.stringify(err))
  8. }
  9. }
  10. 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对象
  • 内部字段:

    1. {
    2. msg: "初始化成功", //字符串,初始化结果描述
    3. state:"1" //字符串,返回1则成功,返回其他值则失败
    4. }

示例代码

  1. var speick = api.require('speick');
  2. var errpd = function (ret) {
  3. if(ret){
  4. alert('返回:'+JSON.stringify(ret))
  5. }
  6. }
  7. speick.init({
  8. speakId:1,
  9. onlyOnline:false,
  10. file:false
  11. },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对象
  • 内部字段:

    1. {
    2. state:"1" //字符串,返回1则成功,返回其他值则失败
    3. }

stop

停止语音合成以及播放

stop(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:

    1. {
    2. state:1 //返回1则成功,返回其他值则失败
    3. }

示例代码

  1. var speick = api.require('speick');
  2. var errpd = function (ret) {
  3. if(ret){
  4. alert('返回:'+JSON.stringify(ret))
  5. }
  6. }
  7. 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对象
  • 内部字段:

    1. {
    2. data:{
    3. code:"onSpeechFinish", //回调事件名称
    4. //onSpeechFinish 表示合成语音播放结束
    5. //onSpeechProgressChanged 表示合成语音播放正在进行
    6. //onSpeechStart 表示合成语音开始播放
    7. //onSynthesizeStart 表示语音合成开始
    8. //error 表示语音合成过程中出现错误
    9. broadcastPace:0, //当code等于onSpeechProgressChanged时,实时返回播放进度,
    10. 0 “合成文本的字符数”,code为其他值时不会返回该参数
    11. SpeechError:0 //当code等于error时,返回语音合成出现的错误,错误代码
    12. }
    13. }

示例代码

  1. var speick = api.require('speick');
  2. var errpd = function (ret) {
  3. if(ret){
  4. alert('返回:'+JSON.stringify(ret))
  5. }
  6. }
  7. speick.listen(errpd);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

listenstop

停止语音播放监听

listenstop(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:

    1. {
    2. state:1 //返回1则成功,返回其他值则失败
    3. }

示例代码

  1. var speick = api.require('speick');
  2. var errpd = function (ret) {
  3. if(ret){
  4. alert('返回:'+JSON.stringify(ret))
  5. }
  6. }
  7. speick.listenstop(errpd);

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本