本文介绍了如何使用阿里云百炼大模型服务提供的实时多模交互移动端 Android Lite SDK,包括SDK下载安装、关键接口及代码示例。
多模态实时交互服务架构

前提条件
- 开通阿里云百炼实时多模交互应用,获取Workspace ID、APP ID和API Key。
SDK接入
交互数据链路说明
多模对话Android Lite SDK仅支持Websocket链路与服务端交互,并支持AudioOnly 音频模式进行对话:
-
音频交互:推荐使用Websocket 连接,连接速度较快,性能要求较低。
-
WS 链路音频格式说明:
- 上行:支持 pcm 和 opus 格式音频进行语音识别。
- 下行:支持 pcm 和 mp3 音频流。
-
WS 链路音频格式说明:
交互模式说明
SDK支持 Push2Talk、 Tap2Talk和Duplex(全双工)三种交互模式。
- Push2Talk: 长按说话,抬起结束的收音方式。
- Tap2Talk: 点击开始说话,自动判断用户说话结束的收音方式。
- Duplex: 全双工交互,连接开始后支持任意时刻开始说话,支持语音打断。 注意:全双工交互需要客户端集成回声消除算法(AEC),Lite SDK不提供此算法模块。您可以自行集成回声消除算法模块,或者使用百炼多模对话全功能移动端Android SDK。
调用说明
SDK及其调用Demo。
- 下载SDK和Demo dashscope-lite-android-1.0.2.zip并配置必要的环境、依赖。
- 导入压缩包中的示例代码,按照调用流程接入SDK。
SDK引用
导入依赖库。
-
app/src/main/libs
- dashscope-multimodal-dialog-lite-1.*.aar //阿里云多模交互Lite SDK
-
其他Demo APP引入的依赖:
参考
app/build.gradle
关键参数
参数名称 | 是否必须 | 值 | 说明 |
|---|---|---|---|
url | 是 | String | 请求的服务端地址。 |
api_key | 是 | String | 百炼服务接入API Key 请您在百炼平台创建API_KEY,移动端为了安全考虑,您也可以在服务端接入短时Token,并下发给客户端使用。 |
workspace_id | 是 | String | 百炼管控台,工作空间id。 |
app_id | 是 | String | 您在管控台创建的应用id。 |
Demo简介
-
EntranceActivity 入口页面,需要修改url/api_key/app_id等信息。
- 可以通过页面选择对话使用Tap2Talk或者Push2Talk等模式。
-
MultimodalDialogActivity,对话交互实现类。
- Demo页面中引用TYAudioRecorder 作为录音输入,您可以替换为自己的实现。
- Demo页面使用AudioPlayer作为音频播放输出,您可以选择使用自己的实现类。
-
Demo在音频交互模式下,支持VQA(图生文)功能,即通过语音说“拍照识别xxx”,触发服务下发拍照意图。之后:
- 您可以将本地拍照并上传OSS(或其他内容服务生成公共链接),触发单张图片的识别和对话。
- 您也可以直接上传图片的base64请求服务或者图片的对话结果。
接口设计
MultimodalDialog 对话入口类
- MultiModalDialog 初始化对话类,传入必要的全局参数。
- createConversation 创建会话。
- start 开始对话。
- stop 结束对话。
- destroy
- interrupt 打断交互。
- startSpeech 通知服务端开始上传音频,注意需要在Listening状态才可以调用。只需要在Push2Talk模式下调用。
- sendAudioData 通知服务端上传音频。
- stopSpeech 通知服务端结束上传音频。只需要在Push2Talk模式下调用。
- requestToRespond 请求服务端回答指定问题or做TTS播放出来。
- 其他接口。
关键参数枚举
参数 | 值 | 说明 |
|---|---|---|
DialogMode | TAP2TALK | 手动开始,自动结束 |
PUSH2TALK | 手动开始,手动结束 | |
DUPLEX | 全双工交互 |
MultiModalRequestParam 端云交互参数详情
一级参数 | 二级参数 | 三级参数 | 四级参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|---|---|---|
input | workspace_id | string | 是 | 用户业务空间id | ||
app_id | string | 是 | 客户在管控台创建的应用id,可以根据值规律确定使用哪个对话系统 | |||
dialog_id | string | 否 | 对话id,如果传入表示接着聊 | |||
parameters | upstream | type | string | 是 | 上行类型: AudioOnly 仅语音通话 AudioAndVideo 上传视频 | |
mode | string | 否 | 客户端使用的模式,可选项:
默认tap2talk | |||
audio_format | string | 否 | 音频格式,支持pcm,opus,默认为pcm | |||
downstream | voice | string | 否 | 合成语音的音色 | ||
sample_rate | int | 否 | 合成语音的采样率(单位:Hz),默认采样率24000Hz | |||
intermediate_text | string | 否 | 控制返回给用户那些中间文本: transcript 返回用户语音识别结果 dialog 返回对话系统回答中间结果 可以设置多种,以逗号分割,默认为transcript | |||
audio_format | string | 否 | 音频格式,支持pcm,mp3,默认为pcm | |||
client_info | user_id | string | 是 | 终端用户id,用来做用户相关的处理 | ||
device | uuid | string | 否 | 客户端全局唯一的id,需要用户自己生成,传入SDK | ||
network | ip | string | 否 | 调用方公网ip | ||
location | latitude | string | 否 | 调用方维度信息 | ||
longitude | string | 否 | 调用方经度信息 | |||
city_name | string | 否 | 调用方所在城市 | |||
biz_params | user_defined_params | object | 否 | 其他需要透传给agent的参数 | ||
user_defined_tokens | object | 否 | 透传agent所需鉴权信息 | |||
tool_prompts | object | 否 | 透传agent所需prompt | |||
user_query_params | object | 否 | 透传用户请求自定义参数 | |||
user_prompt_params | object | 否 | 透传用户prompt自定义参数 |
IConversationCallback (回调接口)
重要回调方法说明
-
onSpeechContent(output: Map<String, Any>)
语音识别内容
SpeechContent - response
一级参数
二级参数
三级参数
类型
是否必选
说明
output
event
string
是
事件名称:SpeechContent
dialog_id
string
是
对话id
text
string
是
用户语音识别出的文本,流式全量输出
finished
bool
是
输出是否结束
-
onRespondingContent(output: Map<String, Any>)
大模型的返回文本
示例:一级参数
二级参数
三级参数
类型
是否必选
说明
output
finished
bool
是
输出是否结束
dialog_id
string
是
对话id
event
string
是
消息类型
text
string
否
LLM大模型返回的文本结果
spoken
string
否
LLM大模型返回的播放内容的文本,可能跟 text 字段有所不同。
extra_info
object
否
其他扩展信息,目前支持:
commands: 命令字符串
agent_info: 智能体信息
tool_calls: 插件返回的信息
dialog_debug: 对话debug信息
timestamps: 链路中各节点时间戳
异常处理
onErrorReceived - response
错误码以及对应的错误信息。错误码 | 错误名称 | 说明 |
|---|---|---|
40000000 | ClientError | 客户端错误 |
40000001 | InvalidParameter | 参数不合规,如参数缺失 |
40000002 | DirectiveNotSupported | 指令不支持,如指令名称错误 |
40000003 | MessageInvalid | 指令不合规,如指令格式错误 |
40000004 | ConnectError | 连接错误,如客户端或数字人RTC退出 |
40010000 | AccessDenied | 拒绝访问 |
40010001 | UNAUTHORIZED | 未授权 |
40020000 | DataInspectionFailed | 输入或输出触发绿网 |
50000000 | InternalError | 服务端内部错误,联系服务端排查 |
50000001 | UnknownError | 服务端内部未知错误,联系服务端排查 |
50010000 | InternalAsrError | asr内部错误 |
50020000 | InternalLLMError | 大模型内部错误 |
50030000 | InternalSynthesizerError | tts内部错误 |
调用时序
半双工交互

更多SDK接口使用说明
VQA交互
VQA 是在对话过程中通过发送图片实现图片+语音的多模交互的功能。
核心过程是语音或者文本请求拍照意图触发"visual_qa"拍照指令。
当客户端通过回调函数onRespondingContent收到拍照指令后, 发送图片链接或者base64数据(支持小于180KB的图片)。
- 处理"visual_qa" command和上传拍照。
通过 Websocket 链路请求LiveAI
LiveAI (视频通话)是百炼多模交互提供的官方Agent。通过Android Lite SDK, 您也可以在Websocket链路中通过自行录制视频帧的方式来调用视频通话功能。
注意:通过 Websocket 调用 LiveAI发送图片只支持base64编码,每张图片的大小在180K以下。
- LiveAI调用时序

- 关键代码示例
文本合成TTS
SDK支持通过文本直接请求服务端合成音频。
您需要在客户端处于Listening状态下发送requestToRespond请求。
若当前状态非Listening,需要先调用interrupt 接口打断当前播报。
自定义提示词变量和传值
- 在管控台项目【提示词】配置自定义变量。
user_name字段代表用户昵称。并将变量user_name以占位符形式${user_name} 插入到Prompt 中。

- 在代码中设置变量。
"user_name" = "大米"。
- 请求回复
