首页 > 其他分享 >Avatar虚拟人(一):如何实时驱动虚拟人表情口型

Avatar虚拟人(一):如何实时驱动虚拟人表情口型

时间:2024-01-04 18:35:05浏览次数:29  
标签:口型 虚拟人 采集 虚拟 Avatar 语音 驱动

语音驱动虚拟人功能简介

ZEGO Avatar SDK 提供了语音驱动功能,通过声音的声波信息,实时驱动当前虚拟人物的嘴形变化,使得虚拟形象能够和真人一样进行自然的情绪表达。

可广泛应用于社交互动、语聊直播等场景中。

虚拟人语音驱动的前提条件

在实现虚拟人“语音驱动”功能之前,请确保:

  • 已在项目中集成了 Avatar SDK,详情请参考 集成 SDK
  • 已参考 创建虚拟形象,完成基本的虚拟人物形象搭建。

虚拟形象语音驱动实现流程

开发者请参考以下步骤,实现 虚拟形象“语音驱动” 功能。

1 开始虚拟人语音检测

  • 开始语音检测前,请确认已开启麦克风权限。
  • 开发者如果使用了 ZegoCharacterHelper,则无需再调用 ZegoCharacter 的任何相关接口。

搭建出基本的虚拟人物形象后,调用 startDetectExpression 接口,设置驱动模式为 Audio,通过麦克风,开始检测声音波动;然后可以直接通过 ZegoCharacterHelper 的 setExpression 接口设置表情,驱动当前虚拟人物的嘴形变化。

// 开始语音检测
ZegoAvatarService.getInteractEngine().startDetectExpression(ZegoExpressionDetectMode.Audio,expression -> {
    // 驱动虚拟人物的嘴形变化
    mCharacterHelper.setExpression(expression);
});

2 自定义音频采集

开发者可以调用 setCustomAudioDelegate 接口,设置自定义的音频数据采集代理(需要继承 AudioDataDelegate 实现 onStart 和 onStop 方法)。采集到音频数据后,调用 sendAudioData 接口,发送数据。

public class CustomAudioDataDelegate extends AudioDataDelegate {
    private Boolean isRunning = false;
    @Override
    public void onStart() {
        // 启动音频采集
        isRunning = true;
    }

    @Override
    public void onStop() {
       // 停止音频采集
        isRunning = false;
    }
    
    // 这个是 Express 的声音前处理回调, 这里直接把Express 采集的数据给到 Avatar SDK即可。
    public void onProcessCapturedAudioData(ByteBuffer data, int dataLength, ZegoAudioFrameParam param) {
        if(isRunning){
            // 填充声音数据
            // data: pcm的原始数据
            // length: data的长度
            // dataType: data采集的位数  0表示16位,1表示8位
            // timeStamp: 时间戳, 从启动采集到当前经过的时间, 单位毫秒。
            super.sendAudioData(data, dataLength, 1/*rtc 给的数据是 8位的, 填 1*/, super.getDurationMs()/*这是个父类方法,直接调用即可。*/);
        }
    }
}

3 停止语音检测

将应用切换到后台运行、或退出当前页面时,需要调用 stopDetectExpression 接口,停止语音检测。

// 停止语音检测
ZegoAvatarService.getInteractEngine().stopDetectExpression();

综上所述,如果你的业务需要一款多种驱动方式的Avatar虚拟人,可以试试可灵活定制的即构Avatar虚拟人服务,点击跳转即构Avatar虚拟人,了解更多


标签:口型,虚拟人,采集,虚拟,Avatar,语音,驱动
From: https://blog.51cto.com/u_14794264/9103535

相关文章

  • 新火种AI|抖音对AIGC亮明牌!AI虚拟人带货或将面临最大危机...
    作者:小岩编辑:小迪12月19日,抖音官方发布了一则重要公告,宣布将严厉打击包括AIGC在内的6种新型违规行为。所谓AIGC,指的就是当下发展势头正劲的生成式人工智能。之所以要打击AIGC,其实是为了重点打击新型养号行为。抖音志在打击黑灰产,而AIGC造假成了绕不过去的“路障”。事实上,抖音此次......
  • 专访虚拟人科技:如何利用 3DCAT 实时云渲染打造元宇宙空间
    自古以来,人们对理想世界的探索从未停止,而最近元宇宙的热潮加速了这一步伐,带来了许多新的应用。作为元宇宙的关键入口,虚拟现实(VR)将成为连接虚拟和现实的桥梁。苹果发布的VISIONPRO头戴设备将人们对VR的关注推向了一个新的高度。在这个充满无限可能性的元宇宙中,杭州虚拟人科技有......
  • 由于国内某些原因导致Cravatar公共头像无法访问的问题!
    由于国内某些原因导致Cravatar公共头像无法访问的问题!Cravatar当前由LitePress提供维护支持,LitePress诞生的目的是为WordPress在中国搭建起稳定运行所需的所有基础设施,并使其完全本土化。可自行设置Cravatar头像,官网:cnavatar.com......
  • AI 视觉的应用|ZegoAvatar ⾯部表情随动技术解析
    ​ 一、AI“卷”进实时互动2021年,元宇宙概念席卷全球,国内各大厂加速赛道布局,通过元宇宙为不同的应用场景的相关内容生态进行赋能。针对“身份”、“沉浸感”、“低延迟”、“随时随地”这四个元宇宙核心基础,ZEGO即构科技基于互动智能的业务逻辑,提出并落地了ZegoAvatar解决方......
  • js:使用LetterAvatar通过canvas实现浏览器中生成字母头像
    实现效果LetterAvatar的原理就是利用了浏览器对象canvas在线体验:https://mouday.github.io/tools/pages/letter-avatar/index.htmlLetterAvatar.js完整代码/**LetterAvatar**ArturHeinze*CreateLetteravatarbasedonInitials*basedonhttps://gist.github.co......
  • AI数字人(虚拟人)讨论总结
    AI数字人类型和应用场景?1.二维/三维虚拟人:用于游戏、IP品牌(柳夜熙)、内容创作(http://AI.talk)等。2.真人形象数字人:用于直播卖货,营销/投流广告视频录制(Heygen)、语言学习(CallAnnie)等等。AI数字人的价值是什么?1.代替人说话,提升表达效率和营销效率。比如真人做不到24小时直播,但......
  • 「GPT虚拟直播」实战篇二|无人直播间如何接入虚拟人
    摘要虚拟人和数字人是人工智能技术在现实生活中的具体应用,它们可以为人们的生活和工作带来便利和创新。在直播间场景里,虚拟人和数字人可用于直播主播、智能客服、营销推广等。接入GPT的虚拟人像是加了超强buff,具备更强大的自然语言处理能力和智能对话能力,可以实现更加智能化、自然......
  • 半天搞定实时互动AI专属虚拟人
    概述即构虚拟形象引擎(ZegoAvatar)支持自定义管理人物的虚拟形象,通过默认的虚拟形象或者自定义生成的专有虚拟形象,以表情随动、声音驱动等方式与真人实时互动,可广泛应用于语聊直播、社交互动、在线培训等多种场景中。即构虚拟形象引擎(ZegoAvatar)自定义人物虚拟形象集成SDK准备环境......
  • 元宇宙虚拟主播解决方案|如何实现虚拟人直播连麦观众
    虚拟直播既可以实现单人视频直播,也可以邀请观众上麦、与虚拟主播进行多人连麦互动。虚拟直播场景架构设计虚拟直播场景的主要架构如下图所示(以多人连麦直播互动为例):虚拟人直播体验App源码ZEGO针对虚拟直播提供了体验App源码,以供开发者进一步了解ZEGO虚拟直播方案。前提条件......
  • Flask-Avatars插件教程
    原文链接:https://flask-avatars.readthedocs.io/en/latest/我们经常在一些网站上看到,在用户没有自定义头像的情况下,会给每个用户都生成一个头像,这让网站显得更美观,那这个是怎么实现的呢?在Flask中有一个插件,叫做Flask-avatars,专门提供头像解决方案。里面集成了各种头像解决方案......