东莞商贸公司寮步网站建设价格,响应式网站模板分享,安装百度到手机桌面,wordpress加密授权ChatGPT Stable Diffusion 百度AI MoviePy 实现文字生成视频#xff0c;小说转视频#xff0c;自媒体神器#xff01;(一)
前言
最近大模型频出#xff0c;但是对于我们普通人来说#xff0c;如何使用这些AI工具来辅助我们的工作呢#xff0c;或者参与进入我们的生活…ChatGPT Stable Diffusion 百度AI MoviePy 实现文字生成视频小说转视频自媒体神器(一)
前言
最近大模型频出但是对于我们普通人来说如何使用这些AI工具来辅助我们的工作呢或者参与进入我们的生活就着现在比较热门的几个AI写个一个提高生产力工具现在在逻辑上已经走通了后面会针对web页面、后台进行优化。 github链接 https://github.com/Anning01/TextCreateVideo B站教程视频 https://www.bilibili.com/video/BV18M4y1H7XN/ 那么从一个用户输入文本到生成视频我分成了五个步骤来做。 其中2、3 和 4 没有关系后期做成异步并行。 第一步、将用户输入的文本进行段落切割。 我这里默认用户输入的为txt文件也是建议一章一章来太大并不是不可以执行只是时间上耗费太多当然4080用户除外 from config import file_pathclass Main:def txt_handle(self, filepath):txt文件处理:return:file open(file_path filepath, r)content file.read().replace(\n, )return content.split(。)这里比较简单现在也没有做前端页面现在将文件放在指定的目录下会将txt文件按照中文“。”来切片。后期考虑有传整本的需求会加上数据库进行持久化按照章节区分按章节来生成视频。 第二步、使用chatGPT生成提示词 我ChatGPT的免费调用API次数没了最优选肯定是原生调用ChatGPT的api但是没有这个条件我选择了一些提供ChatGPT的API中间商 fastapi 和 API2D from SDK.ChatGPT.FastGPT.app import Main as FM
from SDK.ChatGPT.API2D.app import Main as AM
from config import apikey, appId, ForwardKeyclass Main:# 默认反向提升词negative NSFW,sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, bad anatomy,(long hair:1.4),DeepNegative,(fat:1.2),facing away, looking away,tilted head, {Multiple people}, lowres,bad anatomy,bad hands, text, error, missing fingers,extra digit, fewer digits, cropped, worstquality, low quality, normal quality,jpegartifacts,signature, watermark, username,blurry,bad feet,cropped,poorly drawn hands,poorly drawn face,mutation,deformed,worst quality,low quality,normal quality,jpeg artifacts,signature,watermark,extra fingers,fewer digits,extra limbs,extra arms,extra legs,malformed limbs,fused fingers,too many fingers,long neck,cross-eyed,mutated hands,polar lowres,bad body,bad proportions,gross proportions,text,error,missing fingers,missing arms,missing legs,extra digit, extra arms, extra leg, extra foot,# 默认提示词prompt best quality,masterpiece,illustration, an extremely delicate and beautiful,extremely detailed,CG,unity,8k wallpaper, def create_prompt_words(self, text_list: list):生成英文提示词:return: [{prompt, negative, text, index},...]# 包含着 坐标、英文提示词、英文反向提示词、中文文本 列表data []instance_class_list []if all([apikey, appId]):instance_class_list.append(FM())if ForwardKey:instance_class_list.append(AM())for index, value in enumerate(text_list):prompt instance_class_list[0].prompt_generation_chatgpt(value)if not prompt:if len(instance_class_list) 1:instance_class_list.pop(0)prompt instance_class_list[0].prompt_generation_chatgpt(value)if not prompt:print(------fastgpt和API2D都无法使用---------)raise Exception(请检查代码)else:print(------fastgpt和API2D都无法使用---------)raise Exception(请检查代码)print(f-----------生成第{index}段提示词-----------)data.append({index: index,text: value,prompt: self.prompt prompt,negative: self.negative,})return data我将两个api接口做成插件式的并且保证一个坏了可以去使用另一个 fastGPT
class Main:apikey apikeyappId appIdurl https://fastgpt.run/api/openapi/v1/chat/completionsdef prompt_generation_chatgpt(self, param):# 发送HTTP POST请求headers {Content-Type: application/json,User-Agent: Apifox/1.0.0 (https://www.apifox.cn),Authorization: fBearer {self.apikey}-{self.appId}}data {stream: False,# chatId: 3232,messages: [{content: 根据下面的内容描述生成一副画面并用英文单词表示 param,role: user}]}json_data json.dumps(data)# 发送HTTP POST请求response requests.post(self.url, datajson_data, headersheaders)result_json json.loads(response.text)if response.status_code ! 200:print(-----------FastAPI出错了-----------)return False# 输出结果return result_json[responseData][0][answer]API2D
import requests
from config import ForwardKeyclass Main:ForwardKey ForwardKeyurl https://openai.api2d.net/v1/chat/completionsdef prompt_generation_chatgpt(self, param):# 发送HTTP POST请求headers {Content-Type: application/json,Authorization: fBearer {ForwardKey}# -- 把 fkxxxxx 替换成你自己的 Forward Key注意前面的 Bearer 要保留并且和 Key 中间有一个空格。}data {model: gpt-3.5-turbo,messages: [{role: user, content: 根据下面的内容描述生成一副画面并用英文单词表示 param, }]}response requests.post(self.url, headersheaders, jsondata)print(-----------进入API2D-----------)if response.status_code ! 200:return False# 发送HTTP POST请求result_json response.json()# 输出结果return result_json[choices][0][message][content]