chatgpt + Stabile Diffusion + Baidu AI + MoviePy realisieren Textgenerierungsvideo, Roman zu Video, Self-Media-Artefakt! (eins)
Vorwort
In letzter Zeit sind häufig groß angelegte Modelle aufgetaucht, aber für uns normale Menschen, wie wir diese KI-Tools nutzen können, um unsere Arbeit zu unterstützen oder an unserem Leben teilzunehmen, schreiben wir jetzt ein produktivitätssteigerndes Tool für einige der populäreren KIs. Jetzt ist es soweit wurde logischerweise gelöscht und wird später für Webseiten und Hintergrund optimiert.
Github-Link https://github.com/Anning01/TextCreateVideo
Von der Texteingabe durch den Benutzer bis zur Erstellung eines Videos habe ich alles in fünf Schritte unterteilt.
Unter diesen sind 2, 3 und 4 irrelevant und werden in der späteren Phase asynchron und parallel sein.
Der erste Schritt besteht darin, den vom Benutzer eingegebenen Text in Absätze zu segmentieren.
Hier ist die Standardbenutzereingabe eine TXT-Datei, und es wird empfohlen, jedes Kapitel einzeln zu befolgen. Zu groß bedeutet nicht, dass es nicht ausgeführt werden kann, aber es dauert zu lange, außer natürlich bei 4080 Benutzern!
from config import file_path
class Main:
def txt_handle(self, filepath):
"""
txt文件处理
:return:
"""
file = open(file_path + filepath, 'r')
content = file.read().replace('\n', '')
return content.split('。')
Hier ist es relativ einfach und es gibt jetzt keine Front-End-Seite. Legen Sie nun die Datei in das angegebene Verzeichnis ab, und die TXT-Datei wird entsprechend dem chinesischen „.“ in Scheiben geschnitten. In einer späteren Phase wird angesichts der Notwendigkeit, das gesamte Buch zu übertragen, eine Datenbank zur Persistenz hinzugefügt und Videos nach Kapiteln generiert.
Im zweiten Schritt verwenden Sie chatGPT, um Aufforderungswörter zu generieren
Die kostenlosen Aufrufe meines ChatGPT an die API sind weg. Die beste Wahl ist definitiv, die API des ChatGPT nativ aufzurufen, aber ohne diese Bedingung habe ich einige API-Vermittler ausgewählt, die ChatGPT bereitstellen Fastapi und API2D
from SDK.ChatGPT.FastGPT.app import Main as FM
from SDK.ChatGPT.API2D.app import Main as AM
from config import apikey, appId, ForwardKey
class 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
Ich mache die beiden API-Schnittstellen-Plug-Ins und garantiere, dass eine verwendet werden kann, wenn eine kaputt ist
fastGPT
class Main:
apikey = apikey
appId = appId
url = "https://fastgpt.run/api/openapi/v1/chat/completions"
def prompt_generation_chatgpt(self, param):
headers = {
'Content-Type': 'application/json',
'User-Agent': 'Apifox/1.0.0 (https://www.apifox.cn)',
'Authorization': f'Bearer {self.apikey}-{self.appId}'
}
data = {
"stream": False,
"messages": [
{
"content": '根据下面的内容描述,生成一副画面并用英文单词表示:' + param,
"role": "user"
}
]
}
json_data = json.dumps(data)
response = requests.post(self.url, data=json_data, headers=headers)
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 ForwardKey
class Main:
ForwardKey = ForwardKey
url = "https://openai.api2d.net/v1/chat/completions"
def prompt_generation_chatgpt(self, param):
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {ForwardKey}'
}
data = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": '根据下面的内容描述,生成一副画面并用英文单词表示:' + param, }]
}
response = requests.post(self.url, headers=headers, json=data)
print("-----------进入API2D-----------")
if response.status_code != 200:
return False
result_json = response.json()
return result_json["choices"][0]["message"]["content"]