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.不支持自定义虚拟情绪、表情、视频是否可以增加字幕
微信扫码快速体验
选择人物、音色即可查看视频效果哦~