首页 > 其他分享 >实时语音驱动实现Android端Avatar虚拟人表情表达

实时语音驱动实现Android端Avatar虚拟人表情表达

时间:2022-08-29 09:33:32浏览次数:95  
标签:虚拟人 虚拟 Avatar 语音 驱动 Android SDK

语音驱动虚拟人功能简介

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 实现 onStartonStop 方法)。采集到音频数据后,调用 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();

4 获取ZEGO Avatar SDK 即构虚拟形象 更多帮助

获取本文ZEGO Avatar SDK 即构虚拟形象的开发文档、技术支持,访问即构文档中心,可驱动虚拟形象模拟真人更自然的表达。

近期有开发规划的开发者可上即构官网查看,恰逢即构七周年全线音视频产品1折的优惠,联系商务获取“ZEGO Avatar"1个月免费试用的产品福利;

标签:虚拟人,虚拟,Avatar,语音,驱动,Android,SDK
From: https://www.cnblogs.com/zegodeveloper/p/16634794.html

相关文章

  • Android Measure,Layout,Draw 源码阅读
    AndroidMeasure,Layout,Draw源码阅读AndroidView的测量、布局、绘制过程详解(上)_>进阶的程序员>的博客-CSDN博客AndroidView的测量、布局、绘制过程详解(下)_>进阶的程......
  • android相关问题记录
    透明度百分比对应RGB值100%—FF95%—F290%—E685%—D980%—CC75%—BF70%—B365%—A660%—9955%—8C50%—8045%—7340%......
  • android 添加图片素材
    ForAndroidStudio1.5:Rightclickonres->new->ImageAssetOnAssettypechooseActionBarandTabIconsChoosetheimagepathGiveyourimageanamei......
  • android 动态添加 fragment
    按钮点击触发:publicvoidexecute(Viewview)throwsException{FragmentManagerfm=getFragmentManager();FragmentTransactionft=fm.beginT......
  • Android AlarmManager
    publicclassMainActivityextendsAppCompatActivity{privatestaticfinalintNOTIFICATION_ID=0;AlarmManageralarmManager;IntentAlarmReceive......
  • Android Studio原生模拟器崩溃
    当你用AndroidStudio原生模拟器测试某个程序的时候模拟器突然就崩溃了如下图所示 当我们再次启动模拟器的时候提示我们已经有一个模拟器在启动中但是我们并没有看到呀......
  • MAUI Android Splash
    MAUI的Splash可以直接在Resources/Splash文件夹下直接更改,参阅官方文档https://docs.microsoft.com/zh-cn/dotnet/maui/user-interface/images/splashscreen?tabs=ios......
  • android 混淆 minifyEnabled proguard-rules.pro consumer-rules.pro
    名词解释minifyEnabled是否启动混淆ture:打开false:关闭proguard-rules.pro文件是给Library模块自己使用的混淆规则consumer-rules.pro文件则是会合并到app的混淆规......
  • 02.Android项目介绍
    一、Android工程的目录结构在AndroidStudio中,一个Android项目的文件结构有许多种表现形式,称之为视图。其中,Android视图是AndroidStudio默认的视图,在新建一个项目之后,And......
  • Android学习笔记五(JAVA):创建新的Activity,启动新的Activity,管理任务之定义启动模式,从
    本篇笔记给QuizDemo新增一个HelpActivity,用户点击Help按钮,会跳转到HelpActivity屏幕,并选择是否查看答案。查看答案之后,返回到答题屏幕,但是如果已经看了答案,这一题的作答就......