TheRamU/Fay: 语音互动,直播自动带货 虚拟数字人 (github.com)
gitee
fay: 这是一个数字人项目,包含python内核及ue数字人模型,可以用于做数字助理及自动直播,又或者作为你的应用入口也很帅 (gitee.com)
2022.10.27
补充mac上的安装办法:
(34条消息) Fay数字人开源项目在mac 上的安装办法_郭泽斌之心的博客-CSDN博客
一、实际
应用案例
抖音虚拟主播
人机
交
互
数字站桶人
二、数字人是什么
首先我先给数字人重新做一个定义:“
把人数字化,以行人的职责
”。怎么理解呢?我举两个例子就清楚了。第一个是现在直播带货,主播成本越来越高,我们的数字人能否代替主播24小时自动带货呢?这里数字化的是
主播的形象
、
声音
、
性格特质
,以及
商品的知识
。另一个是,一些客服或者售前情景,所做的工作也是重复度非常高,我们能否交给数字人去完成呢?这里就简单多了,只需要把
知识库
给数字化,就是我们常说的
Q&A
。
“把人数字化”这个说得有些笼统,具体来说是把人的那些方面可以数字化呢?
-
三维人物:信息的传输需要载体,把三维人物形象作为载体可以融入语音、文字、动作、情绪等信息传输通道,远比单纯的语音或文字的承载量大得多。
-
语言:你的数字人会说什么内容,以怎么样的声音说话,用的是粤语还是国语。
-
形象表情动作:一个数字人单纯的只会与人沟通还不够,还需要能够做出不同的表情动作。不竟,人类沟通70%的内容是通过非语言传达的,数字化的过程中我们又怎会错过条重要的信息通道呢。
-
情绪:情绪可以附加在语言和表情动作里,让信息传输的带宽更大。
-
环境模型:数字人向你展示的时候是在大厅,还是在房间,在户外。然后数字人的周围有些什么,这都可以衬托出不同的氛围。
我们再来说说,一个数字人如何行人的职责。比如,在展厅里,不能让解说员24小时站在展品前面等着游客来询问,更不能循环播放着一个段音视频。但数字人可以,只需要一个显示屏即可。若你办的是一个云展厅、元宇宙,就更是如此了。
三、数字人可以解决什么问题
数字时代,数字产品泛滥,互联网平台多不胜数。那个这个数字人就是你在不同的电子产品、不同平台上的分身,代替你行人的职责。除了文章开头说的三个案例外,至少还可以用于:
-
电子导游;
-
电子解说员;
-
虚拟老师;
-
售前、售后客服;
-
前台指引。
四、这个数字人怎么实现
我们以直播带货为例,为了方便理解,首先说明的是我们对直播场景做过分析,发现了如下
逻辑
:
接下来我来就可以来具体操作了:
1、建立行为模型
这会直接影响到数字人接受外部刺激(大数多情况下是,用户说的话,在直播场景下也有粉丝关注送爱心等情况)之后的情绪变化,以及响应的方式和程度。你可能会想,为什么需要建行为模型呢?举个例子你就明白了。你可以设计了一个逻辑,粉丝点赞时,主播非常开心地感谢粉丝,粉丝骂主播时,主播表现出愤怒。
你在直播时,有一个粉丝点赞了,另一个粉丝同时在骂主播,你的数字人该作出怎么样的反应呢?
这个只是简单的例子,实际情况复杂得多。也有人,说这是算法和AI的区别。这有一定的道理,但说法不严紧,这个话题就不在此展开了。我们在直播场景下,试过以下这两种方式建立性格模型:
我们只需要把目标主播的直播给录制下来,提取样本数据,然后训练一个从粉丝的不同刺激的组合,到主播的不同响应方式的
多元逻辑回归
的数学模型参数即可。
把现有主播的性格模型数字化,这种方式缺憾也十分明显,就是你无法快速调节其性格特质。想要人为调节,你也可以参考以下方试:
我们做了一个“数字人控制器”的客户端,可以手动调节行为模型的参数。想体验参考的话,也可以私下跟我联系(qq467665317),我把
代码
发你。
2、人物模型、场景载入引擎
人物模型的选择大体上可以是二次元和超写实。场景的选择就很多,可以是户内户外,坐着站着。再配合其它物体就可以把整个氛围衬托出来,比如:沙发可以表现出舒适放松;显示屏可以不违和的插入广告信息。
我们对比了多个引擎技术之后,最终选择
UE4
作为模型的驱动引擎。主要有以下几点原因:首先UE4不像live2d那样,出来的是假三维的纸片人;其次,UE4里对现实世界的光照、材质、重量等物理属性都存在一一映射,可以非常全面地还原一个真实场景。这里提醒一下,在三维的世界里,有两条工具线:一个是引擎,用于驱动三维模型按照你的逻辑运作;一个是建模工具,比如maya。但通常这两类工具都会互相融合、相互交叉。
二次元的模型建立可以使用daz studio(偶然机会获得了120G资源,有需要加我qq467665317),非常简单。可以非常方便选选择人的各个组成部分,比如:身驱、头发、脸型、眼睛等,然后组合成一个你想要的形象。
至于超写实的模型就可以使用metahuman了。metahuman说白了其实就是一个云端版本的ue,优点是集成了大量真人扫描的高精度组件,可以非常方便地调节出一个欧美真人。对,你无看错,是欧美的。官方的解释是,由于疫情原因,还未对亚洲人进行扫描。在虚拟主播这个案例上实际我们就是用
metahuman
的。
在直播带货案例里,我们把模型导入到ue4,我们给模型在ue4里预设了
四个动作
(站着、站着说话、坐着、坐着说话),
三个表情
(平静、开发、愤怒),
三个镜头
(全局、近矩说话、看显示器播放商品展示)。
当数字人的心情激动(开心和愤怒)是站着的,其余时候是坐着的,表情也做对应的变化。说话的时候就会做更多的肢体动作了,唇是根据说话的发音驱动同步化的。当主播在介绍商品时切换到显示器镜头,可以形象的看到商品效果(针对每个商品建模的成本太高)。当主播在与粉丝互动时切换到近矩镜头,方便观看主播的表情动作。其实这两个镜头主播都在说话,当主播说话结束后就切换回全局镜头,让观众感受整个环境。
3、行为模型驱动UE引擎里的三维模型
UE4大多情况下应该是用于游戏开发和影视制作的,要想使用上文第1点说的行为模型逻辑去控制UE里的三维模型,网上可以参考的资源非常少。咨询过常年从事三维模型制作的专家,给出可以参考的答案是把逻辑输出模拟成键盘操作,UE再依据键盘输入来驱动三维模型作出变化。(键盘操作?这是把数字人做成游戏吧?)当然,这种方式我们肯定接受不了,因为这样无办法做复杂的数据传输。几经折腾之后,我们在UE商城里找到一个websocket蓝图插件,与行为模型实现websocket通讯。
4、接通刺激输入
其实在直播带货这个案例里,我们使用的是抖音,刺激是非常有限的,粉丝在你的直播间里能做的事情就是这么点,进来、关注、点赞、刷礼物、购买商品,或者打段文字。在这里,
我们需要获取直播间上的这些信息
。我们测试过网络上主流的方法“抓包然后解码”,这种方法太麻烦,而且离开抖音这个平台之后,就很难再使用这个办法。所以我们最后使用的方案是,用selenium驱动chrome浏览器内核加载直播间https链接,获取浏览器上的内容。我们再把这个内容推送给上面所说的“行为模型”。这样方法将会极大地方便以后做平台的迁移。
5、接入输出通道
在这个案例里,我们是要把行为模型驱动UE里三维模型的变化和数字人主播说的音频,通过视频流的形式输出到抖音直播平台。这个我们使用抖音直播伴侣,可以直接上线直播,同时又可以使用抖音上很多玩法。这里特别强调一下,我们测试过
讯飞、阿里云、百度、亚马讯和微软
的语音合成,只有微软是直接提供带情绪的合成。
1、怎么样把人行为、认知、情绪数字化?
如果你要设计一个模型,把人的东西都数字化下来,以目前的水平还没有人能够做到。但你锁定在某一特定的情景,只要稍加分析,你就会发现,这其实并不难。
2、UE4的功能非常强大、非常多,你遇到的任何一个问题都不少于三个解决办法,如果你没有这块的工作经验,你就得一个个去试。其间我就翻阅了7本书,无数B站上的视频教程。其间解决了诸如:websocket通讯、表情动作、唇形同步、光线控制、头身分离、蓝图通讯等问题。
3、Metahuman的模型导入本地ue后要做很多适应性的调节。若要使用ue商城里的动作,还需要做骨络重定向等操作。由于metahuman自带蓝图,咱们还需要调整原蓝图的逻辑,以兼容我们的行为模型的要求。那怕是怎么控制表情,对于我们来说还是有挑战的。
4、抖音本身不提供直播的数据接口,故要获取直播间的互动数据,就得花些工夫了。
5、语音合成没有你想像中的成熟。若要做情绪语音集的训练,成本会很高。还好,有微软的云端服务。(经验总结:别太相信国内企业广告上说的)
数字人解决方案实际应用案例抖音虚拟主播人机交互数字站桶人首先我先给数字人重新做一个定义:“把人数字化,以行人的职责”。怎么理解呢?我举两个例子就清楚了。第一个是现在直播带货,主播成本越来越高,我们的数字人能否代替主播24小时自动带货呢?这里数字化的是主播的形象、声音、性格特质,以及商品的知识。另一个是,一些客服或者售前情景,所做的工作也是重复度非常高,我们能否交给数字人去完成呢?这里就简单多了,
接口已经通了,其实大家可以变相的理解下,这个东西并不是AG理财,而是可以任意改啊,BG理财,DG理财,WM理财,只要NG里有的接口,全部都可以很简单的接入。前端CSS式样一改,就直接可以召唤神龙了~
其实这个东西的逻辑应该还是通过理财,吸引一些原本没打算玩娱乐城的用户,去了解和尝试玩这种东西,感觉还是很粘人的。就算客户不玩,也会因为理财盘的推广机制,而快速推广起盘口来。不知道第一个运营这个东西的人已经赚了多少钱了,但百易君感觉,肯定是个天文
数字
了。
数字
通信课程的Matlab
源码
包
含
了很多重要的算法和函数,用于实现
数字
信号的处理和通信。其中包括
数字
调制、信道编码、误码率分析、信道均衡、自适应调节、频谱分析、时频分析等。
数字
调制是
数字
通信中最基础的技术之一,Matlab
源码
中包括了各种
数字
调制技术的实现,例如二进制相移键控(BPSK)、四进制相移键控(QPSK)、八进制相移键控(8PSK)等。
信道编码是为了提高
数字
通信系统的可靠性和容错性,Matlab
源码
中包括了各种信道编码技术的实现,例如卷积码和扩展卷积码等。
误码率分析是
数字
通信系统性能评估的关键之一,Matlab
源码
中包括了误码率分析模块,可以用于计算各种
数字
调制技术和信道编码技术实现下的误码率。
信道均衡和自适应调节是为了应对信道的多样性和复杂性,Matlab
源码
中包括了各种信道均衡和自适应调节算法的实现,例如线性均衡、非线性均衡、最小均方误差算法等。
频谱分析和时频分析是为了对
数字
信号进行进一步的分析和优化,Matlab
源码
中包括了各种频谱分析和时频分析的函数和工具箱,例如快速傅里叶变换、小波变换等。
总之,
数字
通信课程的Matlab
源码
提供了一个实验平台,可以让学生更加深入地理解
数字
通信系统的原理和实现方法。