本文档提供了Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime实时语音识别Android SDK的详细使用指南,帮助您将语音转换为文本。
用户指南:关于模型介绍和选型建议请参见语音识别。
快速开始
下载SDK并运行示例代码:
解压 ZIP 包。在
app/libs目录中获取 AAR 格式 SDK,并添加到项目依赖。
需要 Android CPP 接入时,使用 ZIP 包内的android_libs与android_include获取动态库和头文件。用 Android Studio 打开工程。示例代码位于
DashFunAsrSpeechTranscriberActivity.java,替换 API Key 后体验功能。
调用步骤
初始化 SDK
按业务需求设置参数:通过initialize接口的
parameters参数设置连接与控制参数;通过setParams接口设置语音识别效果参数。调用startDialog启动识别流程。
在onNuiAudioStateChanged回调中,根据音频状态开启录音设备。
在onNuiNeedAudioData回调中持续提供录音数据。
在onNuiEventCallback回调中监听事件并获取语音识别结果。
调用stopDialog停止识别,并通过监听EVENT_TRANSCRIBER_COMPLETE事件确认识别已结束。
当识别功能不再使用时,调用release接口释放 SDK 资源。
请求参数
连接与控制参数
通过在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。
service_modeString是
运行模式。实时语音识别固定为
"1"。device_idString是
用于标识终端用户的唯一字符串,可设为应用内用户ID或客户端生成的设备唯一标识符。此ID主要用于日志追踪和问题排查。
debug_pathString否
日志文件的存储路径。
此参数仅在调用initialize接口时将
save_log设为true时生效。此时必须设置日志文件路径,否则将报错。本地最多保留两个日志文件。
save_wavString否
是否保存调试用的音频文件。音频文件保存于
debug_path下。默认值:"false"。
取值范围:
"true":是
"false":否
此参数仅在调用initialize接口时将
save_log设为true时生效。 同时,debug_path也必须被设置。max_log_file_sizeint否
设定日志文件的最大字节数。
此参数仅在调用initialize接口时将
save_log设为true时生效。默认值: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(通过initialize接口设置)共同决定最终回调的日志。一条日志的级别数值必须同时大于或等于log_track_level和level的值,才会被回调。例如,log_track_level设为2 (INFO),level设为3 (WARNING),则只有WARNING及以上级别(数值>=3)的日志才会被回调。
语音识别效果参数
通过在setParams接口的params参数中传入一个JSON字符串来配置。
参数示例:以下为 JSON 字符串示例,参数未完整列出。请按实际需求在编码时补充:
{ "service_type": 4, "nls_config": { "model": "qwen-audio-3.0-asr-flash-streaming", "sr_format": "pcm", "sample_rate": "16000", "parameters": { "speech_noise_threshold": 0.0 } } }参数说明
一级参数
类型
是否必须
说明
service_typeint是
语音服务类型。实时语音识别固定为
4。nls_configobject是
语音识别核心配置对象,包含模型选择、识别效果控制等关键参数。
nls_config.modelstring是
指定模型名。支持Qwen-Audio-3.0-ASR-Flash-Streaming和Fun-ASR-Realtime系列模型,详情请参见支持的模型与地域。
nls_config.sr_formatstring是
音频格式。
取值范围:
-
pcm -
wav -
mp3 -
opus -
speex -
aac -
amr
重要opus/speex:必须使用Ogg封装;
wav:必须为PCM编码;
amr:仅支持AMR-NB类型。
nls_config.sample_rateint是
采样率(Hz)。
取值范围:8k模型仅支持 8000 Hz,其他模型支持任意采样率。
nls_config.semantic_punctuation_enabledboolean否
是否启用语义断句。
默认值:false。
-
true:开启语义断句,关闭 VAD 断句。
-
false(默认):开启 VAD 断句,关闭语义断句。
语义断句准确性更高,适合会议转写场景;VAD(Voice Activity Detection,语音活动检测)断句延迟较低,适合交互场景。
nls_config.max_sentence_silenceint否
VAD 断句静音阈值(ms)。当一段语音后的静音时长超过该阈值时,系统会判定该句子已结束。当
semantic_punctuation_enabled为true时,不作为sentence_end返回依据,但设置过小可能会影响识别效果。默认值:1300。
取值范围:[200, 6000]。
nls_config.multi_threshold_mode_enabledboolean否
重要仅在
semantic_punctuation_enabled参数为false时生效。是否启用多阈值模式。启用后可防止 VAD 断句切割过长。
默认值:false。
nls_config.heartbeatboolean否
是否启用心跳包。
默认值:false。
-
true:在持续发送静音音频的情况下,可保持与服务端的连接不中断。
-
false(默认):即使持续发送静音音频,连接也将在60秒后因超时而断开。
静音音频指的是在音频文件或数据流中没有声音信号的内容。静音音频可以通过多种方法生成,例如使用音频编辑软件如Audacity或Adobe Audition,或者通过命令行工具如FFmpeg。
nls_config.vocabulary_idstring否
预编译热词列表 ID。
需预先调用创建热词列表接口生成,识别时传入该 ID 即可使用列表中的热词。
适用于词汇已知且相对稳定、需要跨请求复用同一词表的场景。
使用方法请参见预编译热词。
nls_config.parameters.vocabularyobject否
即时热词。
以键值对形式传入,键为热词文本(
string),值为热词权重(integer),无需预先创建热词列表。权重取值范围为 [1, 5] 或 50:取 [1, 5] 时值越大模型越倾向输出该词;取 50 时为超级热词,召回率大幅提升,但超级热词数量最多不超过 50 个。适用于临时性、会话级别的热词优化。
与预编译热词同时配置时,仅即时热词生效。使用方法请参见即时热词。
重要仅
qwen-audio-3.0-asr-flash-streaming支持即时热词。nls_config.language_hintsarray[string]否
待识别音频语种。无默认值,不设置时模型自动识别。
对于 Qwen-Audio-3.0-ASR-Flash-Streaming 系列模型,最多支持设置 4 个值,即便设置超出 4 个,也仅前 4 个生效;对于 Fun-ASR-Realtime 系列模型,仅支持设置 1 个值,即便设置多个,也仅第一个生效。
nls_config.parametersobject否
配置其他参数,内容为JSON Object格式。
nls_config.parameters.speech_noise_thresholdfloat否
语音与噪音的判定阈值,用于调整语音活动检测(VAD)的灵敏度。
取值范围:[-1.0, 1.0]。
取值说明:
-
取值越接近 -1:降低噪音判定阈值,噪音被识别为语音的概率增大,可能导致更多噪音被转写
-
取值越接近 +1:提高噪音判定阈值,语音被误判为噪音的概率增大,可能导致部分语音被过滤
此参数为高级配置参数,调整可能显著影响识别效果,建议:
-
调整前充分测试验证效果
-
根据实际音频环境小幅度调整(建议步长 0.1)
nls_config.parameters.special_word_filterobject否
指定在语音识别过程中需要处理的敏感词,并支持对不同敏感词设置不同的处理方式。详情请参见敏感词过滤。
-
关键接口
NativeNui
initialize
初始化语音识别SDK实例。SDK为单例模式,在调用release前禁止重复初始化。
此接口会引起阻塞,应在非UI线程调用。
方法签名
public synchronized int initialize(final INativeNuiCallback callback, String parameters, final Constants.LogLevel level, final boolean save_log)参数说明
参数
类型
说明
callback事件和数据回调接口的实现。
parametersStringJSON字符串,包含鉴权、连接和调试参数。参见连接与控制参数。
levelConstants.LogLevel控制SDK自身日志的打印级别。
save_logboolean是否保存本地日志。若为
true,须在连接与控制参数中通过debug_path指定路径,并可通过max_log_file_size设置文件大小。返回值说明
返回错误码,参见错误码查询。
setParams
以JSON格式设置语音识别效果参数。在startDialog之前调用。
startDialog
开始识别。
stopDialog
结束识别,调用该接口后,服务端将返回最终识别结果并结束任务。
方法签名
public synchronized int stopDialog();返回值说明
返回错误码,参见错误码查询。
cancelDialog
立即结束识别,调用该接口后,不等待服务端返回最终识别结果就立即结束任务。
方法签名
public synchronized int cancelDialog();返回值说明
返回错误码,参见错误码查询。
release
释放SDK所有内部资源。此方法调用后,SDK实例将变为不可用状态,如需再次使用,必须重新调用initialize进行初始化。
方法签名
public synchronized int release();返回值说明
返回错误码,参见错误码查询。
GetVersion
获得当前SDK版本信息。
方法签名
public synchronized String GetVersion();返回值说明
当前SDK版本信息。
INativeNuiCallback:监听回调
onNuiEventCallback:监听事件和语音识别结果
onNuiAudioStateChanged:监听音频状态
SDK 通过此回调通知何时应该开始或停止录音。
方法签名
void onNuiAudioStateChanged(AudioState state);AudioState状态说明
状态
说明
STATE_OPEN交互启动,可以打开录音设备进行录音。
STATE_PAUSE交互停止,可以停止录音。
STATE_CLOSESDK 实例已释放,可以彻底关闭录音设备。
onNuiNeedAudioData:填充待识别音频数据
开始识别后,该回调被连续触发,需在其中提供待识别音频数据。
方法签名
int onNuiNeedAudioData(byte[] buffer, int len);参数说明
参数
类型
说明
bufferbyte[]填充的音频数据。
lenint填充的音频数据的字节数。
返回值说明
实际填充的字节数。
onNuiLogTrackCallback:监听追踪日志
此回调用于接收 SDK 内部的详细日志,方便进行问题定位和调试。
default void onNuiLogTrackCallback(Constants.LogLevel level, String log)NuiEvent:事件类型
事件 | 说明 |
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 | 语音识别结束。 |