跳转到主要内容
Sambert

Sambert 语音合成 Android SDK

使用原生 SDK 将 Sambert 模型的实时文本转语音功能集成到 Android 应用中。

本文档提供了语音合成 Sambert Android SDK 的详细使用指南,帮助您将文本转换为高质量、富有表现力的语音。 用户指南:关于模型介绍和选型建议请参见语音合成模型 在线体验:暂不支持。

快速开始

  1. 获取 API Key获取 API Key,为安全起见,推荐将 API Key 配置到环境变量。
    当需要为第三方应用或用户提供临时访问权限,或者希望严格控制敏感数据访问、删除等高风险操作时,建议使用临时 API Key。临时 API Key 默认拥有 60 秒有效期,过期后需重新获取。
  2. 下载 SDK 并运行示例代码
    • 下载最新 SDK 整合包。
    • 解压 ZIP 包。在 app/libs 目录中获取 AAR 格式 SDK,并添加到项目依赖。需要 Android CPP 接入时,使用 ZIP 包内的 android_libsandroid_include 获取动态库和头文件。
    • 用 Android Studio 打开工程。示例代码位于 DashSambertTtsActivity.java,替换 API Key 后体验功能。

调用步骤

  1. 初始化 SDK。
  2. 按业务需求设置参数:通过 tts_initialize 接口的 ticket 参数设置连接与控制参数;通过 setparamTts 接口设置语音合成效果参数
  3. 调用 startTts 开始语音合成。
  4. onTtsDataCallback 回调中获取音频数据,建议使用流式播放。如需保存本地,按追加模式将音频写入同一文件,直到合成完成。
  5. 任务结束后,调用 tts_release 释放 SDK 资源。

请求参数

连接与控制参数

通过在 tts_initialize 接口的 ticket 参数中传入一个 JSON 字符串来配置。 参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{
  "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
  "apikey": "sk-****",
  "device_id": "my_device_id"
}
参数说明
参数类型是否必须说明
urlString服务地址,固定为 wss://dashscope.aliyuncs.com/api-ws/v1/inference
apikeyStringAPI Key。建议使用时效性短、安全性更高的临时 API Key,以降低长期有效 Key 泄露的风险。
mode_typeString模式类型。必须设置为字符串 "2",代表在线语音合成模式。
device_idString用于标识终端用户的唯一字符串,可设为应用内用户 ID 或客户端生成的设备唯一标识符。此 ID 主要用于日志追踪和问题排查。
debug_pathString日志文件的存储路径。此参数仅在调用 tts_initialize 接口时将 save_log 设为 true 时生效。此时必须设置日志文件路径,否则将报错。本地最多保留两个日志文件。
max_log_file_sizeint设定日志文件的最大字节数。此参数仅在调用 tts_initialize 接口时将 save_log 设为 true 时生效。默认值:104857600(100 * 1024 * 1024 字节,即 100 MiB)。
log_track_levelint控制通过日志回调(onTtsLogTrackCallback)对外发送的日志内容的过滤级别。默认值:2。取值范围:0(LOG_LEVEL_VERBOSE)、1(LOG_LEVEL_DEBUG)、2(LOG_LEVEL_INFO)、3(LOG_LEVEL_WARNING)、4(LOG_LEVEL_ERROR)、5(LOG_LEVEL_NONE,表示关闭此功能)。注意:log_track_levellog_level(通过 tts_initialize 接口设置)共同决定最终回调的日志。一条日志的级别数值必须同时大于或等于 log_track_levellog_level 的值,才会被回调。例如,log_track_level 设为 2(INFO),log_level 设为 3(WARNING),则只有 WARNING 及以上级别(数值 >=3)的日志才会被回调。

语音合成效果参数

通过 setparamTts 接口进行设置。
参数类型是否必须说明
modelString语音合成模型
formatString音频编码格式。支持 pcm、wav、mp3。默认值:pcm。
volumeString音量。默认值:50。取值范围:[0, 100]。50 代表标准音量。音量大小与该值呈线性关系,0 为静音,100 为最大音量。
sample_rateString采样率(单位 Hz)。默认值:模型对应的默认采样率。推荐使用模型的默认值。若不匹配,服务端会进行重采样。
rateString语速。默认值:1.0。取值范围:[0.5, 2.0]。1.0 为标准语速,小于 1.0 则减慢,大于 1.0 则加快。
pitchString音高。该值作为音高调节的乘数,但其与听感上的音高变化并非严格的线性或对数关系,建议通过测试选择合适的值。默认值:1.0。取值范围:[0.5, 2.0]。1.0 为音色自然音高。大于 1.0 则音高变高,小于 1.0 则音高变低。
word_timestamp_enabledString是否开启字级别时间戳。默认值:0。取值范围:1(开启)、0(关闭)。
phoneme_timestamp_enabledString是否开启音素级别时间戳。此参数仅在 word_timestamp_enabled 设为 1(开启)时生效。默认值:0。取值范围:1(开启)、0(关闭)。
enable_audio_decoderString是否开启内置音频解码器。默认值:0。取值范围:1(开启,当 format 为 mp3 时,设为 "1" 可开启 SDK 内置解码器,此时 onTtsDataCallback 将返回解码后的 PCM 数据)、0(关闭)。

关键接口

NativeNui

tts_initialize

初始化语音合成 SDK 实例。SDK 为单例模式,在调用 tts_release 前禁止重复初始化。
此接口会引起阻塞,应在非 UI 线程调用。
方法签名
public synchronized int tts_initialize(INativeTtsCallback callback,
                                       String ticket,
                                       final Constants.LogLevel level,
                                       boolean save_log)
参数说明
参数类型说明
callbackINativeTtsCallback事件和数据回调接口的实现。
ticketStringJSON 字符串,包含鉴权、连接和调试参数。参见连接与控制参数
levelConstants.LogLevel控制 SDK 自身日志的打印级别。
save_logboolean是否保存本地日志。若为 true,须在连接与控制参数中通过 debug_path 指定路径,并可通过 max_log_file_size 设置文件大小。
返回值说明 返回错误码,参见错误码参考

setparamTts

以键值对的形式设置语音合成效果参数。在 startTts 之前调用。 方法签名
public synchronized int setparamTts(String param, String value)
参数说明
参数类型说明
paramString语音合成效果参数名。
valueString语音合成效果参数值。
返回值说明 返回错误码,参见错误码参考

getparamTts

获取参数值。主要用于错误排查。 方法签名
public String getparamTts(String param);
参数说明
参数类型说明
paramString参数。目前仅支持 "error_msg"。
返回值说明 返回参数值。

startTts

启动语音合成任务。合成结果通过回调返回。 方法签名
public synchronized int startTts(String priority, String taskid, String text)
参数说明
参数类型说明
priorityString任务优先级。请将其设为 1。
taskidString任务 ID。传入 null 时由 SDK 自动生成。
textString待合成文本。
返回值说明 返回错误码,参见错误码参考

pauseTts

暂停当前语音合成任务。任务暂停后,可通过 resumeTts 恢复,或通过 cancelTts 彻底取消。在任务暂停期间,SDK 不支持启动新的合成任务。
此操作仅暂停从服务端的数据拉取,播放器中已缓存的音频数据会继续播放。
方法签名
public synchronized int pauseTts()
返回值说明 返回错误码,参见错误码参考

resumeTts

恢复处于暂停的语音合成任务。 方法签名
public synchronized int resumeTts()
返回值说明 返回错误码,参见错误码参考

cancelTts

取消合成任务。
此操作仅取消从服务端的数据拉取,播放器中已缓存的音频数据会继续播放。
方法签名
public synchronized int cancelTts(String taskid)
参数说明
参数类型说明
taskidString要取消的任务 ID。若传入 null,则取消所有正在暂停/进行中的合成任务。
返回值说明 返回错误码,参见错误码参考

tts_release

释放 SDK 所有内部资源,并强制终止所有正在进行的合成任务。此方法调用后,SDK 实例将变为不可用状态,如需再次使用,必须重新调用 tts_initialize 进行初始化。 方法签名
public synchronized int tts_release()
返回值说明 返回错误码,参见错误码参考

INativeTtsCallback:监听回调

onTtsEventCallback:监听事件

方法签名
void onTtsEventCallback(TtsEvent event, String task_id, int ret_code);
参数说明
参数类型说明
eventTtsEvent回调事件。
task_idString语音合成任务 ID。
ret_codeint错误码,仅在事件 TTS_EVENT_ERROR 中有效。参见错误码参考

onTtsDataCallback:监听音频数据和时间戳信息

方法签名
void onTtsDataCallback(String info, int info_len, byte[] data);
参数说明
参数类型说明
infoStringJSON 格式的时间戳结果。语音合成效果参数 word_timestamp_enabled 设为 "1" 时生效。
info_lenintinfo 字段的数据长度,可忽略。
databyte[]返回当前片段的音频数据。

onTtsLogTrackCallback:监听追踪日志

此回调用于接收 SDK 内部的详细日志,方便进行问题定位和调试。
default void onTtsLogTrackCallback(Constants.LogLevel level, String log)

TtsEvent:事件类型

事件说明
TTS_EVENT_START合成任务开始,即将有音频数据返回。
TTS_EVENT_END合成任务正常结束,所有音频数据已通过回调送出。
TTS_EVENT_CANCEL合成任务已取消。
TTS_EVENT_PAUSE合成任务已暂停。
TTS_EVENT_RESUME合成任务已恢复。
TTS_EVENT_ERROR合成过程中发生错误。此时可通过 getparamTts("error_msg") 获取详细错误信息。
TTS_EVENT_ERROR 时错误响应结构示例:
{
  "header": {
    "task_id": "xxxxxxxxx",
    "event": "task-failed",
    "error_code": "InvalidParameter",
    "error_message": "Please ensure input text is valid.",
    "attributes": {}
  },
  "payload": {}
}

模型列表

默认采样率代表当前模型的最佳采样率,缺省条件下默认按照该采样率输出,同时支持降采样或升采样。如知妙音色,默认采样率 16 kHz,使用时可以降采样到 8 kHz,但升采样到 48 kHz 时不会有额外效果提升。
音色model 参数时间戳支持适用场景特色语言默认采样率(Hz)
知楠sambert-zhinan-v1通用场景广告男声中文+英文48k
知琪sambert-zhiqi-v1通用场景温柔女声中文+英文48k
知厨sambert-zhichu-v1新闻播报舌尖男声中文+英文48k
知德sambert-zhide-v1新闻播报新闻男声中文+英文48k
知佳sambert-zhijia-v1新闻播报标准女声中文+英文48k
知茹sambert-zhiru-v1新闻播报新闻女声中文+英文48k
知倩sambert-zhiqian-v1配音解说、新闻播报资讯女声中文+英文48k
知祥sambert-zhixiang-v1配音解说磁性男声中文+英文48k
知薇sambert-zhiwei-v1阅读产品简介萝莉女声中文+英文48k
知浩sambert-zhihao-v1通用场景咨询男声中文+英文16k
知婧sambert-zhijing-v1通用场景严厉女声中文+英文16k
知茗sambert-zhiming-v1通用场景诙谐男声中文+英文16k
知墨sambert-zhimo-v1通用场景情感男声中文+英文16k
知娜sambert-zhina-v1通用场景浙普女声中文+英文16k
知树sambert-zhishu-v1通用场景资讯男声中文+英文16k
知莎sambert-zhistella-v1通用场景知性女声中文+英文16k
知婷sambert-zhiting-v1通用场景电台女声中文+英文16k
知笑sambert-zhixiao-v1通用场景资讯女声中文+英文16k
知雅sambert-zhiya-v1通用场景严厉女声中文+英文16k
知晔sambert-zhiye-v1通用场景青年男声中文+英文16k
知颖sambert-zhiying-v1通用场景软萌童声中文+英文16k
知媛sambert-zhiyuan-v1通用场景知心姐姐中文+英文16k
知悦sambert-zhiyue-v1客服温柔女声中文+英文16k
知柜sambert-zhigui-v1阅读产品简介直播女声中文+英文16k
知硕sambert-zhishuo-v1数字人自然男声中文+英文16k
知妙(多情感)sambert-zhimiao-emo-v1阅读产品简介、数字人、直播多种情感女声中文+英文16k
知猫sambert-zhimao-v1阅读产品简介、配音解说、数字人、直播直播女声中文+英文16k
知伦sambert-zhilun-v1配音解说悬疑解说中文+英文16k
知飞sambert-zhifei-v1配音解说激昂解说中文+英文16k
知达sambert-zhida-v1新闻播报标准男声中文+英文16k
Camilasambert-camila-v1通用场景西班牙语女声西班牙语16k
Perlasambert-perla-v1通用场景意大利语女声意大利语16k
Indahsambert-indah-v1通用场景印尼语女声印尼语16k
Clarasambert-clara-v1通用场景法语女声法语16k
Hannasambert-hanna-v1通用场景德语女声德语16k
Bethsambert-beth-v1通用场景咨询女声美式英文16k
Bettysambert-betty-v1通用场景客服女声美式英文16k
Callysambert-cally-v1通用场景自然女声美式英文16k
Cindysambert-cindy-v1通用场景对话女声美式英文16k
Evasambert-eva-v1通用场景陪伴女声美式英文16k
Donnasambert-donna-v1通用场景教育女声美式英文16k
Briansambert-brian-v1通用场景客服男声美式英文16k
Waansambert-waan-v1通用场景泰语女声泰语16k