开启音视频推流
1. 基本信息
工具名称 | 开启音频推流 | 开启音视频推流 |
工具编码 | tQ8fCF.rtc_start_audio_stream | tQ8fCF.rtc_start_video_stream |
功能描述 | 通过眼镜将音频流推送至 RTC 服务,三方可通过 RTC 入会收流获取到实时音频 | 通过眼镜将音视频流推送至 RTC 服务,三方可通过 RTC 入会收流获取到实时音视频 |
适用场景 | 实时对话问答等需要获取眼镜佩戴者音频的场景 | 巡检等需要获取眼镜佩戴者音视频的场景 |
返回方式 | 非流式。工具执行完成时会将推流指令返回给 Agent | |
当前状态 | 功能公测中 | |
接入须知:
眼镜进入音视频推流状态后,采集到的音频流和视频流会实时推送到 RTC 服务器,供三方服务从 RTC 侧接收并处理。因此,接入的三方服务需要具备语音转文字(ASR)、图像识别(如需接入视频流)等能力,才能完成端到端的交互闭环。
按照详细交互协议(音视频推流完整交互协议)设计交互 API;
2. 请求参数
字段 | 类型 | 是否必填 | 含义 |
callbackToolCode | string | 必填 | 会话流 API 对应的工具Code。开放平台通过该工具向三方发送 |
eventToolCode | string | 非必填 | 会话事件 API 对应的工具Code,开放平台通过该工具向三方下发 |
注意,在两个编码都合法、类型都正确且互不相同时,参数校验会通过,具体的连接错误只会在运行时暴露。
3. 使用流程
按照「交互协议」准备好符合要求的 HTTP API:
会话流 API:接收平台发送的
SESSION_START(携带 RTC 凭证),并建立SSE长连接,随后在同一条响应流上以 SSE 持续下发SPEAK、STOP_OUTPUT;会话事件 API:接收平台发送的
SESSION_CLOSE(用户主动在眼镜端停止推流时平台下发);
进入开放平台,将上述 API 分别注册为独立的工具(需使用 API 插件)。
按需配置 headers/query/path,body 参数无需配置,平台会按「交互协议」定义API的请求体;
参数来源不能选择
模型抽取:这两个 API 由平台在音视频推流过程中直接调用,并不是在 SKILL 编排中由模型作为工具执行,因此模型无法为其抽取参数;
编写 SKILL,在其中调用音视频推流官方工具,并将上述两个工具的编码作为参数传入,极简示例见下。
真机测试(详细操作可参考:真机);
发布(详细操作可参考:发布)。
SKILL 极简示例:
---
name: rtc-stream
description: 当用户提到"进入语音闲聊"或"进入视频闲聊"时使用。
---
一句话控制眼镜进入语音闲聊或视频闲聊:
## 流程
### 意图一:打开语音闲聊
调用 ^^tQ8fCF.rtc_start_audio_stream^^ 发起推流
调用参数:
- `callbackToolCode` 传 ^^xxxxxx.sse^^
- `eventToolCode` 传 ^^xxxxxx.http^^
如果工具调用成功,则回复:"开始闲聊吧"
如果工具调用失败,则基于错误信息组织回复话术,要求将关键信息反馈给用户。
### 意图二:打开视频闲聊
调用 ^^tQ8fCF.rtc_start_video_stream^^ 发起推流
调用参数:
- `callbackToolCode` 传 ^^xxxxxx.sse^^
- `eventToolCode` 传 ^^xxxxxx.http^^
如果工具调用成功,则回复:"开始视频闲聊吧"
如果工具调用失败,则基于错误信息组织回复话术,要求将关键信息反馈给用户。xxxxxx.sse与xxxxxx.http为占位示例,需替换为在第 2 步注册的两个工具
示例中
^^{工具编码}^^是 SKILL 引用工具的内置语法,可在SKILL.md中通过@快速选取工具。
4. 其他
音视频的具体规格是什么?
音频:16bit / 1 channel / 16kHz
视频:720P @ 2fps,约 320kbps
技能平台