speick

来自于:开发者立即使用

概述

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及更高版本