音频驱动指令

最近更新时间:2024-10-16 15:29:11

我的收藏

接口说明

创建长连接通道后,可以通过 websocket 长连接发送音频驱动数智人。
发送音频时请特别留意请求参数下方的发送注意事项,不然会导致发送不成功。

请求参数

参数名称
类型
必选
描述
ReqId
String
单次驱动的唯一标识。每一段音频指定一个32位 uuid 值(不包含‘-’)
注意:
每一段流式音频序列指定一个 ReqId,而不是单独一次音频分片请求指定一个。
值得注意的是,在发送 final 包时仍然使用的是指定的这一个 ReqId,不需要再生成一个。
SessionId
String
会话唯一标识。
Command
String
SEND_AUDIO,发送音频。
Data
Data
数据对象。

Data

名称
类型
必选
描述
Audio
string
音频原始数据的 byte 数组,经 Base64 编码后的字符串。只支持:格式-PCM,采样率-16kHz,采样位深-16bits,声道-单声道。可以使用FFmpeg工具对音频格式进行调整,详情请看ffmpeg转化音频格式说明
Seq
int
音频片包序号,序号必须从1开始。
IsFinal
bool
用于标记本次音频驱动是否结束,默认值 false。
注意:
当数据包发送完毕后,必须再发送一个IsFinal=true的空数据包(Audio字段填空串)结束当次音频驱动使数字人回到静默状态。
VideoSeiInfo
string
需要在视频流 SEI 中携带的信息,字符串内容为 json 格式。发送后会在视频流播报本次响应时在 SEI 中携带。当前仅支持 2D 形象,视频流中信息说明参见:视频流嵌入信息说明
注意:
1. 如果是麦克风实时收音发送,每录制160ms(5120B)的数据即可发出,中间不需要间隔等待;如果是读取离线音频文件发送,片包大小为160ms(5120B),片包发送间隔为120ms。
2. 最后一个片包大小按实际发送(需小于160ms)。
3. 发送音频实时率要介于[0.75,1],小于0.75会触发限速,大于1会导致画面卡顿。例如160ms音频片包大小,发送间隔不能低于120ms,不能高于160ms。

请求示例

{
"Header": {},
"Payload": {
"ReqId": "d7aa08da33dd4a662ad5be508c5b77cf",
"SessionId": "m318552187863054171",
"Command": "SEND_AUDIO",
"Data": {
"Audio": "声音二进制数据编码Base64后的值",
"Seq": 1,
"IsFinal": false
}
}
}