作者 | 薄志浩
导读:本文介绍了在数字人AI技能发展迅猛,全体AI数字人商场出现高速增长的趋势下,与强调高实时性互动的直播事务场景的结合与运用,经过数字人烘托技能、强壮的AI全栈才能、算力为虚拟主播赋能,在面部表情、肢体动作、问答对话以及情绪反应等交互作用上都到达了十分生动拟人的作用,一起结合智能剧本的驱动技能,更是在电商代班场景下完结了7×24小时虚拟主播不间断带货直播的才能,发生了真人主播无法达成的价值和作用。
全文8740字,估计阅览时刻22分钟。
01 布景
2022年开年以来,数字人几乎成为AI榜首抢手赛道,在许多运用场景大放光彩。IDC 发布《我国 AI 数字人商场现状与时机分析,2022》报告。报告显示:我国 AI 数字人商场规模出现高速增长趋势,到2026年我国AI数字人商场规模将到达102.4亿元人民币。现在商场上数字人种类繁多,有泛文娱型数字人/企业级服务数字人,如浦发银行的智能数字人客服,以及百度智能云曦灵打造的 AI 手语主播,现已为2700万听障用户供给直播及赛事的手语服务;还有中之人/真人驱动的演艺型数字人,如其间几个杰出的是百度云的希加加,快手的关小芳等等,数字人在一些范畴现已发挥出明显的商业价值,尤其是音视频的实时直播场景,在这个布景下,依据现在的直播带货渠道,运用数字人技能将会发明更多的产品和商业价值。
02 事务
百度电商直播渠道是承继主播开播、带货、商品解说、直播分发、下单购买的综合渠道,依托百度流量池,依据很多百家号创作者和UGC主播经过线上直播丰厚的内容方法,给用户供给更个性化、更生动、更高效的消费体验。与数字人的结合首要是依据代班主播的产品形状,供给虚拟数字人主播直播带货的才能:
△高精数字人:BoBo
在直播层面,同真人主播相比,数字人可完结24小时全程直播,且可控性强、形象安稳,能有效避免人设“塌房”,能够作为品牌先行试水元宇宙的切入口和纽带。
7月19日,百度APP AI探索官度晓晓携手龚俊数字人举行了一场:数字人脱口秀直播,并将带货内容拓展至元宇宙。百度此次用数字人脱口秀翻开直播带货,便是Web3年代下探索数字人可能性的构思测验,为直播带货带来了新鲜感。直播渠道还内置了丰厚精美直播间场景,从演播厅到舞台,可按需匹配,一键处理建立直播场景投入大、质感不高的难题;不仅如此,便捷的开播渠道修正器可预设直播模版,恣意组合脚本、商品、才艺,下降直播的预备门槛。关于商家而言,具有一个安稳、高效、可控的数字人主播,和不受时刻空间限制的直播间,大幅下降企业运营成本,是性价比之选。
03 全体架构
3.1 功用模块结构
全体功用模块分为三层:
数字人财物:首要包含数字人形象的生成、财物办理、个性化捏脸才能;数字人声音体系(包含语音组成(多音色支撑)语调语速等才能装备,以及唇动服务);数字人动作体系(指令触发的各种身体、手势、面部的动作);
直播互动:支撑数字人直播间内的功用和音视频等互动才能,支撑B端的剧本编列,直播间内玩法功用互动,主播AI智能对话问答,以及中之人、真人接管才能;
流媒体操控:将烘托的音视频数据进行编码推流,以及经过导播台对音视频做一些刺进修正等丰厚的功用,如混画合流、字幕刺进等才能。
3.2 概要流程规划
剧本体系
剧本体系支撑B端主播装备自己的代班主播剧本,即直播间内一系列有序的使命编列和互动作用装备;数字人驱动服务为剧本编列服务供给了行列装备和运转调度的才能支撑,剧本编列服务经过该才能能够灵敏组织数字人直播间需求履行的内容。
依据此,剧本体系服务支撑了资料库装备:
1、商品:挂接商品、商品转场等;
2、营销活动:抽奖、优惠券、红包雨等;
3、互动约请:约请用户点赞、重视、共享等;
4、为说话、动作、表情、切换布景、刺进图片视频、位移、缩放等。
别的编列上能够支撑:
1、创立修正剧本基本信息;
2、编列剧本:能够经过选取资料库中的各种资料,组合生成剧本。
实时交互:除了既定剧本次序履行以外,数字人主播还会对用户进行实时的交互,以到达更实在拟人的作用;实时交互的处理分为以下两类:
-
用户行为反应:支撑对用户的点赞、共享、重视、加粉丝团等等用户行为做出反应,使数字人主播能够与用户行为能够构成互动,提升直播间体验;
-
智能问答:支撑依据一定的策略回复直播间内观众的消息,该问答功用经过接入百度大脑,供给强壮的智能问答才能,使数字人主播更懂用户;
-
结合AI才能,主播还会有一些情景的交互刺进,如直播间长时刻冷清,主播会不高兴等等。
并且使命编列体系能够智能的依据数字人实时的烘托状况,选择最合适的打断实践刺进对应的互动,且不影响后续剧本进行,到达和实在主播最接近的作用。
数字人音频服务会整合很多AI才能,其间包含经过TTS语音组成,生成支撑多种可定制的音色的音频数据;经过VTA服务,生成与对应模型适配的唇动烘托数据;依据百度unit进行对话装备以及意图模型练习,支撑和主播提问,闲聊等智能问答功用
驱动服务依据剧本使命下发动作烘托指令和直播间信号指令,以及数字人音频服务下发的每一帧音频和唇动数据,整合下发到云烘托服务的会话中心;会话中心担任与上游(直播事务)、下游(烘托引擎)、其他模块(导播台)等建连,维持心跳,收敛会话服务;搜集包装驱动数据下发给云烘托服务:
云烘托服务经过承受会话中心的数据,包含各种动作指令,各种部位骨骼bs驱动数据来实时烘托数字人模型(烘托引擎包含自研、UE4、unity3D等),同步生成视频流数据,回来到BRTC服务模块进行编码推流到LSS,LSS云导播台依托百度智能云的音视频直播、媒体、AI等技能,支撑强壮的直播实时修正才能,如数字人直播的一些视频混画,布景组成,字幕刺进等功用;修正之后从而推流经过CDN的边缘节点,终究到直播源站。
△直播间内画面多层混合
04 技能完结胪陈
4.1 服务端架构
烘托引擎运转环境
-
DKE是一个快速、灵敏、按需定制的Kubernetes布置引擎,依据DKE布置的K8S之上,运转着天牛渠道以及数字人烘托引擎体系;
-
天牛渠道是为私有化交给所打造的容器办理渠道,现在ACG交给事务运用的数字人烘托引擎体系便是经过天牛进行私有化交给运用的;
-
显卡:人像烘托服务依靠于显卡。
烘托引擎服务依靠
-
根底软件:MySQL、ZK等,能够运用天牛数字人安装包内自带的,也可经过装备运用自定义的服务;
-
AI才能:1)虚拟形象生成技能:支撑低成本,相片快速生成形象(PTA),支撑捏脸体系,多维度自定义修正形象。2)面部及动作捕捉技能:经过捕捉脸部表情与肢体动作,让真人实时驱动虚拟形象。3)语音技能:如语音辨认(ASR)、智能问答对话(百度UNIT)、语音组成(TTS)等,帮助建立智能语音对话体系,支撑用户与虚拟形象轻松对话。
数字人烘托引擎
依据ACG-云烘托计划
-
供给websocket服务接口,用于接纳数字人驱动服务发送过来的指令,经过调用AI才能进行语音了解、对话生成、组成语音等,调用依据烘托引擎的人像烘托服务生成人像视频,终究经过流媒体服务进行推流。
-
支撑真人保管,运用真人保管渠道能够经过运用摄像头或动作捕捉设备进行人像动作收集并转化生成数字人音视频画面。
-
供给事务装备渠道和相关api进行数字人人像办理。
依据AR-端云一体烘托计划
-
全自研烘托引擎支撑数字人烘托所需的多项高功能烘托算法,包含仿真光线次外表散射特点的皮肤烘托原料、仿真各向异性特性的头发烘托原料以及眼睛烘托原料。
-
支撑终端+云端布置运转,在终端最低占用5M客户端包体积,功能比照商业引擎愈加优秀;在云端对接流媒体服务进行推流,能够满足直播、视频出产事务需求,支撑在网页端或许超低端设备运转。全方面覆盖终端设备,少量参数同步即可对齐端云烘托需求。
数字人驱动服务
用于驱动数字人烘托引擎履行相应的指令,对事务屏蔽了和数字人烘托引擎交互的杂乱逻辑,供给http接口给事务方接入,方便事务快速接入数字人直播才能。本服务由架构组server团队开发保护,详细在“数字人驱动服务规划”中介绍。
剧本体系
首要功用包含:
-
资料库:支撑装备挂接商品及解说案牍、营销活动即解说案牍(抽奖、红包雨、优惠券)、场景话术资料(约请共享、约请点赞、约请重视、剧本转场);
-
剧本编列:支撑运用资料库中的资料来组合生成剧本;
-
实时互动:能够依据事务策略在剧本中的可打断方位刺进主播讲话等行为,比如感谢重视点赞等等;
-
同步数字人驱动服务:将编列好的剧本以及实时互动行列经过接口同步给数字人驱动服务。
第三方事务服务
现在这一层只有直播电商,未来依据需求也能够接入咨询,媒体、演艺秀场等其他事务。
4.2 数字人驱动服务
各模块概述
apiserver
对外供给http接口,处理事务方的剧本装备(人像选择、布景设置、重复履行次数)、需求数字人履行的行为指令行列(包含:剧本行列、实时交互行列),数字人直播间状况操控等恳求,在本架构也属于行列出产者。
行列
驱动服务保护两个先进先出行列,分别为:剧本行列、实时交互行列。
1、剧本行列
开播前预先编列好的行列,数字人直播间发动后,主节点会发动剧本行列消费,然后数字人依照预先编列好的内容履行,例如:开播中需求数字人演示的商品解说、抽奖、红包雨等,会提早同步到剧本行列中。
2、实时交互行列
开播中需求实时刺进原先编列剧本的行列,以支撑数字人给用户互动供给反应,例如:数字人主播感谢送礼重视等,能够经过实时交互行列完结。
worker
1、worker从节点
未中选为主节点的节点,它只担任守时参加推举。
2、worker主节点(master)
中选为主节点的节点,作为顾客,消费出产者发生的行列,首要支撑:
-
对开播中的直播间和数字人烘托引擎保护长衔接会话;
-
履行数字人直播间开关播调度、剧本调度、剧本行列调度、实时互动行列调度;
-
将行列指令转化成数字人烘托引擎可履行的DRML指令,并发送给烘托引擎。(DRML是⼀种以SSML为根底的符号语⾔,SSML(Speech Synthesis Markup Language)是语⾳组成体系中的符号语言,它以XML为根底,供给了⼀套标准⽅法来精细调整语⾳输出。DRML涵盖了SSML中对语⾳输出的操控⽅法,别的还定义了对数字⼈的动作操控、动作与语⾳的融合⽅式,以及在屏幕上引⼊其他视觉元素的⽅法。
主从推举
1、初始状况
同一个集群中每个worker实例都有一个取值共同的env环境变量,作为所在集群分布式锁标识。此时还未发生master节点,集群分布式锁还是处于开释状况。
2、进行推举
初始状况下,集群内一切正常运转中的实例会守时经过redis的setnx指令抢占集群分布式锁进行推举。
3、成为主节点
抢到锁的则成为master主节点,中选为主节点后,会守时履行心跳,给抢到的锁进行续期,主节点会保护与数字人烘托引擎的长衔接、履行行列消费、直播间主动开关播。
4、成为从节点
未抢到锁的则仍旧持续担任worker节点,会守时进行推举,除此之外没有其他操作。
5、主节点反常
主节点反常,则会没有心跳,此时,变成初始状况、进行推举,集群中其他某个worker节点抢到锁之后会成为主节点。
行列消费
全体依靠各层级的调度完结,层级联系如下图,以下各层级的调度均运用golang的channel以出产者顾客模型完结。
直播间调度
-
存在直播间发动监听器,以协程方法守时主动履行,它会从数据库中加载当时数字人直播间状况为已发动(room_stauts=1)的直播间,并将加载的直播间经过channel信号的方法发送给直播间顾客办理器;
-
直播间顾客办理器经过监听channel接纳直播间发动监听器发来的直播间,并为每个直播间发动一个Consumer协程;
-
为避免每个直播间被重复调度,master内部保护了一个直播间顾客注册中心,用于确保一个直播间不会被master重复调度。
剧本调度
一个直播间能够关联多个剧本,多个剧本能够按次序编列,每个剧本能够履行1次或屡次。
1、剧本调度的三种情况
被调度的剧本分以下三种情况:
1.按重复履行次数逐次调度的剧本;
2.按编列次序逐个调度的剧本;
3.master反常退出消费,康复后持续履行前次中止的剧本。
2、调度流程
-
consumer查找当时待履行的剧本:
-
没有待履行的剧本,则预备退出行列消费(等候实时行列消费完);
-
查找失利则退出consumer,等候下次被直播间调度进程从头调度;
-
查找到则预备发动行列调度,即进入流程2。
-
为当时直播间建立与数字人烘托引擎的长衔接,并初始化长衔接会话;
-
更新直播间剧本履行偏移量(记载当时直播间进入当时剧本);
-
发动协程并行履行“剧本行列调度” 流程、以及“交互行列调度”流程;
-
当时剧本行列调度履行完毕,回来流程1。
剧本行列调度
行列中的指令次序经过seq_no指定,会被依照从小到大的次序依次履行,每次调度依照如下流程:
-
每次获取行列中的下一个seq_no,并获取该seq_no对应的参数;
-
更新当时剧本行列履行点为当时seq_no,并设置履行点状况为已发动
-
解析seq_no的指令参数,生成数字人烘托引擎的DRML指令;
-
生成ReuqestId(本次恳求的仅有标识)经过从前创立的长衔接会话,运用烘托引擎的TEXT_RENDER才能往烘托引擎发送DRML指令;
-
接纳长衔接回来该ReuqestId的成果,一次TEXT_RENDER指令长衔接会依据烘托进程做屡次呼应,如图:
其间:假如drml指令烘托失利,3会回来RENDER_ERROR;
-
等候长衔接回来成果为烘托完结或失利、等候超时,则完毕等候;
-
更新行列履行点状况为已履行,表明一个seq_no行完结,回到流程1;
-
若行列内没有未消费条目了,则开端查看交互行列是否有未消费条目,假如还有则持续等候交互行列消费完结,没有则通知交互行列中止调度,并退出本身剧本行列调度。
交互行列调度
交互行列调度和剧本行列调度并行发动履行,履行流程如下:
-
交互行列调度每隔500ms依据当时记载的auto_seq_no(履行偏移量)查询一次数据库内的交互行列是否有下一条待履行的auto_seq_no,假如未找到则重复履行流程1;
-
更新当时剧本行列履行点为当时auto_seq_no,并设置履行点状况为已发动;
-
解析生成该auto_seq_no对应的DRML指令;
-
往数字人烘托引擎长衔接会话中发送DRML指令(交互行列调度和剧本调度共享同一个长衔接会话,经过即时发送指令到会话,结合剧本行列履行的DRML的可打断点,发生在剧本演示中刺进实时交互行为的作用);
-
接纳长衔接回来该ReuqestId的成果;
-
等候长衔接回来成果为烘托完结或失利、等候超时,则完毕等候;
-
更新行列履行点状况为已履行,即一个auto_seq_no履行完结,回到流程1
-
一起交互行列调度器会监听剧本行列调度器发来的退出信号,一旦收到信号,则退出交互行列调度,不再持续轮询。
多直播间长衔接保护
1、长衔接初始化
-
衔接数字人烘托引擎websocket;
-
依据websocket创立会话;
-
以数字人烘托引擎appid为仅有标识,保存长衔接句柄到全局map中,以备后续恳求ws时运用;
-
发动心跳协程;
-
发动长衔接呼应监听分发协程。
2、长衔接心跳
长衔接在初始化的一起,master会发动一个协程,该协程每隔3s向数字人烘托引擎发送心跳。假如数字人烘托引擎假如30s内没有检测到心跳,会主动开释资源。
3、长衔接恳求
-
往长衔接呼应分发协程中注册一个channel,用来预备接纳当时恳求的RequestId的呼应成果;
-
往长衔接写入恳求参数。
4、长衔接响****应
-
长衔接呼应分发协程,会统一监听和解析长衔接回来的成果,将回来的RequestId写入对应的channel中;
-
经过等候该RequestId的channel信号,到达接纳恳求的呼应成果意图。
5、长衔接毛病搬运
这一点在 “容灾 – 数字人烘托引擎反常” 中描述。
6、多主节点支撑
在需求多主节点的场景中,例如:划分预览机和线上,或许需求添加集群处理才能的情况下,能够经过给实例设置不同的env,来到达划分出多集群多主节点的意图,不同集群之间互不影响,原理是:
-
apiserver在注册数字人直播间时,会依据将集群env环境变量写入数字人直播间信息表中;
-
worker从节点会依据env变量来获取主节点锁,多个env变量即可发生出多个master节点;
-
master在进行数字人直播间调度时,会依据当时集群env来挑选获得对应的数字人直播间,即master只调度和自己env标识共同的直播间。
开关播
1、开播
在百家号渠道开播数字人需求先创立预定直播间,预定创立完结后,支撑以下两种方法发动数字人直播间:
(1)主动开播
master到点主动发动数字人推流并开播,详细如下:
-
事务侧经过调用注册数字人直播间接口注册数字人直播间;
-
master会主动检测行将到达预定开播时刻的直播间,将需求开播的数字人直播间状况改为已发动;
-
master随即开端进行直播间调度等流程,即开端推流;
-
master调用百家号开播接口开播。
(2)手动开播
数字人驱动服务供给了手动发动数字人直播间的才能,当需求在指守时刻之前提早开播,可经过如下方法手动开播:
-
调用apiserver的注册数字人直播间接口添加数字人直播间;
-
调用发动数字人直播间接口(room/start),数字人直播间状况修正为已发动(room_status=1);
-
master即开端直播间调度等流程;
-
消费行列开端即推流开端,随后在百家号渠道即可开播。
2、关播
(1)主动关播
master在一切行列履行完毕后,会中止数字人直播间推流,详细如下:
-
master会在每个数字人直播间一切剧本行列消费完结后,等候直至实时行列消费完毕,退出行列顾客;
-
调用百家号关播接口;
-
并更新数字人直播间状况为已完毕(room_status=-1)。
(2)手动关播
如需求手动中止数字人推流:
-
百家号渠道先正常关播;
-
master会轮询当时正在消费中的一切数字人直播间的直播meta最新状况,假如为已关播则修正room_status为-1
-
假如检测到消费中的数字人直播间的room_status为-1,则会向对应的直播间行列顾客协程发送信号,该直播间顾客协程收到信号就退出消费。
容灾
以下列出了各种反常情况,及其对应的处理策略
1、数字人烘托引擎反常
(1)烘托引擎服务多实例布置
布置多套烘托引擎实例,运用同一套mysql数据库,使得多套烘托引擎的装备坚持同步,使同一个appid、appkey,能够在不同实例上均可运用
(2)衔接烘托引擎毛病搬运
-
假如某一个烘托引擎实例长衔接无法创立,master内的长衔接会话办理器会主动做2次重试以及切换实例重试;
-
假如某一个烘托引擎实例长衔接能够创立,可是由于资源缺乏等原因无法初始化会话,master会退出当时直播间的行列调度,符号需求测验运用下一个实例,并等候下一次被调度重试,被从头调度时,master会主动选取预设的列表中的下一个实例。
2、数字人驱动主节点毛病搬运
-
主节点宕机或反常时,则主节点无法给自己的任期续期,由此主节点锁会主动开释;
-
其他worker节点此后抢到锁便主动成为主节点;
-
新的主节点开端处理主节点相关使命,毛病主节点搬运到新主节点会在1s完结。
3、数字人驱动主节点毛病康复
(1)剧本调度反常康复
-
数字人直播间数据表会存储当时调度的剧本的drama_seq_no(剧本调度序号),在该剧本得到调度的开端,master就会将drama_seq_no记载到表中;
-
当master从宕机等反常情况中康复后,会读取drama_seq_no,并持续调度该剧本。
(2)剧本行列调度反常康复
-
剧本行列调度在履行到每个行列条目开端时,会记载当时履行到的条目seq_no,并记载该seq_no的履行状况为履行中;
-
剧本行列调度在履行到每个行列条目完毕时,更新该seq_no的履行状况为已履行;
-
当master从宕机等反常情况中康复后,会读取seq_no及其履行状况,假如状况为履行中,表明该条目还未履行完master就挂了,需求从头履行该seq_no;假如为已履行,则持续履行下一个seq_no。
(3)实时交互行列调度反常康复
逻辑同剧本行列调度反常康复。
(4)毛病现场康复
这儿的“现场”指的是数字人在履行中的人像方位坐标、人像巨细、直播间布景等信息,这些信息数字人驱动服务会在数字人DRML履行进程中进行保存。在数字人驱动服务在遇到反常康复时,假如不做现场康复,会形成反常康复后人像坐标、巨细、布景等元素与预期不符的情况,因而,在反常康复时,数字人驱动服务会先读取保存的现场信息,并经过履行现场信息对应的DRML康复现场。
05 小结
本文详细的阐述了依据数字人云烘托技能计划在直播事务架构中的运用,以及与很多AI才能的相结合,虚拟主播在本年是抢手IP,强互动的直播场景无疑是数字人烘托的重点重视对象,后续烘托技能进一步完善和立异,将数字人直播间愈加拟人化、生动、吸引眼球是我们规划的方向,尽可能运用到更大更多的场景里边。
特别感谢:感谢AIG增强现实技能团队与ACG智能云团队为云烘托服务共建供给技能支撑。
————————END————————
推荐阅览:
百度工程师教你玩转规划形式(工厂形式)
超大模型工程化实践打磨,百度智能云发布云原生 AI 2.0 计划
前后端数据接口协作提效实践
前端的状况办理与时刻旅行:San实践篇
百度App 低端机优化-发动功能优化(概述篇)
面向大规模数据的云端办理,百度沧海存储产品解析
增强分析在百度统计的实践