logo
电话400 898 2016
预约试用
开放平台
En
尊敬的开发者,您好! 标贝科技的开发文档已更换新的地址,旧版文档地址将会在2023年12月31日下线, 给您带来不便,敬请谅解! 立即查看
产品简介 产品简介
基本概念 基本概念
平台新手指引 平台新手指引
计价模式 计价模式
开发者文档下拉
开放平台计价
定制服务计价
获取访问令牌 获取访问令牌
语音合成 语音合成
开发者文档下拉
接口说明
发音人列表
短文本合成 开发者文档下拉
Android SDK
iOS SDK
C++(Linux) SDK
RESTful API
Websocket API
长文本合成 开发者文档下拉
长文本合成RESTful API
长文本合成Websocket API
离线合成 开发者文档下拉
模型文件说明
离线合成(普通版) Android SDK
离线合成(普通版) iOS SDK
离线合成(精品版) Android SDK
离线合成(精品版) iOS SDK
XML标签
SSML标签
语音合成时间戳功能
语音识别 语音识别
开发者文档下拉
音频格式说明
一句话识别 开发者文档下拉
RESTful API
Websocket API
Android SDK
iOS SDK
实时长语音识别 开发者文档下拉
Websocket API
Android SDK
iOS SDK
录音文件识别 开发者文档下拉
RESTful API
自学习工具 开发者文档下拉
热词
个性化模型
声音复刻 声音复刻
开发者文档下拉
定制模型 开发者文档下拉
RESTful API
Android SDK
iOS SDK
定制声音合成 开发者文档下拉
短文本合成RESTful API
长文本合成Websocket API
声音转换 声音转换
开发者文档下拉
发音人列表
Websocket API
Android SDK
iOS SDK
离线声音转换 离线声音转换
开发者文档下拉
发音人列表
Android SDK
iOS SDK
声纹识别 声纹识别
开发者文档下拉
RESTful API
声音理解 声音理解
开发者文档下拉
RESTful API
协议规则 协议规则
开发者文档下拉
平台服务协议
平台通用规则
法律声明及隐私政策
服务等级协议SLA
常见问题 常见问题
开发者文档下拉
语音合成
语音识别

短文本合成Android SDK

下载安装

SDK及示例demo下载地址: https://github.com/data-baker/BakerAndroidSdks

Android Studio集成SDK(参考demo)

  • 将以下2个aar包添加至工程主module下,lib文件夹里。
    basecomponent-release.aar
    synthesizer-release.aar
  • 在主module的build.gradle文件里,添加以下代码。注意:SDK内使用了okhttp、gson所以需要开发者添加这两个库,若原本已经存在则无需重复添加。okhttp请使用4.x+版本,以免出现版本兼容bug。
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.aar'])
        implementation 'com.squareup.okhttp3:okhttp:4.2.2'
        implementation 'com.google.code.gson:gson:2.8.6'
    }
  • 在主Module的AndroidManifest.xml文件中添加网络权限。 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  • 在主Module的AndroidManifest.xml文件中的application节点添加以下属性。 android:usesCleartextTraffic="true"

    Eclipse环境也遵循相关集成jar包的方式即可。

  • 关于混淆

    SDK中用到了okhttp和gson,所以需要将这两个包的混淆代码添加上。具体混淆代码可以去官方文档上查阅。如果项目中已经有这两个包的混淆代码,不必重复添加。请加上我们SDK其他类的混淆代码,如下:

    -keep class com.databaker.synthesizer.bean.** { *; }
    -keep public class com.databaker.synthesizer.BaseMediaCallback{*;}
    -keep public class com.databaker.synthesizer.BakerSynthesizerErrorConstants{*;}
    -keep public class com.databaker.synthesizer.BakerCallback{*;}
    -keep public class com.databaker.synthesizer.SynthesizerCallback{*;}
    -keep public class com.databaker.synthesizer.BakerMediaCallback{*;}
    -keep public class com.databaker.synthesizer.BaseMediaCallback{*;}

SDK关键类

  • BakerSynthesizer:语音合成关键业务处理类,全局只需一个实例即可。
    若集成标贝公有云服务,则初始化代码如下:
    BakerSynthesizer bakerSynthesizer = new BakerSynthesizer(Context, clientId, secret);
    
    若属于私有化部署,则初始化代码如下:
    BakerSynthesizer bakerSynthesizer = new BakerSynthesizer(Context);
    bakerSynthesizer.setUrl("ws://xxx");
    bakerSynthesizer.setTtsToken("default");//设置默认token信息
  • BakerCallback:合成结果源数据回调类。在获得合成音频源数据,或发生错误等情况发生时会触发此回调。如果您的应用场景中需要直接处理返回的字节类型源数据,您可以实现该类,并在回调方法中加入自己的处理逻辑。设置参数时请将此callback提交给BakerSynthesizer实例。
  • BakerMediaCallback:如果想直接使用SDK中的播放器来处理文本合成播放任务。您可以实现该类,此回调类中包含了播放器的各种状态回调,您可以在这些回调方法中实现自己的其他业务逻辑。设置参数时请将此callback提交给BakerSynthesizer实例。
  • BakerConstants:参数、错误码等常量类。

调用说明

  • 初始化BakerSynthesizer类,得到BakerSynthesizer的实例。
  • SDK中提供了2个回调类。如果想要自己处理合成返回的字节类型源数据,则可以定义BakerCallback实现类。如果想直接将合成文本数据交给SDK中的播放器处理,则可以定义BakerMediaCallback实现类。如果选择了定义BakerCallback实现类,SDK中不会执行播放器等一整套业务代码,不用担心由此带来的各类附加资源开销。
  • 设置BakerSynthesizer合成参数,包括必填参数和非必填参数。
  • 调用BakerSynthesizer.start()方法开始与云端服务连接。
  • callback中的onPrepared()意义是合成的第一帧数据已取得。所以您可以在此回调方法中调用bakerSynthesizer.bakerPlay()开启播放任务。
  • 在callback其他回调方法中按照您的业务需求实现对应逻辑。
  • 如果需要发起新的请求,可以重复第3-6步。
  • 在业务完全处理完毕,或者页面关闭时,调用bakerSynthesizer.onDestroy();结束websocket服务,释放资源。

注意:若使用SDK中播放器执行合成音频播放任务,有以下方法可调用。

  • bakerSynthesizer.bakerPlay() 播放音频,常在onPrepared()回调方法里调用此方法执行播放。
  • bakerSynthesizer.bakerPause() 暂停播放。
  • bakerSynthesizer.bakerStop() 停止播放。
  • bakerSynthesizer.isPlaying() 当前播放状态,boolean型,true=正在播放中,false=暂停或停止播放。
  • bakerSynthesizer.getCurrentPosition() 当前播放进度。
  • bakerSynthesizer.getDuration()文本合成音频的总长度。

参数说明

基本参数说明:

参数 参数名称 是否必填 说明
setText 合成文本 设置要转为语音的合成文本
setBakerCallback 数据回调方法 设置返回数据的callback
setTtsToken 设置默认Token 私有化部署后,需要设置默认token值:default,以便不做token验证。
setUrl 私有化服务器地址 设置私有化部署的服务器地址。
setUrl 私有化服务器地址 设置私有化部署的服务器地址。
setVoice 发音人 设置发音人声音名称,默认:Jiaojiao
setLanguage 合并文本语言类型 合成请求文本的语言
ZH(中文和中英混)
ENG(纯英文,中文部分不会合成)
CAT(粤语)
SCH(四川话)
TJH(天津话)
TAI(台湾话)
KR(韩语)
BRA(巴葡语)
JP(日语)
ESP(西班牙西语)
MEX(墨西哥西语)
UYG(维吾尔语)
默认:ZH
setSpeed 语速 设置播放的语速,在0~9之间(支持浮点数),不传时默认为5
setVolume 音量 设置语音的音量,在0~9之间(只支持整型值),不传时默认值为5
setPitch 音调 设置语音的音调,在0~9之间,(支持浮点值),默认值为5
setAudioType 返回数据文件格式 音频种类:
audiotype = 4,返回16K采样率的pcm格式,默认值
audiotype = 5,返回8K采样率的pcm格式
spectrum 高频频谱 高频频谱:取值范围1~20; 默认值为1,不调整频谱;
1代表不调整频谱;
1以上的值代表高频能量增加幅度, 值越大声音的高频部分增强越多,听起来更亮和尖细
spectrum_8k 低频部分频谱 低频部分频谱:取值范围0~20;默认值为0,仅针对8K音频频谱的调整。 组合形式只有以下1种:
audiotype=5&spectrum_8k=xx
interval 音子级别时间戳功能 音子级别时间戳功能:
0:关闭音子级别时间戳功能
1:开启音子级别时间戳功能
enable_subtitles 字级别时间戳功能 字级别时间戳功能,同interval=”1”一起使用:
0:关闭字级别时间戳功能
1:开启字级别时间戳功能
详细使用方法参考 语音合成时间戳
silence 标点符号静音时长 设置标点符号静音时长:
0:默认值
1:句中标点停顿较短,适合直播、配音解说等场景
2:句中标点停顿较长,适合朗诵、教学等场景

注意:如果调整了参数中的采样率或码率,记得注意(Demo中示例的)播放器的采样率也要同步调整。

回调类方法说明

BakerCallback 回调类方法说明:

参数 参数名称 说明
onSynthesisStarted 开始合成 开始合成
onPrepared 准备就绪 第一帧数据返回时的回调,此时可以使用数据执行播放。
onBinaryReceived 流式持续返回数据的接口回调 data 合成的音频数据。已使用base64加密,客户端需进行base64解密。
audioType 音频类型,如audio/pcm。
interval 音频interval信息,可能为空。
endFlag 是否时最后一个数据块,false:否,true:是。
interval_x
interval-info-x: L=1&T=1,L=1&T=2,L=1&T=1,L=1&T=2,L=1&T=5
L表示语言种类,目前支持1:纯中文,5:中英混
T表示interval类型,0:默认值,1:声母,2:韵母,3:儿化韵母,4:英文,5:#3静音
onSynthesisCompleted 合成完成 当onBinaryReceived方法中endFlag参数=true,即最后一条消息返回后,会回调此方法。
onTaskFailed 合成失败 返回msg内容格式为:{"code":40000,"message":"…","trace_id":" 1572234229176271"} trace_id是引擎内部合成任务ID。

返回结果参考示例:

{
      "code":90000,
      "message":"Success",
      "trace_id":" 1572234229176271"
      "data":{
        "idx":1,
        "audio_data":" P8EAPz/AQAGAPf/8v/n/wkAAwD//wsA7f/q/x",
        "audio_type":"audio/pcm",
        "interval":" h=0.083746&e=0.175807",
        "interval_x":"L=1&T=1,L=1&T=2"
        "end_flag":0
      }
}

BakerMediaCallback回调类方法说明

参数 参数名称 说明
onPrepared 准备就绪 第一帧数据返回时的回调,此时可以使用数据执行播放。
onCacheAvailable 数据缓存进度回调 percentsAvailable 已缓存的百分比,整数型,取值范围0-100
playing 开始播放回调 播放状态切换:开始播放时的回调。
noPlay 暂停或停止播放回调 播放状态切换:暂停或停止播放时的回调。
onCompletion 播放结束 当数据播放完成时的回调。
onError 各类失败时的回调 返回msg内容格式为:{"code":40000,"message":"…","trace_id":" 1572234229176271"} trace_id是引擎内部合成任务ID。

错误码

若使用2.2.3以前版本的jar包,无需升级校正为最新的错误码。使用2.2.3及以后的版本,需要参考以下最新版错误码执行。

失败时返回的msg格式:

参数名称 类型 描述
code int 错误码10xxxxx表示服务端相关错误,20xxxxx、30xxxxx表示SDK相关错误
message string 错误描述
trace_id string 引擎内部合成任务id

对应code值:

错误码 含义
11180001 缺少ClientId
11180002 缺少Secret
11180003 token获取失败
11180004 合成文本内容为空
11180005 发音人参数错误
11180006 返回结果解析错误
11180007 合成失败,失败信息相关错误
11180008 播放器相关错误
11180009 合成文本内容转码错误
11180010 返回结果解析错误;返回null
10001 access_token参数获取失败或未传输
10002 domain参数值错误
10003 language参数错误
10004 voice_name参数错误
10005 audiotype参数错误
10006 rate参数错误
10007 idx错误
10008 single错误
10009 text参数错误
10010 文本太长
20000 获取资源错误
20001 断句失败
20002 分段数错误
20003 分段后的文本长度错误
20004 获取引擎链接错误
20005 RPC链接失败错误
20006 引擎内部错误
20007 操作redis错误
20008 音频编码错误
30000 鉴权错误(access_token值不正确或已经失效)
30001 并发错误
30002 内部配置错误
30003 json串解析错误
30004 获取url失败
30005 获取客户IP地址失败
30006 任务队列错误
40001 请求不是json结构
40002 缺少必须字段
40003 版本错误
40004 字段值类型错误
40005 参数错误
50001 处理超时
50002 内部rpc调用失败
50004 其他内部错误