跳转到主要内容
Sambert

语音合成 Sambert iOS SDK

使用 Sambert iOS SDK 将文本实时合成为高质量语音,支持流式音频输出与字/音素级时间戳

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

快速开始

  1. 获取 API Key获取 API Key
    当需要为第三方应用或用户提供临时访问权限,或者希望严格控制敏感数据访问、删除等高风险操作时,建议使用临时 API Key。临时 API Key 拥有固定的 60 秒有效期,过期后需重新获取。
  2. 下载 SDK 并运行示例代码
    • 下载最新 SDK 整合包。
    • 解压 ZIP 包,将其中的 nuisdk.framework 添加到工程。
    • Build Phases → Link Binary With Libraries 中添加 nuisdk.framework
    • General → Frameworks, Libraries, and Embedded Content 中将 nuisdk.framework 设置为 Embed & Sign
    • 用 Xcode 打开示例工程。示例代码位于 DashSambertTTSViewController,替换 API Key 后体验功能。

调用步骤

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

请求参数

连接与控制参数

通过在 nui_tts_initialize 接口的 parameters 参数中传入一个 JSON 字符串来配置。 参数示例(以下为 JSON 字符串示例,参数未完整列出,请按实际需求补充):
{
    "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
    "apikey": "$DASHSCOPE_API_KEY",
    "device_id": "my_device_id"
}
参数说明
参数类型是否必须说明
urlString服务地址,固定为 wss://dashscope.aliyuncs.com/api-ws/v1/inference
apikeyStringAPI Key。建议使用时效性短、安全性更高的临时 API Key,以降低长期有效 Key 泄露的风险。
device_idString用于标识终端用户的唯一字符串,可设为应用内用户 ID 或客户端生成的设备唯一标识符。此 ID 主要用于日志追踪和问题排查。
debug_pathString日志文件的存储路径。此参数仅在调用 nui_tts_initialize 接口时将 save_log 设为 YES 时生效。此时必须设置日志文件路径,否则将报错。本地最多保留两个日志文件。
max_log_file_sizeint设定日志文件的最大字节数。此参数仅在 save_log 设为 YES 时生效。默认值:104857600(100 MiB)。
log_track_levelint控制通过日志回调(onNuiTtsLogTrackCallback)对外发送的日志内容的过滤级别。默认值:2。取值范围:0(VERBOSE)、1(DEBUG)、2(INFO)、3(WARNING)、4(ERROR)、5(NONE,关闭此功能)。注意:log_track_levellevel(通过 nui_tts_initialize 设置)共同决定最终回调的日志,日志级别必须同时满足两者的阈值。

语音合成效果参数

通过 nui_tts_set_param 接口进行设置。
参数类型是否必须说明
modelString语音合成模型。
formatString音频编码格式。支持 pcmwavmp3。默认值: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是否开启字级别时间戳。1:开启;0:关闭。默认值:0
phoneme_timestamp_enabledString是否开启音素级别时间戳。仅在 word_timestamp_enabled 设为 1 时生效。1:开启;0:关闭。默认值:0
enable_audio_decoderString是否开启内置音频解码器。1:开启(当 formatmp3 时,onTtsDataCallback 将返回解码后的 PCM 数据);0:关闭。默认值:0

关键接口

NeoNuiTts

nui_tts_initialize

初始化语音合成 SDK 实例。SDK 为单例模式,在调用 nui_tts_release 前禁止重复初始化。 方法签名
-(int) nui_tts_initialize:(const char *)parameters
                 logLevel:(NuiSdkLogLevel)level
                  saveLog:(BOOL)save_log;
参数说明
参数类型说明
parameterschar*JSON 字符串,包含鉴权、连接和调试参数。参见连接与控制参数
levelNuiSdkLogLevel控制 SDK 自身日志的打印级别。
save_logBOOL是否保存本地日志。若为 YES,须在连接与控制参数通过 debug_path 指定路径,并可通过 max_log_file_size 设置文件大小。
返回值:返回错误码,参见错误码查询

nui_tts_set_param

以键值对的形式设置语音合成效果参数。在 nui_tts_play 之前调用。 方法签名
-(int) nui_tts_set_param:(const char *)param
                   value:(const char *)value;
参数说明
参数类型说明
paramchar*语音合成效果参数名。
valuechar*语音合成效果参数值。
返回值:返回错误码,参见错误码查询

nui_tts_get_param

获取参数值。主要用于错误排查。 方法签名
-(const char *) nui_tts_get_param:(const char *)param;
参数说明
参数类型说明
paramchar*参数名。目前仅支持 "error_msg"
返回值:返回参数值。

nui_tts_play

启动一个语音合成任务。 方法签名
-(int) nui_tts_play:(const char *)priority
             taskId:(const char *)taskid
              text:(const char *)text;
参数说明
参数类型说明
prioritychar*任务优先级。请将其设为 1
taskidchar*任务 ID。传入 null 时由 SDK 自动生成。
textchar*待合成文本。
返回值:返回错误码,参见错误码查询

nui_tts_pause

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

nui_tts_resume

恢复处于暂停的语音合成任务。 方法签名
-(int) nui_tts_resume;
返回值:返回错误码,参见错误码查询

nui_tts_cancel

取消指定的语音合成任务。
此操作仅取消从服务端的数据拉取,播放器中已缓存的音频数据会继续播放。
方法签名
-(int) nui_tts_cancel:(const char *)taskid;
参数说明
参数类型说明
taskidchar*要取消的任务 ID。若传入 null,则取消所有正在暂停/进行中的合成任务。
返回值:返回错误码,参见错误码查询

nui_tts_release

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

NeoNuiTtsDelegate:监听回调

onNuiTtsEventCallback:监听事件

方法签名
- (void)onNuiTtsEventCallback:(NuiSdkTtsEvent)event taskId:(char*)taskid code:(int)code;
参数说明
参数类型说明
eventNuiSdkTtsEvent回调事件。
taskidchar*语音合成任务 ID。
codeint错误码,仅在事件 TTS_EVENT_ERROR 中有效。参见错误码查询

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

方法签名
- (void)onNuiTtsUserdataCallback:(char*)info infoLen:(int)info_len buffer:(char*)buffer len:(int)len taskId:(char*)task_id;
参数说明
参数类型说明
infochar*JSON 格式的时间戳结果。语音合成效果参数 word_timestamp_enabled 设为 "1" 时生效。
info_lenintinfo 字段的数据长度,可忽略。
bufferchar*返回当前片段的音频数据。
lenint音频数据的长度(字节)。
task_idchar*语音合成任务 ID。

onNuiTtsLogTrackCallback:监听追踪日志

此回调用于接收 SDK 内部的详细日志,方便进行问题定位和调试。 方法签名
- (void)onNuiTtsLogTrackCallback:(NuiSdkLogLevel)level
                      logMessage:(const char *)log;

NuiSdkTtsEvent:事件类型

事件说明
TTS_EVENT_START合成任务开始,即将有音频数据返回。
TTS_EVENT_END合成任务正常结束,所有音频数据已通过回调送出。
TTS_EVENT_CANCEL合成任务已取消。
TTS_EVENT_PAUSE合成任务已暂停。
TTS_EVENT_RESUME合成任务已恢复。
TTS_EVENT_ERROR合成过程中发生错误。此时可通过 nui_tts_get_param: "error_msg" 获取详细错误信息。

模型列表

默认采样率代表当前模型的最佳采样率,缺省条件下默认按照该采样率输出,同时支持降采样或升采样。

中文(48kHz)

音色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

中文(16kHz)

音色model 参数时间戳支持适用场景特色语言默认采样率(Hz)
知浩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

多语种(16kHz)

音色model 参数时间戳支持适用场景特色语言默认采样率(Hz)
Camilasambert-camila-v1通用场景西班牙语女声西班牙语16k
Perlasambert-perla-v1通用场景意大利语女声意大利语16k
Indahsambert-indah-v1通用场景印尼语女声印尼语16k
Clarasambert-clara-v1通用场景法语女声法语16k
Hannasambert-hanna-v1通用场景德语女声德语16k

英语(16kHz)

音色model 参数时间戳支持适用场景特色语言默认采样率(Hz)
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

泰语(16kHz)

音色model 参数时间戳支持适用场景特色语言默认采样率(Hz)
Waansambert-waan-v1通用场景泰语女声泰语16k