目前互动数字人支持文本交互方式,同时在数字人说话中可以支持通过特定话术进行打断,实现更加友好的双工语音对话体验。
适用于一些需要真人与数字人进行交互的场景,如线下大屏,数字人客服等场景。
下述介绍接入3D互动数字人需要提前完成的步骤,每个步骤都需要完成才能顺利接入3D互动数字人。
创建互动数字人项目时请在场景选择时选择“智能客服”场景,然后点击创建项目。
智能打断开启则数字人在收到用户明确的打断指令,或者智能对话机器人吐出新的答案时,会自动打断数字人正在进行的播报;关闭则数字人在播报答案过程中将忽略真人说话的信息。
数字人应用创建,并配置完成且成功发布之后,可以通过开发者信息获取到对应的tenantId和appId信息,用于后续的技术对接。
下面介绍接入互动数字人的完整步骤以及涉及到API
该功能需要升级虚拟数字人开放平台服务端SDK版本至1.0.5及以上。
下面介绍通过Java调用OpenAPI启动一路数字人实例的代码示例,获取到返回的sessionId以及token。
接口调用返回的sessionId和token在后续步骤对接互动数字人客户端SDK时将会使用到,channel信息在对接RTC进行拉流时需要使用。
互动数字人需要客户端通过WebSocket协议与服务端进行语音流的传输,下面将为您介绍如何通过WebSocket对接互动数字人。
在建立与虚拟数字人开放平台WebSocket服务端连接之后,客户端需要按照互动数字人的对话协议发送对应的请求数据。
通过websocket发送启动对话消息,协议如下:
5{"messageId":"
该协议支持直接发送纯文本进行对话,也可发送语音流进行对话,在文本和语音同时发送的过程时无法保证对话触发的顺序。
服务端在收到客户端发送的语音流之后,会调用语音转文本服务,最终拿到文本调用智能客服机器人的对话服务,如果客户端发送的是文本,则直接拿文本调用智能客户机器人的对话服务(调用的机器人实例是在互动数字人应用配置页面配置的机器人信息),最终拿到智能客服机器人的回复文本,触发数字人播报对应的回复文本。在这过程中服务端会返回客户端识别到的文本,以及智能客服机器人的回复文本,下面是返回的具体协议。
服务端在语音转文本服务识别到一句完整的句子时会将识别到的文本返回给客户端。
服务端在语音转文本服务识别到一句完整的句子时会将识别到的文本调用智能客服机器人的对话服务,拿到对应的对话回复文本,从而驱动数字人播报对应的回复文本,同时服务端会将回复文本返回给客户端。
在完成一通对话之后,客户端可主动发起停止对话。
5{"messageId":"
停止对话不会停止对应的数字人实例,如果需要停止数字人实例可参考下述步骤6:调用OpenAPI停止对应数字人实例。
下面介绍通过Java调用OpenAPI启动一路数字人实例的代码示例,需要使用到第二步中获取的sessionId。
针对运行中的数字人实例,如果sessionId丢失将无法调用StopInstance接口停止,此时可通过调用QueryRunningIntance接口获取到正在运行中的数字人实例列表,从而获取到对应的sessionId。
智能打断是互动数字人在语音对话过程中支持的智能打断数字人播报的能力,开启后可在通过互动数字人实现真人与数字人进行语音对话过程中,实现真人说:“不要说了”、“别说了”、“停”等具有明确打断含义的话时自动打断数字人播报。
启动“智能打断”需要编辑数字人应用配置,并“保存”“发布”应用配置,然后在下一次启动数据人实例的时候生效。