本文档提供了Qwen-Audio-3.1-ASR-Flash-Message实时语音识别iOS SDK的详细使用指南,帮助您将语音转换为文本。
快速开始
-
获取API Key:获取与配置 API Key
-
下载SDK并运行示例代码:
- 下载最新SDK整合包。
- 解压 ZIP 包,将其中的 nuisdk.xcframework 添加到工程。
- 在 Build Phases → Link Binary With Libraries 中添加 nuisdk.xcframework。
- 在 General → Frameworks, Libraries, and Embedded Content 中将 nuisdk.xcframework 设置为 Embed & Sign。
- 用 Xcode 打开示例工程。示例代码位于
DashFunAsrSpeechTranscriberViewController.m,替换 API Key 后体验功能。
调用步骤
- 初始化 SDK
- 按业务需求设置参数:通过nui_initialize接口设置连接与控制参数;通过nui_set_params接口设置语音识别效果参数。
- 调用nui_dialog_start启动识别流程。
- 在onNuiAudioStateChanged回调中,根据音频状态开启录音设备。
- 在onNuiNeedAudioData回调中持续提供录音数据,或者通过nui_update_audio_data持续推送录音数据。
- 在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"
}
参数说明
| 参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
url | String | 是 | 服务地址:
调用时,请将 |
apikey | String | 是 | API Key。 |
service_mode | String | 是 | 运行模式。实时语音识别固定为 "1"。 |
device_id | String | 是 | 用于标识终端用户的唯一字符串,可设为应用内用户ID或客户端生成的设备唯一标识符。此ID主要用于日志追踪和问题排查。 |
audio_update_manually | String | 否 | 是否启用主动推送音频数据模式。默认值: 设为 |
workspace | String | 否 | 端侧资源文件的存储路径。当 audio_update_manually 设为 "true" 且启用端侧音频能力(如 AEC、VAD)时,必须设置此参数。 |
debug_path | String | 否 | 日志文件的存储路径。 此参数仅在调用nui_initialize接口时将 本地最多保留两个日志文件。 |
save_wav | String | 否 | 是否保存调试用的音频文件。音频文件保存于 默认值:"false"。 取值范围:
此参数仅在调用nui_initialize接口时将 |
max_log_file_size | int | 否 | 设定日志文件的最大字节数。 此参数仅在调用nui_initialize接口时将 默认值:104857600(100 * 1024 * 1024 字节, 即 100MiB)。 |
log_track_level | int | 否 | 控制通过日志回调(onNuiLogTrackCallback)对外发送的日志内容的过滤级别。 默认值:2。 取值范围:
注意: |
语音识别效果参数
通过在nui_set_params接口的params参数中传入一个JSON字符串来配置。
参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{
"service_type": 4,
"nls_config": {
"model": "qwen-audio-3.1-asr-flash-message",
"sr_format": "pcm",
"sample_rate": "16000"
}
}
参数说明
| 一级参数 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
service_type | int | 是 | 语音服务类型。实时语音识别固定为 4。 |
nls_config | object | 是 | 语音识别核心配置对象,包含模型选择、识别效果控制等关键参数。 |
nls_config.model | string | 是 | 模型名,设置为 qwen-audio-3.1-asr-flash-message。 |
nls_config.sr_format | string | 是 | 音频格式。 取值范围:
重要传入 PCM 格式的音频数据时,如果将该参数设为 |
nls_config.sample_rate | int | 是 | 采样率(Hz)。 仅支持 |
nls_config.max_sentence_silence | int | 否 | VAD 断句静音阈值(ms)。当一段语音后的静音时长超过该阈值时,系统会判定该句子已结束。 默认值:1300。 取值范围:[200, 6000]。 |
nls_config.heartbeat | boolean | 否 | 是否启用心跳包。 默认值:false。
静音音频指的是在音频文件或数据流中没有声音信号的内容。静音音频可以通过多种方法生成,例如使用音频编辑软件如Audacity或Adobe Audition,或者通过命令行工具如FFmpeg。 |
nls_config.disfluency_removal_enabled | boolean | 否 | 是否过滤语气词并对输出结果进行润色,默认值为 false。设置为 true 时启用。 |
nls_config.intermediate_result_enabled | boolean | 否 | 是否返回流式中间结果,默认值为 false。设置为 true 时返回流式中间结果。 |
nls_config.vocabulary_id | string | 否 | 预编译热词列表 ID。 需预先调用创建热词列表接口生成,识别时传入该 ID 即可使用列表中的热词。 适用于词汇已知且相对稳定、需要跨请求复用同一词表的场景。 使用方法请参见预编译热词。 |
nls_config.instant_vocabulary | object | 否 | 即时热词。 以键值对形式传入,键为热词文本( 适用于临时性、会话级别的热词优化。 与预编译热词同时配置时,系统会合并两类热词;合并后超过 2000 个时,随机选择 2000 个使用。使用方法、适用模型及限制请参见即时热词。 |
nls_config.speech_noise_threshold | float | 否 | 语音与噪音的判定阈值,用于调整语音活动检测(VAD)的灵敏度。 取值范围:[-1.0, 1.0]。 取值说明:
此参数为高级配置参数,调整可能显著影响识别效果,建议:
|
nls_config.enable_connection_fast_check | BOOL | 否 | 是否启用快速网络检测,以便尽快反馈断网情况。默认值:NO。 |
关键接口
NeoNui
nui_initialize
初始化语音识别SDK实例。SDK为单例模式,在调用 nui_release 前禁止重复初始化。
-(NuiResultCode) nui_initialize:(const char *)parameters
logLevel:(NuiSdkLogLevel)level
saveLog:(BOOL)save_log;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
parameters | char* | JSON字符串,包含鉴权、连接和调试参数。参见连接与控制参数。 |
level | NuiSdkLogLevel | 控制SDK自身日志的打印级别。 |
save_log | BOOL | 是否保存本地日志。若为YES,须在连接与控制参数通过debug_path指定路径,并可通过max_log_file_size设置文件大小。 |
返回错误码,参见错误码查询。
nui_set_params
以JSON格式设置语音识别效果参数。在 nui_dialog_start 之前调用。
-(NuiResultCode) nui_set_params:(const char *)params;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
params | char* | 语音识别效果参数。 |
返回错误码,参见错误码查询。
nui_dialog_start
开始识别。
方法签名-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
dialogParam:(const char *)dialog_params;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
vad_mode | NuiVadMode | VAD模式。固定为MODE_P2T。 |
dialog_params | char* | 如果连接与控制参数的 内容为JSON格式: |
返回错误码,参见错误码查询。
nui_dialog_cancel
结束识别或者立即取消当前交互。
方法签名-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
force | BOOL | 是否强制结束而忽略最终结果。
|
返回错误码,参见错误码查询。
nui_dialog_action
在交互过程中下发对话动作指令,用于更新识别上下文等运行时行为。
方法签名-(NuiResultCode) nui_dialog_action:(const char *)action_params;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
action_params | char* | JSON 字符串,用于更新识别上下文等运行时行为。 |
action_params.type | String | 固定为 "action"。 |
action_params.command | String | 运行指令。支持以下取值:
|
action_params.context | String | 当 |
返回错误码,参见错误码查询。
nui_update_audio_data
当 audio_update_manually 设为 "true" 时,录音数据不再通过 onNuiNeedAudioData 填入,而是通过此接口主动推送。
-(NuiResultCode) nui_update_audio_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
data | const char * | 推送的音频数据。 |
length | int | 推送的音频数据的字节数。 |
first_pack | BOOL | 无需关注此参数。 |
返回错误码,参见错误码查询。
nui_push_reference_data
当 audio_update_manually 设为 "true" 且启用端侧 AEC 回声消除能力时,需要通过此接口推送播放器播放的音频数据作为参考信号。
-(NuiResultCode) nui_push_reference_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
data | const char * | 推送的音频数据。 |
length | int | 推送的音频数据的字节数。 |
first_pack | BOOL | 无需关注此参数。 |
返回错误码,参见错误码查询。
nui_release
释放SDK所有内部资源,并强制终止所有正在进行的任务。此方法调用后,SDK实例将变为不可用状态,如需再次使用,必须重新调用 nui_initialize 进行初始化。
-(NuiResultCode) nui_release;
返回值说明
返回错误码,参见错误码查询。
nui_get_version
获得当前SDK版本信息。此接口需在 nui_initialize 之后调用才有返回值。
-(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 | NuiCallbackEvent | 回调事件。 |
dialog | long | 会话编码,无需关注该参数。 |
wuw | char* | 语音唤醒功能。无需关注该参数。 |
asr_result | char* | 语音识别结果。 |
finish | BOOL | 本轮识别是否结束标志。 |
code | int | 错误码,在出现EVENT_ASR_ERROR事件时有效,参见错误码查询。 |
onNuiAudioStateChanged:监听音频状态
SDK 通过此回调通知何时应该开始或停止录音。
方法签名-(void) onNuiAudioStateChanged:(NuiAudioState)state;
NuiAudioState状态说明
| 参数 | 说明 |
|---|---|
STATE_OPEN | 交互启动,可以打开录音设备进行录音。 |
STATE_PAUSE | 交互停止,可以停止录音。 |
STATE_CLOSE | SDK 实例已释放,可以彻底关闭录音设备。 |
onNuiNeedAudioData:填充待识别音频数据
开始识别后,该回调被连续触发,需在其中提供待识别音频数据。
方法签名-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
audioData | char * | 填充的音频数据。 |
len | int | 填充的音频数据的字节数。 |
onNuiAssistEventCallback:辅助数据和信息结果
此回调用于接收 SDK 内部的辅助事件和相关数据。
方法签名-(void) onNuiAssistEventCallback:(NuiCallbackEvent)nuiEvent
info:(char*)info
infoLen:(int)info_len
buffer:(char*)buffer
len:(int)len;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
nuiEvent | NuiCallbackEvent | 回调事件。 |
info | char * | 无需关注此参数。 |
info_len | int | 无需关注此参数。 |
buffer | char * | 辅助数据,例如 AEC 回声消除后的音频数据。 |
len | int | 辅助数据的字节数。 |
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 | 语音识别结束。 |
| EVENT_AEC_DATA | AEC 回声消除后的音频数据。 |