Spaces:
Runtime error
Runtime error
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. | |
from langchain_community.llms import HuggingFacePipeline # ์์ ๋ ์ํฌํธ | |
import torch | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline | |
# ๋๋จธ์ง ์ปดํฌ๋ํธ ์ํฌํธ (์ฝ๋์ ๋ฐ๋ผ ๋ค๋ฆ) | |
from components import caption_chain, tag_chain | |
from components import pexels, utils | |
import os, gc | |
import gradio as gr | |
# ๋ชจ๋ธ๊ณผ ํ ํฌ๋์ด์ ๋ก๋ | |
model = AutoModelForSeq2SeqLM.from_pretrained("declare-lab/flan-alpaca-large") | |
tokenizer = AutoTokenizer.from_pretrained("declare-lab/flan-alpaca-large") | |
# ํ์ดํ๋ผ์ธ ์ค์ | |
pipe = pipeline( | |
'text2text-generation', | |
model=model, | |
tokenizer=tokenizer, | |
max_length=120 | |
) | |
# HuggingFacePipeline์ ์ฌ์ฉํ์ฌ LLM ์ด๊ธฐํ | |
local_llm = HuggingFacePipeline(pipeline=pipe) | |
# ์ฒด์ธ ๊ตฌ์ฑ | |
llm_chain = caption_chain.chain(llm=local_llm) | |
sum_llm_chain = tag_chain.chain(llm=local_llm) | |
# Pexels API ํค | |
pexels_api_key = os.getenv('pexels_api_key') | |
# ์์ธก ํจ์ | |
def pred(product_name, orientation): | |
# ๋น๋์ค ๋ฐฉํฅ๊ณผ ํด์๋ ์ค์ | |
if orientation == "Shorts/Reels/TikTok (1080 x 1920)": | |
orientation = "portrait" # ์คํ ์์ | |
height = 1920 | |
width = 1080 | |
elif orientation == "Youtube Videos (1920 x 1080)": | |
orientation = "landscape" | |
height = 1080 | |
width = 1920 | |
else: | |
orientation = "square" | |
height = 1080 | |
width = 1080 | |
# ๋น๋์ค ์์ฑ ๋ฐ ๋ฌธ์ฅ ์ถ์ถ | |
folder_name, sentences = pexels.generate_videos(product_name, pexels_api_key, orientation, height, width, llm_chain, sum_llm_chain) | |
gc.collect() | |
# ๋น๋์ค ํ์ผ์ด ์ค์ ๋ก ์์ฑ๋์๋์ง ํ์ธ | |
if not sentences: | |
return ["No videos generated. Please try again.", ""] | |
# ๋น๋์ค ํ์ผ ๊ฒฐํฉ | |
video_path = utils.combine_videos(folder_name) | |
if not os.path.exists(video_path): | |
return ["Failed to combine videos.", ""] | |
return ["\n".join(sentences), video_path] | |
# Gradio ์ธํฐํ์ด์ค ์ค์ ๋ฐ ๋ฐ์นญ | |
with gr.Blocks() as demo: | |
gr.Markdown( | |
""" | |
# Ads Generator | |
Create video ads based on your product name using AI | |
### Note: the video generation takes about 2-4 minutes | |
""" | |
) | |
dimension = gr.Dropdown( | |
["Shorts/Reels/TikTok (1080 x 1920)", "Facebook/Youtube Videos (1920 x 1080)", "Square (1080 x 1080)"], | |
label="Video Dimension", info="Choose dimension" | |
) | |
product_name = gr.Textbox(label="Product name") | |
captions = gr.Label(label="Captions") | |
video = gr.Video() | |
btn = gr.Button("Submit") | |
btn.click(pred, inputs=[product_name, dimension], outputs=[captions, video]) | |
# ์ฌ๊ธฐ์ ์ถ๊ฐ์ ์ธ Gradio ์ธํฐํ์ด์ค ๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. | |
# Gradio ์ฑ ์คํ | |
demo.launch() | |