ai数字人直播软件 数字人技术在直播场景下的应用

AI资讯1年前 (2023)发布 fengdao
45 0

4、为说话、动作、表情、切换背景、插入图片视频、位移、缩放等。

另外编排上可以支持:

1、创建编辑剧本基本信息;

2、编排剧本:可以通过选取素材库中的各种素材,组合生成剧本。

实时交互:除了既定剧本顺序执行以外,数字人主播还会对用户进行实时的交互,以达到更真实拟人的效果;实时交互的处理分为以下两类:

用户行为反馈:支持对用户的点赞、分享、关注、加粉丝团等等用户行为做出反馈,使数字人主播能够与用户行为能够形成互动,提升直播间体验;

智能问答:支持根据一定的策略回复直播间内观众的消息,该问答功能通过接入百度大脑,提供强大的智能问答能力,使数字人主播更懂用户;

结合AI能力,主播还会有一些情景的交互插入,如直播间长时间冷清,主播会不高兴等等。

并且任务编排系统可以智能的根据数字人实时的渲染状态,选择合适的打断实际插入对应的互动,且不影响后续剧本进行,达到和真实主播接近的效果。

数字人音频服务会整合众多AI能力,其中包括通过TTS语音合成,生成支持多种可定制的音色的音频数据;通过VTA服务,生成与对应模型适配的唇动渲染数据;基于百度unit进行对话配置以及意图模型训练,支持和主播提问,闲聊等智能问答功能

驱动服务根据剧本任务下发动作渲染指令和直播间信号指令,以及数字人音频服务下发的每一帧音频和唇动数据,整合下发到云渲染服务的会话中心;会话中心负责与上游(直播业务)、下游(渲染引擎)、其他模块(导播台)等建连,维持心跳,收敛会话服务;收集包装驱动数据下发给云渲染服务:

云渲染服务通过接受会话中心的数据,包括各种动作指令,各种部位骨骼bs驱动数据来实时渲染数字人模型(渲染引擎包括自研、UE4、等),同步生成视频流数据,返回到BRTC服务模块进行编码推流到LSS,LSS云导播台依托百度智能云的音视频直播、媒体、AI等技术,支持强大的直播实时编辑能力,如数字人直播的一些视频混画,背景合成,字幕插入等功能;编辑之后进而推流通过CDN的边缘节点,终到直播源站。

△直播间内画面多层混合

GEEK TALK

04

技术实现详述

4.1 服务端架构

渲染引擎运行环境

DKE是一个快速、灵活、按需定制的部署引擎,基于DKE部署的K8S之上,运行着天牛平台以及数字人渲染引擎系统;

天牛平台是为私有化交付所打造的容器管理平台,目前ACG交付业务使用的数字人渲染引擎系统就是通过天牛进行私有化交付使用的;

显卡:人像渲染服务依赖于显卡。

渲染引擎服务依赖

基础软件:MySQL、ZK等,可以使用天牛数字人安装包内自带的,也可通过配置使用自定义的服务;

AI能力:1)虚拟形象生成技术:支持低成本,照片快速生成形象(PTA),支持捏脸系统,多维度自定义编辑形象。2)面部及动作捕捉技术:通过捕捉脸部表情与肢体动作,让真人实时驱动虚拟形象。3)语音技术:如语音识别(ASR)、智能问答对话(百度UNIT)、语音合成(TTS)等,帮助搭建智能语音对话系统,支持用户与虚拟形象轻松对话。

数字人渲染引擎

基于ACG-云渲染方案

提供服务接口,用于接收数字人驱动服务发送过来的指令,通过调用AI能力进行语音理解、对话生成、合成语音等,调用基于渲染引擎的人像渲染服务生成人像视频,终通过流媒体服务进行推流。

支持真人托管,使用真人托管平台能够通过使用摄像头或动作捕捉设备进行人像动作采集并转化生成数字人音视频画面。

提供业务配置平台和相关api进行数字人人像管理。

基于AR-端云一体渲染方案

全自研渲染引擎支持数字人渲染所需的多项高性能渲染算法,包括仿真光线次表面散射属性的皮肤渲染材质、仿真各向异性特性的头发渲染材质以及眼睛渲染材质。

支持终端+云端部署运行,在终端低占用5M客户端包体积,性能对比商业引擎更加;在云端对接流媒体服务进行推流,可以满足直播、视频生产业务需求,支持在网页端或者超低端设备运行。全方面覆盖终端设备,少量参数同步即可对齐端云渲染需求。

数字人驱动服务

用于驱动数字人渲染引擎执行相应的指令,对业务屏蔽了和数字人渲染引擎交互的复杂逻辑,提供http接口给业务方接入,方便业务快速接入数字人直播能力。本服务由架构组团队开发维护,具体在“数字人驱动服务设计”中介绍。

剧本系统

主要功能包括:

素材库:支持配置挂接商品及讲解文案、营销活动即讲解文案(抽奖、红包雨、优惠券)、场景话术素材(邀请分享、邀请点赞、邀请关注、剧本转场);

剧本编排:支持使用素材库中的素材来组合生成剧本;

实时互动:能够根据业务策略在剧本中的可打断位置插入主播发言等行为,比如感谢关注点赞等等;

同步数字人驱动服务:将编排好的剧本以及实时互动队列通过接口同步给数字人驱动服务。

第三方业务服务

目前这一层只有直播电商,未来根据需要也可以接入咨询,媒体、演艺秀场等其他业务。

4.2数字人驱动服务

各模块概述

对外提供http接口,处理业务方的剧本配置(人像选择、背景设置、重复执行次数)、需要数字人执行的行为指令队列(包括:剧本队列、实时交互队列),数字人直播间状态控制等请求,在本架构也属于队列生产者。

队列

数字直播间_数字直播什么意思_ai数字人直播软件

驱动服务维护两个先进先出队列,分别为:剧本队列、实时交互队列。

1、剧本队列

开播前预先编排好的队列,数字人直播间启动后,主节点会启动剧本队列消费,然后数字人按照预先编排好的内容执行,例如:开播中需要数字人演示的商品讲解、抽奖、红包雨等,会提前同步到剧本队列中。

2、实时交互队列

开播中需要实时插入原先编排剧本的队列,以支持数字人给用户互动提供反馈,例如:数字人主播感谢送礼关注等,可以通过实时交互队列实现。

、从节点

未当选为主节点的节点,它只负责定时参与选举。

2、主节点()

当选为主节点的节点,作为消费者,消费生产者产生的队列,主要支持:

主从选举1、初始状态

同一个集群中每个实例都有一个取值一致的env环境变量,作为所在集群分布式锁标识。此时还未产生节点,集群分布式锁还是处于释放状态。

2、进行选举

初始状态下,集群内所有正常运行中的实例会定时通过redis的setnx指令抢占集群分布式锁进行选举。

3、成为主节点

抢到锁的则成为主节点,当选为主节点后,会定时执行心跳,给抢到的锁进行续期,主节点会维护与数字人渲染引擎的长连接、执行队列消费、直播间自动开关播。

4、成为从节点

未抢到锁的则依旧继续担任节点,会定时进行选举,除此之外没有其他操作。

5、主节点异常

主节点异常,则会没有心跳,此时,变成初始状态、进行选举,集群中其他某个节点抢到锁之后会成为主节点。

队列消费

整体依靠各层级的调度实现,层级关系如下图,以下各层级的调度均使用的以生产者消费者模型实现。

直播间调度剧本调度

一个直播间可以关联多个剧本,多个剧本可以按顺序编排,每个剧本可以执行1次或多次。

1、剧本调度的三种情况

被调度的剧本分以下三种情况:

1.按重复执行次数逐次调度的剧本;

2.按编排顺序逐个调度的剧本;

3.异常退出消费,恢复后继续执行上次中断的剧本。

2、调度流程

为当前直播间建立与数字人渲染引擎的长连接,并初始化长连接会话;

更新直播间剧本执行偏移量(记录当前直播间进入当前剧本);

启动协程并行执行“剧本队列调度” 流程、以及“交互队列调度”流程;

当前剧本队列调度执行完毕,返回流程1。

剧本队列调度

队列中的指令顺序通过指定,会被按照从小到大的顺序依次执行,每次调度按照如下流程:

每次获取队列中的下一个,并获取该对应的参数;

更新当前剧本队列执行点为当前,并设置执行点状态为已启动

解析的指令参数,生成数字人渲染引擎的DRML指令;

生成(本次请求的标识)通过先前创建的长连接会话,使用渲染引擎的能力往渲染引擎发送DRML指令;

接收长连接返回该的结果,一次指令长连接会根据渲染过程做多次响应,如图:

其中:如果drml指令渲染失败,3会返回;

等待长连接返回结果为渲染完成或失败、等待超时,则结束等待;

更新队列执行点状态为已执行,表示一个行完成,回到流程1;

若队列内没有未消费条目了,则开始检查交互队列是否有未消费条目,如果还有则继续等待交互队列消费完成,没有则通知交互队列停止调度,并退出自身剧本队列调度。

交互队列调度

数字直播间_ai数字人直播软件_数字直播什么意思

交互队列调度和剧本队列调度并行启动执行,执行流程如下:

多直播间长连接维护

1、长连接初始化2、长连接心跳

长连接在初始化的同时,会启动一个协程,该协程每隔3s向数字人渲染引擎发送心跳。如果数字人渲染引擎如果30s内没有检测到心跳,会自动释放资源。

3、长连接请求4、长连接响应5、长连接故障转移

这一点在 “容灾 – 数字人渲染引擎异常” 中描述。

6、多主节点支持

在需要多主节点的场景中,例如:划分预览机和线上,或者需要增加集群处理能力的情况下,可以通过给实例设置不同的env,来达到划分出多集群多主节点的目的,不同集群之间互不影响,原理是:

开关播1、开播

在百家号平台开播数字人需要先创建预约直播间,预约创建完成后,支持以下两种方式启动数字人直播间:

(1)自动开播

到点自动启动数字人推流并开播,具体如下:

业务侧通过调用注册数字人直播间接口注册数字人直播间;

会自动检测即将到达预约开播时间的直播间,将需要开播的数字人直播间状态改为已启动;

随即开始进行直播间调度等流程,即开始推流;

调用百家号开播接口开播。

(2)手动开播

数字人驱动服务提供了手动启动数字人直播间的能力,当需要在指定时间之前提前开播,可通过如下方式手动开播:

调用的注册数字人直播间接口添加数字人直播间;

调用启动数字人直播间接口(room/start),数字人直播间状态修改为已启动(=1);

即开始直播间调度等流程;

消费队列开始即推流开始,随后在百家号平台即可开播。

2、关播(1)自动关播

在所有队列执行完毕后,会停止数字人直播间推流,具体如下:

会在每个数字人直播间所有剧本队列消费完成后,等待直至实时队列消费完毕,退出队列消费者;

调用百家号关播接口;

并更新数字人直播间状态为已结束(=-1)。

(2)手动关播

如需要手动停止数字人推流:

百家号平台先正常关播;

会轮询当前正在消费中的所有数字人直播间的直播meta新状态,如果为已关播则修改为-1

如果检测到消费中的数字人直播间的为-1,则会向对应的直播间队列消费者协程发送信号,该直播间消费者协程收到信号就退出消费。

容灾

以下列出了各种异常情况,及其对应的处理策略

1、数字人渲染引擎异常(1)渲染引擎服务多实例部署

部署多套渲染引擎实例,使用同一套mysql数据库,使得多套渲染引擎的配置保持同步,使同一个appid、,可以在不同实例上均可使用

(2)连接渲染引擎故障转移2、数字人驱动主节点故障转移3、数字人驱动主节点故障恢复(1)剧本调度异常恢复(2)剧本队列调度异常恢复(3)实时交互队列调度异常恢复

逻辑同剧本队列调度异常恢复。

(4)故障现场恢复

这里的“现场”指的是数字人在执行中的人像位置坐标、人像大小、直播间背景等信息,这些信息数字人驱动服务会在数字人DRML执行过程中进行保存。在数字人驱动服务在遇到异常恢复时,如果不做现场恢复,会造成异常恢复后人像坐标、大小、背景等元素与预期不符的情况,因此,在异常恢复时,数字人驱动服务会先读取保存的现场信息,并通过执行现场信息对应的DRML恢复现场。

GEEK TALK

05

小结

本文详细的阐述了基于数字人云渲染技术方案在直播业务架构中的应用,以及与众多AI能力的相结合,虚拟主播在今年是热门IP,强互动的直播场景无疑是数字人渲染的重点关注对象,后续渲染技术进一步完善和创新,将数字人直播间更加拟人化、生动、吸引眼球是我们规划的方向,尽可能应用到更大更多的场景里面。

特别感谢:

感谢AIG增强现实技术团队与ACG智能云团队为云渲染服务共建提供技术支持。

END

© 版权声明

相关文章

暂无评论

暂无评论...