本文档介绍如何使用 DashScope Java SDK 调用实时语音识别(Qwen-ASR-Realtime)模型。
重要阿里云百炼为华北2(北京)、新加坡地域推出了业务空间专属域名,能够为推理请求提供卓越的性能和更高的稳定性,建议迁移至新域名:
- 华北2(北京)地域:从
dashscope.aliyuncs.com迁移至{WorkspaceId}.cn-beijing.maas.aliyuncs.com - 新加坡地域:从
dashscope-intl.aliyuncs.com迁移至{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId}需要替换为真实的Workspace ID。现有域名仍可正常使用。
用户指南:模型介绍、功能特性和完整示例代码请参见实时语音识别
前提条件
- 安装SDK,确保DashScope SDK版本不低于2.22.5。
- 获取与配置 API Key。
- 了解WebSocket API。
请求参数
-
以下参数通过
OmniRealtimeParam的链式方法设置。点击查看示例代码
OmniRealtimeParam param = OmniRealtimeParam.builder() .model("qwen3-asr-flash-realtime") // 以下为华北2(北京)地域的配置,调用时请将"{WorkspaceId}"替换为真实的业务空间ID,各地域的配置不同。 .url("wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime") // 新加坡和北京地域的API Key不同。获取API Key:https://help.aliyun.com/zh/model-studio/get-api-key // 若没有配置环境变量,请用百炼API Key将下行替换为:.apikey("sk-xxx") .apikey(System.getenv("DASHSCOPE_API_KEY")) .build();参数
类型
是否必须
说明
modelString是
指定要使用的模型名称。
urlString是
语音识别服务地址:
华北2(北京)地域:
wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime。调用时请将{WorkspaceId}替换为真实的Workspace ID。新加坡地域:
wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime。调用时请将{WorkspaceId}替换为真实的业务空间ID。
apikeyString否
设置API Key。
-
以下参数通过
OmniRealtimeConfig的链式方法设置。点击查看示例代码
OmniRealtimeTranscriptionParam transcriptionParam = new OmniRealtimeTranscriptionParam(); transcriptionParam.setLanguage("zh"); transcriptionParam.setInputSampleRate(16000); transcriptionParam.setInputAudioFormat("pcm"); OmniRealtimeConfig config = OmniRealtimeConfig.builder() .modalities(Collections.singletonList(OmniRealtimeModality.TEXT)) .enableTurnDetection( true) .turnDetectionType("server_vad") .turnDetectionThreshold(0.0f) .turnDetectionSilenceDurationMs(400) .transcriptionConfig(transcriptionParam) .build();参数
类型
是否必须
说明
modalitiesList<OmniRealtimeModality>是
模型输出模态,固定为
[OmniRealtimeModality.TEXT]。enableTurnDetectionboolean否
是否开启服务端语音活动检测(VAD)。关闭后,需手动调用
commit()方法触发识别。默认值:
true。取值范围:
true:开启false:关闭
turnDetectionTypeString否
服务端VAD类型,固定为
server_vad。turnDetectionThresholdfloat否
VAD检测阈值。推荐将该值设为
0.0。默认值:
0.5。取值范围:
[-1, 1]。较低的阈值会提高 VAD 的灵敏度,可能将背景噪音误判为语音。较高的阈值则降低灵敏度,有助于在嘈杂环境中减少误触发。
turnDetectionSilenceDurationMsint否
VAD断句检测阈值(ms)。静音持续时长超过该阈值将被认为是语句结束。推荐将该值设为
400。默认值:
800。取值范围:
[200, 6000]。较低的值(如 300ms)可使模型更快响应,但可能导致在自然停顿处发生不合理的断句。较高的值(如 1200ms)可更好地处理长句内的停顿,但会增加整体响应延迟。
transcriptionConfigOmniRealtimeTranscriptionParam否
语音识别相关配置。
-
以下参数通过
OmniRealtimeTranscriptionParam的setter方法设置。点击查看示例代码
OmniRealtimeTranscriptionParam transcriptionParam = new OmniRealtimeTranscriptionParam(); transcriptionParam.setLanguage("zh"); transcriptionParam.setInputSampleRate(16000); transcriptionParam.setInputAudioFormat("pcm");参数
类型
是否必须
说明
languageString否
音频源语言。
zh:中文(普通话、四川话、闽南语、吴语)
yue:粤语
en:英文
ja:日语
de:德语
ko:韩语
ru:俄语
fr:法语
pt:葡萄牙语
ar:阿拉伯语
it:意大利语
es:西班牙语
hi:印地语
id:印尼语
th:泰语
tr:土耳其语
uk:乌克兰语
vi:越南语
cs:捷克语
da:丹麦语
fil:菲律宾语
fi:芬兰语
is:冰岛语
ms:马来语
no:挪威语
pl:波兰语
sv:瑞典语
inputSampleRateint否
音频采样率(Hz)。支持
16000和8000。默认值:
16000。设置为
8000时,服务端会先升采样到16000Hz再进行识别,可能引入微小延迟。建议仅在源音频为8000Hz(如电话线路)时使用。inputAudioFormatString否
音频格式。支持
pcm和opus。默认值:
pcm。
关键接口
OmniRealtimeConversation类
OmniRealtimeConversation通过import com.alibaba.dashscope.audio.omni.OmniRealtimeConversation;方法引入。
| 方法签名 | 服务端响应事件(通过回调下发) | 说明 |
|---|---|---|
| 无 | 构造方法。 |
|
| 和服务端创建连接。 |
|
| 用于更新会话配置,建议在连接建立后首先调用该方法进行设置。若未调用该方法,系统将使用默认配置。只需关注请求参数中的涉及到的参数。 |
| 无 | 将Base64编码后的音频数据片段追加到云端输入音频缓冲区。 |
|
| 提交之前通过append添加到云端缓冲区的音视频,如果输入的音频缓冲区为空将产生错误。 禁用场景:请求参数 |
|
| 通知服务端结束会话,服务端收到会话结束通知后将完成最后的语音识别。 调用时机:
|
| 无 | 终止任务,并关闭连接。 |
| 无 | 获取当前任务的session_id。 |
| 无 | 获取最近一次response的response_id。 |
回调接口(OmniRealtimeCallback)
服务端会通过回调的方式,将服务端响应事件和数据返回给客户端。
继承此类并实现相应方法以处理服务端事件。
通过import com.alibaba.dashscope.audio.omni.OmniRealtimeCallback;引入。
| 方法签名 | 参数 | 说明 |
|---|---|---|
| 无 | WebSocket连接成功建立时触发。 |
| message:服务端事件 | 收到服务端事件时触发。 |
| code:状态码 reason:WebSocket连接关闭时的日志信息 | WebSocket连接关闭时触发。 |