本文档提供了Gummy实时语音识别/翻译iOS SDK的详细使用指南,帮助您将语音转换为文本。
用户指南:关于模型介绍和选型建议请参见实时语音识别-Paraformer/Fun-ASR/Gummy和实时语音翻译。
在线体验:模型体验
快速开始
获取API Key:获取API Key
说明当需要为第三方应用或用户提供临时访问权限,或者希望严格控制敏感数据访问、删除等高风险操作时,建议使用临时API Key。临时API Key拥有固定的60秒有效期,过期后需重新获取。
下载SDK并运行示例代码:
解压 ZIP 包,将其中的 nuisdk.framework 添加到工程。
在 Build Phases → Link Binary With Libraries 中添加 nuisdk.framework。
在 General → Frameworks, Libraries, and Embedded Content 中将 nuisdk.framework 设置为 Embed & Sign。
用 Xcode 打开示例工程。示例代码位于
DashGummySpeechTranscriberViewController,替换 API Key 后体验功能。
调用步骤
初始化 SDK
按业务需求设置参数:通过nui_initialize接口设置连接与控制参数;通过nui_set_param接口设置语音识别效果参数。
调用nui_dialog_start启动识别流程。
在onNuiAudioStateChanged回调中,根据音频状态开启录音设备。
在onNuiNeedAudioData回调中持续提供录音数据。
在onNuiEventCallback回调中监听事件并获取语音识别结果。
调用nui_dialog_cancel停止识别,并通过监听EVENT_TRANSCRIBER_COMPLETE事件确认识别已结束。
当识别功能不再使用时,调用nui_release接口释放 SDK 资源。
请求参数
连接与控制参数
通过在nui_initialize接口的parameters参数中传入一个JSON字符串来配置。
参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{ "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference", "apikey": "st-****", "device_id": "my_device_id", "service_mode": "1" }参数说明
参数
类型
是否必须
说明
urlString是
服务地址,固定为
wss://dashscope.aliyuncs.com/api-ws/v1/inference。apikeyString是
API Key。建议使用时效性短、安全性更高的临时API Key,以降低长期有效Key泄露的风险。
service_modeString是
运行模式。实时语音识别固定为
"1"。device_idString是
用于标识终端用户的唯一字符串,可设为应用内用户ID或客户端生成的设备唯一标识符。此ID主要用于日志追踪和问题排查。
debug_pathString否
日志文件的存储路径。
此参数仅在调用nui_initialize接口时将
save_log设为YES时生效。此时必须设置日志文件路径,否则将报错。本地最多保留两个日志文件。
save_wavString否
是否保存调试用的音频文件。音频文件保存于
debug_path下。默认值:"false"。
取值范围:
"true":是
"false":否
此参数仅在调用nui_initialize接口时将
save_log设为true时生效。 同时,debug_path也必须被设置。max_log_file_sizeint否
设定日志文件的最大字节数。
此参数仅在调用nui_initialize接口时将
save_log设为YES时生效。默认值:104857600(100 * 1024 * 1024 字节, 即 100MiB)。
log_track_levelint否
控制通过日志回调(onNuiLogTrackCallback)对外发送的日志内容的过滤级别。
默认值: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_level与level(通过nui_initialize接口设置)共同决定最终回调的日志。一条日志的级别数值必须同时大于或等于log_track_level和level的值,才会被回调。例如,log_track_level设为2 (INFO),level设为3 (WARNING),则只有WARNING及以上级别(数值>=3)的日志才会被回调。
语音识别效果参数
通过在nui_set_param接口的params参数中传入一个JSON字符串来配置。
参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{ "service_type": 4, "nls_config": { "model": "gummy-realtime-v1", "sr_format": "pcm", "sample_rate": "16000" } }参数说明
一级参数
类型
是否必须
说明
service_typeint是
语音服务类型。实时语音识别固定为
4。nls_configobject是
语音识别核心配置对象,包含模型选择、识别效果控制等关键参数。
nls_config.modelstring是
语音识别模型。
nls_config.sr_formatstring是
待识别音频格式。
支持的音频格式:pcm、wav、opus。
重要opus:必须为PCM编码,SDK内部会将其编码成OPUS格式;
wav/pcm:必须为PCM编码。
nls_config.vocabulary_idstring否
热词词表ID,用于提升特定词汇的识别准确率。热词的使用方法请参见定制热词。
nls_config.source_languagestring否
源语言(待识别/翻译语言)代码。如果无法提前确定语种,可不设置,默认为
auto。支持语音识别的语言代码:
zh:中文
en:英文
ja:日语
ko:韩语
yue:粤语
de:德语
fr:法语
ru:俄语
es:西班牙语
it:意大利语
pt:葡萄牙语
id:印尼语
ar:阿拉伯语
th:泰语
支持翻译的语言代码:
zh:中文
en:英文
ja:日语
ko:韩语
yue:粤语
de:德语
fr:法语
ru:俄语
es:西班牙语
it:意大利语
pt:葡萄牙语
id:印尼语
ar:阿拉伯语
th:泰语
hi:印地语
da:丹麦语
ur:乌尔都语
tr:土耳其语
nl:荷兰语
ms:马来语
vi:越南语
nls_config.transcription_enabledboolean否
是否开启识别功能。
默认值:true。
取值范围:
true:开启
false:关闭
重要模型支持识别与翻译功能单独开启或全部开启,但需要至少开启一个能力。
识别与翻译功能分别计费,费用按各自调用量独立计算。两项服务的单价一致。
nls_config.translation_enabledboolean否
是否开启翻译功能。
默认值:false。
取值范围:
true:开启,一定要设置
translation_target_languages参数才能正常输出翻译结果false:关闭
nls_config.translation_target_languagesarray[string]否(
translation_enabled为true时必须)设置翻译目标语言代码。目标语言的代码与
source_language参数一致。目前支持的翻译包括:
中文(zh) → 英文(en)/日语(ja)/韩语(ko)/法语(fr)/德语(de)/西班牙语(es)/俄语(ru)/意大利语(it)
英文(en) → 中文(zh)/日语(ja)/韩语(ko)/葡萄牙语(pt)/法语(fr)/德语(de)/俄语(ru)/越南语(vi)/西班牙语(es)/荷兰语(nl)/丹麦语(da)/阿拉伯语(ar)/意大利语(it)/印地语(hi)/粤语(yue)/土耳其语(tr)/马来语(ms)/乌尔都语(ur)/印尼语(id)
日语(ja) → 泰语(th)/英文(en)/中文(zh)/越南语(vi)/法语(fr)/意大利语(it)/德语(de)/西班牙语(es)
韩语(ko) → 泰语(th)/英文(en)/中文(zh)/越南语(vi)/法语(fr)/西班牙语(es)/俄语(ru)/德语(de)
法语(fr) → 泰语(th)/英文(en)/日语(ja)/中文(zh)/越南语(vi)/德语(de)/意大利语(it)/西班牙语(es)/俄语(ru)/葡萄牙语(pt)
德语(de) → 泰语(th)/英文(en)/日语(ja)/中文(zh)/法语(fr)/越南语(vi)/俄语(ru)/西班牙语(es)/意大利语(it)/葡萄牙语(pt)
西班牙语(es) → 泰语(th)/英文(en)/日语(ja)/中文(zh)/法语(fr)/越南语(vi)/意大利语(it)/德语(de)/俄语(ru)/葡萄牙语(pt)
俄语(ru) → 泰语(th)/英文(en)/日语(ja)/中文(zh)/法语(fr)/越南语(vi)/德语(de)/西班牙语(es)/意大利语(it)/粤语(yue)/葡萄牙语(pt)
意大利语(it) → 泰语(th)/英文(en)/日语(ja)/中文(zh)/法语(fr)/越南语(vi)/西班牙语(es)/俄语(ru)/德语(de)
葡萄牙语(pt) → 英文(en)
印尼语(id) → 英文(en)
阿拉伯语(ar) → 英文(en)
泰语(th) → 日语(ja)/越南语(vi)/法语(fr)
印地语(hi) → 英文(en)
丹麦语(da) → 英文(en)
乌尔都语(ur) → 英文(en)
土耳其语(tr) → 英文(en)
荷兰语(nl) → 英文(en)
马来语(ms) → 英文(en)
越南语(vi) → 日语(ja)/法语(fr)
粤语(yue) → 中文(zh)/英文(en)
重要目前暂不支持同时翻译为多种语言,请仅设置一个目标语言以完成翻译。
nls_config.max_end_silenceint否
VAD(Voice Activity Detection,语音活动检测)断句的静音时长阈值(单位为ms)。
默认值:800。
取值范围:[200, 6000]。
当一段语音后的静音时长超过该阈值时,系统会判定该句子已结束。
关键接口
NeoNui
nui_initialize
初始化语音识别SDK实例。SDK为单例模式,在调用 nui_release 前禁止重复初始化。
方法签名
-(NuiResultCode) nui_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_set_param
以JSON格式设置语音识别效果参数。在 nui_dialog_start 之前调用。
nui_dialog_start
开始识别。
nui_dialog_cancel
结束识别或者立即取消当前交互。
方法签名
-(NuiResultCode) nui_dialog_cancel:(BOOL)force;参数说明
参数
类型
说明
forceBOOL是否强制结束而忽略最终结果。
YES:不等待服务端返回最终识别结果就立即结束任务。NO:结束任务,但是会等待完整结果返回。
返回值说明
返回错误码,参见错误码查询。
nui_release
释放SDK所有内部资源,并强制终止所有正在进行的任务。此方法调用后,SDK实例将变为不可用状态,如需再次使用,必须重新调用 nui_initialize 进行初始化。
方法签名
-(NuiResultCode) nui_release;返回值说明
返回错误码,参见错误码查询。
nui_get_version
获得当前SDK版本信息。
方法签名
-(const char*) nui_get_version;返回值说明
当前SDK版本信息。
nui_get_all_response
获得当前事件回调的完整信息。
方法签名
-(const char*) nui_get_all_response;返回值说明
JSON字符串格式的完整事件信息。
NeoNuiSdkDelegate:监听回调
onNuiEventCallback:监听事件和语音识别结果
方法签名
-(void) onNuiEventCallback:(NuiCallbackEvent)nuiEvent dialog:(long)dialog kwsResult:(const char *)wuw asrResult:(const char *)asr_result ifFinish:(BOOL)finish retCode:(int)code;参数说明
参数
类型
说明
nuiEvent回调事件。
dialoglong会话编码,无需关注该参数。
wuwchar*语音唤醒功能。无需关注该参数。
asr_resultchar*语音识别结果。
finishBOOL本轮识别是否结束标志。
codeint错误码,在出现EVENT_ASR_ERROR事件时有效,参见错误码查询。
onNuiAudioStateChanged:监听音频状态
SDK 通过此回调通知何时应该开始或停止录音。
方法签名
-(void) onNuiAudioStateChanged:(NuiAudioState)state;NuiAudioState状态说明
参数
说明
STATE_OPEN交互启动,可以打开录音设备进行录音。
STATE_PAUSE交互停止,可以停止录音。
STATE_CLOSESDK 实例已释放,可以彻底关闭录音设备。
onNuiNeedAudioData:填充待识别音频数据
开始识别后,该回调被连续触发,需在其中提供待识别音频数据。
方法签名
-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;参数说明
参数
类型
说明
audioDatachar *填充的音频数据。
lenint填充的音频数据的字节数。
onNuiLogTrackCallback:监听追踪日志
此回调用于接收 SDK 内部的详细日志,方便进行问题定位和调试。
-(void) onNuiLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;NuiCallbackEvent:事件类型
事件 | 说明 |
EVENT_TRANSCRIBER_STARTED | 任务启动成功。 |
EVENT_VAD_START | 任务启动后即触发该事件。不代表检测到人声起点。 |
EVENT_VAD_END | 检测到人声终点。 |
EVENT_ASR_PARTIAL_RESULT | 语音识别中间结果。 |
EVENT_ASR_ERROR | 语音识别过程中出现错误。 |
EVENT_MIC_ERROR | 因连续2秒未收到任何音频数据而触发。 |
EVENT_SENTENCE_END | 检测到一句话结束,此时会返回一句完整的识别结果。 |
EVENT_TRANSCRIBER_COMPLETE | 语音识别结束。 |