跳转到主要内容
Sambert

Sambert 语音合成 Android SDK

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

Sambert Android SDK 为 Android 应用提供原生实时语音合成能力。它通过 WebSocket 连接在合成过程中流式传输音频数据。

快速开始

1

获取 API Key

获取 API Key 并将其配置为环境变量以确保安全。为第三方应用或用户提供临时访问权限,或需要对敏感操作进行严格控制时,使用临时 API Key。临时 API Key 默认 60 秒后过期。
2

下载 SDK 并运行示例

下载最新 SDK 包。解压后,在 app/libs 目录下找到 AAR 格式的 SDK 并添加到项目依赖中。如需在 Android C++ 工程中集成,可使用压缩包中的 android_libsandroid_include 获取动态库和头文件。在 Android Studio 中打开项目,示例代码位于 DashSambertTtsActivity.java。替换 API Key 后运行示例即可体验功能。
3

初始化 SDK

调用 tts_initialize,在 ticket JSON 字符串中传入连接参数。
4

设置合成参数

通过 tts_initializeticket 参数设置连接与控制参数,通过 setparamTts 设置语音合成效果参数。
5

开始合成

调用 startTts 开始语音合成,结果通过回调返回。
6

接收音频数据

onTtsDataCallback 回调中接收音频数据。建议流式播放,如需本地保存,将音频数据追加到同一文件中直至合成结束。
7

释放资源

任务结束后调用 tts_release 释放 SDK 资源。

请求参数

连接与控制参数

将这些参数以 JSON 字符串形式传入 tts_initializeticket 参数。
{
    "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
    "apikey": "st-****",
    "mode_type": "2",
    "device_id": "my_device_id"
}
参数类型是否必填描述
urlString服务地址,固定为 wss://dashscope.aliyuncs.com/api-ws/v1/inference
apikeyStringAPI Key。建议使用短效临时 API Key以降低长期密钥泄露风险。
mode_typeString模式类型,语音合成在线模式固定为字符串 "2"
device_idString唯一标识终端用户的字符串,如应用内用户 ID 或客户端生成的设备标识。用于日志追踪和问题排查。
debug_pathString日志文件存储路径。仅在 tts_initializesave_log 设置为 true 时生效。开启时必须设置该路径否则会报错。本地最多保留两个日志文件。
max_log_file_sizeint单个日志文件最大大小(字节)。仅在 save_logtrue 时生效。默认值 104857600(100 MiB)。
log_track_levelint过滤通过 onTtsLogTrackCallback 回调发送的日志内容。默认值 2。取值:0 = VERBOSE,1 = DEBUG,2 = INFO,3 = WARNING,4 = ERROR,5 = NONE(关闭回调)。日志条目仅在级别同时大于等于 log_track_leveltts_initialize 中设置的 level 时才会发送。

语音合成效果参数

在调用 startTts 之前通过 setparamTts 设置这些参数。
参数类型是否必填描述
modelString语音合成模型,参见下方模型列表
formatString音频编码格式,支持 pcmwavmp3。默认值 pcm
volumeString音量大小。默认值 50,取值范围 [0, 100]。音量与该值呈线性关系,0 为静音,100 为最大音量。
sample_rateString采样率(Hz)。默认值为模型默认采样率。建议使用模型默认值,若不匹配服务端会进行重采样。
rateString语速。默认值 1.0,取值范围 [0.5, 2.0]。小于 1.0 减慢,大于 1.0 加快。
pitchString音调倍数。默认值 1.0,取值范围 [0.5, 2.0]。大于 1.0 升高音调,小于 1.0 降低音调。与感知音调的关系并非严格线性,建议测试找到合适的值。
word_timestamp_enabledString是否开启词级别时间戳。默认值 0。取值:1 = 开启,0 = 关闭。
phoneme_timestamp_enabledString是否开启音素级别时间戳。仅在 word_timestamp_enabled1 时生效。默认值 0。取值:1 = 开启,0 = 关闭。
enable_audio_decoderString是否开启内置音频解码器。默认值 0。当 formatmp3 时,设置为 "1" 可启用 SDK 内置解码器,onTtsDataCallback 将返回解码后的 PCM 数据。

核心接口

NativeNui

tts_initialize

初始化语音合成 SDK 实例。SDK 为单例模式,在调用 tts_release 之前不要重复调用 tts_initialize
该方法会阻塞调用线程,请在非 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 取消。暂停状态下无法启动新的合成任务。
该操作仅暂停从服务端获取数据,播放器已缓冲的音频数据会继续播放。
方法签名
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回调事件,参见下方TtsEvent
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") 获取详情。错误响应结构如下:
{
  "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 不会带来额外收益。
音色模型时间戳适用场景角色支持语言默认采样率(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
非实时

Paraformer录音文件识别Python SDK