【儿童节快乐】【虚拟主播】卡通版来了【Java】
用户已被禁言 发布于2021-06 浏览:6884 回复:0
1
收藏

            

AI社区的各位开发者、隐藏的PM、RD们。儿童节快乐呀~ 做一个童心未眠的开发者

今天小帅丶给开发者带来了虚拟主播视频生产-卡通版接口的评测-Java语言

接口文档:https://ai.baidu.com/ai-doc/FACE/Jkowz99ys (一定要看哦)

由于是邀测接口,需要提交工单申请哦~

特效用户交流QQ群:583486416

能力介绍
基于语音驱动动画技术,提供定制化的虚拟主播视频模板服务,帮助媒体、教育、营销类客户低成本、规模化、快速生成带虚拟主持人或虚拟老师的视频内容。

唇形面部驱动:可根据文字、语音精准驱动虚拟形象的唇形和面部肌肉,配合丰富的表情和动作定制,让虚拟主播具有更加逼真的表现力。
预置形象库:预设3D卡通半拟真、3D卡通动画两类形象库,供客户灵活租用和专属定制。并承接"人脸3D虚拟形象生成”技术,实现批量生产个性化形象。

注意:项目为Java项目,使用Maven搭建,需要开发工具安装lombok插件哦

需要引入额外的JAR 

Hutool 发送HTTP请求
FastJson 处理数据为json格式
Lombok 简化代码

STEP 1 获取AccessToken

https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu#%E8%8E%B7%E5%8F%96access-token

STEP 2 准备必要属性

     /** ACCESS_TOKEN */
    public static String ACCESS_TOKEN = "ACCESS_TOKEN";
    /** 虚拟主播视频生产(卡通版) */
    public static String  AVATAR_ADD = "https://aip.baidubce.com/rpc/2.0/creation/v1/avatar/task/add";
    /** 虚拟主播视频生产结果查询(卡通版) */
    public static String  AVATAR_GET = "https://aip.baidubce.com/rpc/2.0/creation/v1/avatar/task/get";
    /** 视频模板ID */
    public static String  TEMPLATE_ID_AVATAR = "3";

STEP 3 编写创建任务的代码

    /**
     * @Author 小帅丶
     * @Description 虚拟主播-卡通任务创建
     * @Date  2021年5月21日17:43:58
     * @param model_id - 人物形象参数
     *                 - 小老鼠=401,西服女=402,红裙女=403
     * @param per - 物音色参数
     *            - 度小鹿:"4118" 度博文:"106" 度米朵:"103" 度小娇:"5" 度逍遥:"4003" 七哥:"x2_qige" 小媛:"x2_xiaoyuan"
     * @param text - 文本内容
     * @return java.lang.String
     **/
    public String avatarAdd(String model_id,String per,String text) throws Exception{
        FaceDriverVirtualRequestBean bean = new FaceDriverVirtualRequestBean();
        bean.setTemplate_id(TEMPLATE_ID_AVATAR);
        bean.setModel_id(model_id);
        bean.setPer(per);
        bean.setText(text);
        String param = "data="+JSON.toJSONString(bean);
        String result = HttpUtil.post(AVATAR_ADD + "?access_token=" + ACCESS_TOKEN,param);
        return result;
    }

调用需要用的一个Java对象(为了方便传递参数)

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * @author 小帅丶
 * @className FaceDriverVirtualRequestBean
 * @Description 请求参数
 * @Date 2021-05-12-13:51
 **/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class FaceDriverVirtualRequestBean {
    private String appid;
    private String task_id;
    /*****人脸驱动*****/
    private String image;
    private String template_id;

    /*****虚拟主播*****/
    private String bg_image;
    private String subtitle_text;
    private String subtitle_type;
    private String body_position;

    /*****虚拟主播-卡通*****/
    private String text;
    private String model_id;
    private String per;
    private String video_ids;
}

STEP 4 编写查询任务的代码-备用

    /**
     * @Author 小帅丶
     * @Description 虚拟主播-卡通任务查询
     * @Date  2021年5月21日17:44:01
     * @param video_ids  	视频id
     * @return java.lang.String
     **/
    public String avatarGet(String...video_ids){
        StringJoiner videoIds = new StringJoiner(",");
        if(video_ids.length<=0){
            return "视频ID为空";
        }else{
            if(video_ids.length==1){
                videoIds.add(video_ids[0]);
            }else{
                for (int i = 0; i < video_ids.length; i++) {
                    videoIds.add(video_ids[i]);
                }
            }
            String param = "video_ids="+videoIds.toString();
            System.out.println("param = " + param);
            String result = HttpUtil.post(AVATAR_GET + "?access_token=" + ACCESS_TOKEN, param);
            return result;
        }
    }

STEP 5 创建一个虚拟主播视频生产-卡通版任务

 public static void main(String[] args)throws Exception {
        //虚拟主播-卡通任务创建
        String result = faceDriverSample.avatarAdd("401","103","你好,欢迎访问小帅一点资讯");
        System.out.println("result = " + result);
    }

返回的内容-video_id保存备用

{
    "err_code":0,
    "err_msg":"success",
    "log_id":"3712922492",
    "data":{
        "video_id":"616161"
    }
}

STEP 6 查询人虚拟主播视频生产-卡通版任务状态

    public static void main(String[] args)throws Exception {
        //虚拟主播-卡通任务查询
        String result = faceDriverSample.avatarGet("616161");
        System.out.println("result = " + result);
    }

这里有三种任务状态 1:合成成功,2:合成中,3:合成失败

返回的内容-video_url即为生成的视频地址 只有success才会返回video_url

URL已经被小帅处理了。开发者们无需复制粘贴去查看到底是什么哦

{
    "err_code":0,
    "err_msg":"success",
    "log_id":"2843739769",
    "data":{
        "limit_qps":2,
        "lists":[
            {
                "id":616161,
                "status":1,
                "video_url":"https://ar-fm.cdn.bcebos.com/ar/sta_server/video/1622274950945202387/BaiduAR1622274949560616161.mov"
            }
        ]
    }
}

小帅的一些意见建议和问题

1.接口是否像真人一样增加背景图,默认黑色不是很好
2.不支持自定义虚拟情绪、表情、视频是否可以增加字幕

微信扫码快速体验

选择人物、音色即可查看视频效果哦~

收藏
点赞
1
个赞
TOP
切换版块