接口说明
流式文本驱动指令分为子句模式与非子句模式,区别如下:
1. 服务端是否会重新组句:非子句模式下服务端会重新组句,子句模式下服务端不会重新组句。例如非子句模式下,依次发送流式文本数据包:“您”、“好”、“我是”、“数”、“智”、“人”,那么服务端收到后就会重新组句为“您好,我是数智人”;子句模式下则不会重新组句,所以需要发送一句连贯的话语例如“您好,我是数智人”。
2. 是否支持插播:非子句模式不支持插播,子句模式支持插播能力,设置字段 IsInsertSentence=true 即可。
3. 是否会补 final:非子句模式下,若在2s内未发送流式文本驱动指令,那么服务端就会自动补充 final 数据包,建议在一段文本内容结束后及时发送 final 数据包避免出现数智人卡顿的情况。
| 服务端是否会重新组句 | 服务端是否会补 final | 是否支持插播 |
子句模式 | ❌ | ❌ | ✅ |
非子句模式 | ✅ | ✅ | ❌ |
请求参数
参数名称 | 类型 | 必选 | 描述 |
ReqId | String | 是 | 单次驱动的唯一标识。每一段流式文本指定一个32位 uuid 值(不包含‘-’)。 注意: 每一段流式文本序列指定一个 ReqId,而不是每一次请求指定一个。 值得注意的是,在发送 final 包时仍然使用的是指定的这一个 ReqId,不需要再生成一个。 |
SessionId | String | 是 | 会话唯一标识。 |
Command | String | 是 | SEND_STREAMTEXT,发送流式文本。 |
Data | 是 | 数据对象 |
Data
名称 | 类型 | 必选 | 描述 |
Text | string | 是 | 流式文本内容,只需要发送增量的文本。每个片包字符串长度限制2000字节。 注意: 子句模式发送要求: 1. 输入文本应为完整的句子序列,例如以,。!?等标点符号分割的文本。 2. 单个子句长度应大于10个汉字或单词。 非子句模式发送要求: 1. 流式非子句不支持Text中带SSML标签 2. 发送速度不能过慢,过慢会导致出现非预期的 SpeakStatus,推荐发送速度与大模型返回数据的速度一致。 |
Seq | int | 是 | 流式文本片包序号,序号必须从1开始。 |
IsFinal | bool | 否 | 用于标记本次流式文本驱动是否结束,默认值 false。 注意: 1. 发送 final 包的时机: 当流式文本驱动指令的文本内容 Text 都已发送完毕后,需要再发送一个 IsFinal=true 的驱动指令(这里简称 final 包,Text 字段可带有文本内容也可以是空串),来结束当次流式文本驱动,使数字人回到静默状态。 2. 没有及时发送 final 包会出现的问题: 对于流式文本驱动指令,包含子句模式与非子句模式,都可能会出现数智人播报期间卡顿的问题。 |
Interrupt | bool | 否 | 强制打断标记,缺省值:false。传入 true 并且 Text 为空,表示打断流式文本。 注意: 对于如何发送强制打断的驱动指令(Interrupt=true),在 Data 中只需要填充 Seq 以及 Interrupt 的数据,其他字段置空处理即可,注意不可省去 Seq(设置为非0即可),不然会打断无效,参考示例三。 |
SmartActionEnabled | bool | 否 | 是否开启智能动作,缺省值:false。为 true 并且输入的文本或者话术增强后的文本没有动作标签则会生成智能动作。 |
IsSentence | bool | 否 | 是否是子句模式,缺省值:false。为 true 服务端不会做重新组句。 |
IsInsertSentence | bool | 否 | 是否是插入的子句,缺省值:false。为 true 并且是子句模式则表示当前分片需要插播。 |
VideoSeiInfo | string | 否 |
请求示例
{"Header": {},"Payload": {"ReqId": "d7aa08da33dd4a662ad5be508c5b77cf","SessionId": "m318552187863054171","Command": "SEND_STREAMTEXT","Data": {"Text": "流式文本内容","Seq": 1,"IsFinal": false}}}
{"Header": {},"Payload": {"ReqId": "d7aa08da33dd4a662ad5be508c5b77cf","SessionId": "m318552187863054171","Command": "SEND_STREAMTEXT","Data": {"Text": "流式文本结束了","Seq": 60,"IsFinal": true}}}
{"Header": {},"Payload": {"ReqId": "d7aa08da33dd4a662ad5be508c5b77cf","SessionId": "m318552187863054171","Command": "SEND_STREAMTEXT","Data": {"Seq": 40,"Interrupt": true}}}
{"Header": {},"Payload": {"ReqId": "d7aa08da33dd4a662ad5be508c5b77cf","SessionId": "m318552187863054171","Command": "SEND_STREAMTEXT","Data": {"Text": "流式文本子句模式内容","Seq": 1,"IsFinal": false,"IsSentence": true,"IsInsertSentence": false//如果是需要插播的子句,则设置该值为true}}}