Commit c7067e16 authored by 周成波's avatar 周成波

分镜角色优化

parent 895b3a86
......@@ -201,8 +201,9 @@ const onAdaptRolesKeywords = async () => {
// const adapt_attribute_restrict_en = `你现在扮演专业的英语翻译的角色。请将这段文字“${keywords}”翻译为英语。\n要求:只返回英语即可,不要返回其他内容。`;
// let keywords_en = await text2videoService.submitLLM(adapt_attribute_restrict_en, role_keywords_llm.api);
let keywords_en = await text2videoService.submitTranslateToEn(keywords);
console.log(keywords_en)
keywords_en = utils.filterChineseAndPunctuation(keywords_en.replace(/"/g, ''));
// console.log(keywords_en)
// keywords_en = utils.filterChineseAndPunctuation(keywords_en.replace(/"/g, ''));
keywords_en = keywords_en.replace(/"/g, '');
one_role.角色关键词英文 = keywords_en;
}
}
......@@ -255,6 +256,7 @@ const onAdapt = async () => {
"本镜配图": "src/assets/waiting.png",
"local_image_path": "",
"info": "",
"roles": [],
});
}
console.log(form.adapt_result_json)
......@@ -329,7 +331,8 @@ const onAdaptOneScene = async (item: any) => {
// const keywords_en = await text2videoService.submitLLM(adapt_restrict_en, tuili_llm.api);
let keywords_en = await text2videoService.submitTranslateToEn(keywords);
// console.log(keywords_en)
item.场景关键词英文 = utils.filterChineseAndPunctuation(keywords_en);
// item.场景关键词英文 = utils.filterChineseAndPunctuation(keywords_en.replace(/"/g, ''));
item.场景关键词英文 = keywords_en.replace(/"/g, '');
} catch (error) {
ElMessage({
message: String(error),
......@@ -399,13 +402,30 @@ const onAdaptOneSceneRoles = async (item: any) => {
// 总角色不为空
// const adapt_role_restrict = `请理解这个故事:“${form.chatgpt_answer}”,针对其中的这个场景:“${item.场景描述}”,从所有角色:“${form.all_roles}”中选择本场景的角色,多个角色以逗号分隔。`;
const adapt_role_restrict = `整个故事(“${form.chatgpt_answer}),\n\n本章节(${item.场景描述}),\n\n角色列表(${form.all_roles}),\n\n请返回给本章节出现的角色。注意:不要发挥想象,必须从角色列表中选出本章节出现过的角色,如果多个用逗号隔开。`;
const item_roles = await text2videoService.submitLLM(adapt_role_restrict, tuili_keyword_llm.api);
const item_roles_answer = await text2videoService.submitLLM(adapt_role_restrict, tuili_keyword_llm.api);
console.log(`==============${item.编号}===============`)
// console.log(adapt_role_restrict)
console.log(`推理返回:${item_roles}`)
item.info = `推理返回:${item_roles}`
item.角色 = item_roles.trim();
item.info = `推理返回:${item_roles_answer}`
const item_roles_answer_list = item_roles_answer.trim().split(/[,,、]/);
// 过滤推理出来的角色,都要在总角色里
item.roles = ['无角色'];
for (const y of form.chatgpt_answer_roles) { item.roles.push(y.角色); }
item.角色 = '无角色';
let filter_result = '';
for (const x of item_roles_answer_list) {
for (const y of form.chatgpt_answer_roles) {
if (x == y.角色) {
filter_result += x+',';
// 下拉列表添加项目
// item.roles.push(x);
}
}
}
if (filter_result.endsWith(',')) {
filter_result = filter_result.slice(0, -1); // 去掉结尾的逗号
}
if (filter_result) {item.角色 = filter_result;}
////// 加一段逻辑,本镜角色有且只能有一个,且尽量不与之前相同。【begin】
const temp_arr = item.角色.split(/[,,、]/);
const temp_arr_length = temp_arr.length;
......@@ -436,7 +456,7 @@ const onAdaptOneSceneRoles = async (item: any) => {
if (remainingValues.length >= 1) {
item.角色 = remainingValues[remainingValues.length - 1];
} else {
item.角色 = item_roles.trim();
item.角色 = item_roles_answer.trim();
}
console.log(`lalalalala item.角色 = ${item.角色}`)
}
......@@ -485,6 +505,22 @@ const onAdaptOneSceneRoles = async (item: any) => {
}
};
const onItemRolesChange = (item: any) => {
console.log(item.编号, item.角色);
if (item.角色 == "无角色") {
item.角色关键词 = "";
item.角色关键词英文 = "";
} else {
for (const y of form.chatgpt_answer_roles) {
if (item.角色 == y.角色) {
item.角色关键词 = y.角色关键词;
item.角色关键词英文 = y.角色关键词英文;
break;
}
}
}
}
const onDraw = async () => {
if (!form.adapt_result_json || form.adapt_result_json.length == 0) {
......@@ -679,8 +715,8 @@ const onChangeScreen = (val: string) => {
form.final_video = default_data.vertical_data.final_video;
}
marketing_template.if_need_product_pic = 'true';
marketing_template.if_need_cover_pic = 'true';
// marketing_template.if_need_product_pic = 'true';
// marketing_template.if_need_cover_pic = 'true';
}
marketing_template.product_name = default_data.marketing_template.product_name;
......@@ -1154,7 +1190,14 @@ const onMarketingTemplateSubmitGpt = async () => {
</el-table-column>
<el-table-column prop="角色" label="角色">
<template v-slot="scope">
<el-text class="mx-1" size="small">{{ scope.row.角色 }}<br />{{ scope.row.info }}</el-text>
<el-text class="mx-1" size="small">{{ scope.row.info }}</el-text>
<hr style="border: none; border-top: 1px dashed #999; margin: 5px 0;">
<el-select v-model="scope.row.角色" placeholder="" @change="onItemRolesChange(scope.row)">
<el-option v-for="item in scope.row.roles" :key="item" :label="item" :value="item">
<span style="float: left">{{ item }}</span>
</el-option>
</el-select>
<!-- <el-text class="mx-1" size="small">{{ scope.row.角色 }}<br />{{ scope.row.info }}</el-text> -->
</template>
</el-table-column>
<el-table-column prop="角色关键词" label="角色关键词">
......
......@@ -180,6 +180,7 @@ const onAdapt = async () => {
"本镜配图": "src/assets/loading.gif",
"local_image_path": "",
"info": "",
"roles": [],
});
}
console.log(form.adapt_result_json)
......
......@@ -29,6 +29,7 @@ declare namespace Wm {
"本镜配图": string,
"local_image_path": string,
"info": string,
"roles": String[],
}
interface GenVideo {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment