import common from "../common/video-polling.mjs";
import constants from "../../common/constants.mjs";
export default {
...common,
key: "heygen-create-talking-photo",
name: "Create Talking Photo",
description: "Creates a talking photo from a provided image. [See the documentation](https://docs.heygen.com/reference/create-an-avatar-video-v2)",
version: "0.0.1",
type: "action",
props: {
...common.props,
talkingPhotoId: {
propDefinition: [
common.props.heygen,
"talkingPhotoId",
],
},
text: {
type: "string",
label: "Text",
description: "The text that the character will speak",
},
voiceId: {
propDefinition: [
common.props.heygen,
"voiceId",
],
},
title: {
propDefinition: [
common.props.heygen,
"title",
],
optional: true,
},
test: {
propDefinition: [
common.props.heygen,
"test",
],
optional: true,
},
caption: {
propDefinition: [
common.props.heygen,
"caption",
],
optional: true,
},
scale: {
type: "string",
label: "Scale",
description: "Talking Photo scale, value between 0 and 2.0. Default is 1.0.",
optional: true,
},
talkingPhotoStyle: {
type: "string",
label: "Talking Photo Style",
description: "Talking Photo crop style",
options: constants.TALKING_PHOTO_STYLES,
optional: true,
},
talkingStyle: {
type: "string",
label: "Talking Style",
description: "Talking Photo talking style",
options: constants.TALKING_STYLES,
optional: true,
},
expression: {
type: "string",
label: "Expression",
description: "Talking Photo expression style",
options: constants.EXPRESSIONS,
optional: true,
},
superResolution: {
type: "boolean",
label: "Super Resolution",
description: "Whether to enhance this photar image",
optional: true,
},
matting: {
type: "boolean",
label: "Matting",
description: "Whether to do matting",
optional: true,
},
},
methods: {
...common.methods,
async processVideo($) {
const { data } = await this.heygen.createTalkingPhoto({
data: {
title: this.title,
test: this.test,
caption: this.caption,
video_inputs: [
{
character: {
type: "talking_photo",
talking_photo_id: this.talkingPhotoId,
scale: this.scale,
talking_photo_style: this.talkingPhotoStyle,
talking_style: this.talkingStyle,
expression: this.expression,
super_resolution: this.superResolution,
matting: this.matting,
},
voice: {
type: "text",
voice_id: this.voiceId,
input_text: this.text,
},
},
],
},
$,
});
return data.video_id;
},
},
};