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 旨在使开发者更方便的接入标贝科技的变声功能。里面内置了录音功能,免去开发者实现录音的功能。

SDK 下载地址

下载地址: https://github.com/data-baker/BakerAndroidSdks

Android Studio集成SDK(参考demo)

  • 1. 在工程下的build.gradle文件中添加以下代码。
    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
  • 2. 在主model下build.gradle文件中添加以下代码。建议使用此方式
    dependencies {
      implementation 'com.github.data-baker.BakerAndroidSdks:bakerbasecomponent:2.0.11'
      implementation ' com.github.data-baker.BakerAndroidSdks:bakerhttp:2.0.11'
      implementation ' com.github.data-baker.BakerAndroidSdks: voiceconvert:2.0.11'
      implementation 'com.squareup.okhttp3:okhttp:4.2.2'
      implementation 'com.google.code.gson:gson:2.8.6'
    }
    • 或者将.jar/.aar包添加至工程module下,lib文件夹里。
    • 2021年6月,标贝计划开源sdk源码,所以也可以直接集成源码model。
    • 注意:SDK内使用了okhttp、gson所以需要开发者添加以这两个库,若工程内已存在,无需重复添加。okhttp请使用4.x版本,以免出现版本兼容bug。
  • 3. 在主Module的AndroidManifest.xml文件中添加权限。6.0以上需要动态申请RECORD_AUDIO权限。
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
  • 4. 在主Module的AndroidManifest.xml文件中的application节点添加以下属性。
    android:usesCleartextTraffic="true"
  • 5.关于混淆

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

    -keep class com.databaker.voiceconvert.** { *; }
    -keep class com.baker.sdk.http.**{*;}
    -keep class com.baker.sdk.basecomponent.**{*;}

SDK 关键类

1. VoiceConvertManager:声音转换关键业务处理类,全局只需一个实例即可。

2. VoiceConvertCallBack:声音转换业务回调类。您可以在这些个回调方法中获取到当前转换的进度状态和各类数据结果,或者错误信息。注意回调方法是运行在子线程的。调用开始转换时 请将此callback提交给VoiceConvertManager实例。

SDK 调用说明

  • 1. 实例化VoiceConvertManager类,得到VoiceConvertManager的实例。

    VoiceConvertManager convertManager = new VoiceConvertManager();
  • 2. 初始化SDK。

    convertManager.init(Context context, String clientId, String clientSecret, AuthCallback authCallback);

    初始化这一步会进行网络请求,做授权操作。所以在实际调用过程中,请将此步骤尽可能提前调用,保障足够时间进行网络授权请求。

  • 3. 声音转换支持2种转换场景,第一种是SDK内调用手机麦克风录音、上传完成声音转换返回转换结果。此种方式需要接入方提前获取应用的录音权限。第二种场景是接收字节流,SDK收到数据后,上传服务器完成转换,返回转换结果。适用于语音文件识别或者调用方自有数据转换。

    第一种场景(参考: com.baker.sdk.demo.convert. VoiceConvertFromMicActivity):

    A. 需要应用取得录音权限。

    B. 通过VoiceConvertManager实例,设置各类参数。

    C. convertManager.startFromMic(callBack); 开启录音转换。

    D. 在VoiceConvertCallBack回调中接收状态、转换结果、原始录音数据或错误信息等。

    E. 通过convertManager.stopRecord();此方法结束录音转换。

    F. 根据回调方法onAudioOutput()中isLast参数判断转换数据返回是否完整结束。

    第二种场景(参考: com.baker.sdk.demo.convert. VoiceConvertFromFileActivity):

    A. 通过VoiceConvertManager实例,设置各类参数。

    B. convertManager. startFromBytes (callBack); 通知SDK准备转换。

    C. 在VoiceConvertCallBack的onReady() 回调方法中得到SDK已准备好后。

    D. 多次调用convertManager. sendAudio (byte[] data, boolean isLast);方法向SDK输入待转换语音字节流。此方法单次接收固定长度(5120)字节数组。最后一片数据可以是其他长度字节数组,且最后一片数据isLast=true的标签必须发送。

    E. 在VoiceConvertCallBack回调中接收状态、转换结果、原始录音数据或错误信息等。

    F. 此种方式,每次在调用convertManager. sendAudio时,前后2次间隔时 间不能超过10秒。

  • 4. 在确定不再使用转换后,调用convertManager.release()释放SDK资源。
  • 5. 如果需要发起新的转换请求,可以重复第3.3步。

参数说明

1. 基本调用方法说明

参数 参数名称 是否必填 说明
init() 初始化SDK 必须调用此方法初始化SDK,祥见3.2
startFromMic() 开启录音转换 使用sdk内部唤起的录音,进行声音转换
stopRecord() 结束录音 配合startFromMic()方法使用,结束sdk录音转换。
startFromBytes() 开启数据转换 文件或者调用者自有音频数据转换
sendAudio() 发送转换数据 配合startFromBytes方法使用,在onReady()之后,可多次调用此方法。
setVoiceName() 设置目标声音模型名称 音色名称,默认音色"Vc_jiaojiao"
setVadEnable() 设置开启VAD true代表启动服务端vad功能,默认false。如果启动系统会根据输入音频进行检测,过滤环境噪音。否则直接将原始输入音频进行转换。默认false。
setAudioAlign() 设置音频是否对齐 true代表输出音频与输入音频进行对齐,默认false。即开启vad时会保留静音部分,false丢弃静音部分。 默认false。
release() 释放sdk资源 在确定不再使用服务之后,可以调用此方法回收sdk资源,避免内存泄漏等情况。

2. VoiceConvertCallBack回调类方法说明

参数 参数名称 说明
onReady() 准备就绪 授权验证通过,且与服务器连接成功,准备就绪回调
canSpeech() SDK mic准备就绪时回调 mic初始化成功后,只有使用sdk唤起的系统麦克风录音,才会有此回调
onOriginData(byte[] data, int volume) 原始音频 和 分贝值回调 只有使用sdk唤起的系统麦克风录音,才会有此回调
onAudioOutput(byte[] audioArray, boolean isLast, String traceId) 变声后的音频回调 audioArray 音频序列,isLast 是否是最后一包,traceId 本次声音转换唯一标识id
onError(String errorCode, String errorMessage, String traceId) 转换出现错误 String code是错误码,错误码具体请参考以下错误码对照表。String message是具体的错误信息日志。traceId是服务器运行日志id,可能为空,供错误追溯用。转换过程中出现各种错误情况都会回调此方法。一旦出现错误,此次转换任务中断。

错误码

错误码 含义 类别
19180001 没有token,请先调用 init 方法初始化 SDK内部错误码
19180002 网络请求出现错误
19180003 没有录音权限
10000 ws数据包解析错误 请求参数错误
10001 ws数据包json解析错误
10002 请求参数缺少access_token
10003 access_token过期或不合法
10004 请求参数缺少 voice_name
10005 voice_name 不存在
20000 引擎资源不足,拒绝新建会话。 服务端错误
20001 声音转换出错
20002 动态内存申请失败
20003 向客户端推送响应失败
20004 其他未定义的内部错误
30000 会话进行时客户端主动关闭 客户端错误
30001 会话空闲超时,超过一定时间没有数据传输导致会话空闲超时,主动断开连接。