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


    语音驱动虚拟人功能简介

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

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

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

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

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

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

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

    1 开始虚拟人语音检测

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

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

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

    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()/*这是个父类方法,直接调用即可。*/);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3 停止语音检测

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

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

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

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

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

  • 相关阅读:
    WPF 深入理解一、基础知识介绍
    数据结构与算法编程题11
    JAVA每日面试题
    Android studio实现登录验证后返回token及用户信息,使用token获取用户信息并生成列表展示
    Shell脚本学习指南(四)——管道的神奇魔力
    简要介绍django框架
    深度学习笔记_1、定义神经网络
    【数字IC基础】时序分析之关键路径(Critical Path)、优化方法
    C++——多态、虚表、单继承、多继承、覆盖、联编
    全面了解Java中Native关键字的作用
  • 原文地址:https://blog.csdn.net/ZEGO123/article/details/126577894