「GPT虚拟直播」实战篇二|无人直播间如何接入虚拟人

摘要

虚拟人和数字人是人工智能技术在现实生活中的具体应用,它们可以为人们的生活和工作带来便利和创新。在直播间场景里,虚拟人和数字人可用于直播主播、智能客服、营销推广等。接入GPT的虚拟人像是加了超强buff,具备更强大的自然语言处理能力和智能对话能力,可以实现更加智能化、自然化的人机交互。

  • 直播主播:虚拟人可以作为直播间的主播角色,通过与粉丝的对话和互动,提高粉丝的互动效果和兴趣
  • 代替客服:数字人可以作为客服角色,通通过自然语言处理和智能对话,解决客户的问题,并提高客户满意度。
  • 营销推广:虚拟人可以作为品牌形象进行推广,数字人可以通过客观数据进行精准营销,提高粉丝的黏性和忠诚度。

前言

续上一篇文章《干货分享|GPT虚拟直播的设计与实战》 ,我们实现了ChatGPT与ZIM的对接。使得加入聊天群组就相当于加入了直播间,实时与ChatGPT文字互动。但还缺了点什么:直播间可不是只有文字,还有主播!接下来进入本文主题:如何接入虚拟人直播。

虚拟主播我们可以通过即构Avatar进行个人化定制,之前在他们《官网》体验过Avatar Demo,一键可以打造多元化风格,支持Q版、二次元、动漫、拟人等多种风格,即构自研虚拟形象引擎强大AI驱动能力,四种驱动方式:表情驱动、声音驱动、文本驱动、肢体驱动。根据本期Demo需求定制了拟人版本的主播小姐姐。即构AvatarQ版形象软萌可爱含丰富的服饰和妆容素材库,推荐大家去体验。即构Avatar的文本驱动方式刚好符合咱们的业务需求。

1 加入ZIM房间,实时收发消息

加入ZIM房间跟上一篇文章介绍的nodejs版原理一致:

  1. 先登录ZIM
  2. 加入房间或创建房间
  3. 发送弹幕
  4. 监听房间消息,如果来自ChatGPT则朗读

1.1 创建ZIM对象

首先引入ZIM库后,可以调用ZIM的create函数创建ZIM对象,然后调用ZIM对象的setEventHandler函数,将ZIMEventHandler对象传入。ZIMEventHandler主要用于处理一些回调事件如用户上线等回调事件。

public class ZIMMngr {
   
    /**
     * 创建ZIM对象
    */
    private ZIM createZIM(Application app, ZIMEventHandler handler) {
   
        // 创建 ZIM 对象,传入 APPID 与 Android 中的 Application
        ZIM zim = ZIM.create(KeyCenter.APP_ID, app);
        zim.setEventHandler(handler);
        return zim;
    }
    //其他代码略...
}

1.2 群聊-登录、创建房间、加入房间

登录即构服务首选需要token,生成token算法在附件源码已经给出,直接调用即可。但是需要注意,在这个Demo中直接在客户端上生成了,这是非常危险的操作,因为你的密钥和appid暴露出来了,黑客可以通过密钥和appid蹭你的额度费用。因此,建议把token计算放在服务器端生成。

ZIM的createRoom函数用于创建房间,需要提供房间号;joinRoom函数用于加入房间,同样也需要提供房间号。具体代码如下所示:

public class ZIMMngr {
   
    //其他代码略....
    /**
     * 登录zim
    */
    public void login(String userId, CB cb) {
   

        String token = ZIMMngr.getToken(userId);
        ZIMMngr.login(zim, token, userId, new ZIMLoggedInCallback() {
   
            @Override
            public void onLoggedIn(ZIMError errorInfo) {
   

                if (errorInfo.getCode() != ZIMErrorCode.SUCCESS) {
   
                    Log.e(TAG, "login error:" + errorInfo.getMessage());
                    cb.complete(false, "登录失败");
                } else {
   
                    cb.complete(true, null);
                }
            }
        });
    }
    /**
     * 加入房间
    */
    public void joinRoom(String roomId, CB cb) {
   
        zim.joinRoom(roomId, new ZIMRoomJoinedCallback() {
   
            @Override
            public void onRoomJoined(ZIMRoomFullInfo roomInfo, ZIMError err

你可能感兴趣的:(ChatGPT,gpt,人工智能)