Spaces:
Runtime error
Runtime error
File size: 2,850 Bytes
2242171 3e2f324 2242171 3e2f324 2242171 3e2f324 b110be1 b080a94 19599cb 3e2f324 2242171 c55bf8f 3e2f324 2242171 3e2f324 2242171 3e2f324 2242171 3e2f324 2242171 3e2f324 2242171 3e2f324 2242171 ec24a25 2242171 1fe1ea5 2242171 1fe1ea5 bcbe59e 2242171 1fe1ea5 2242171 1fe1ea5 b080a94 3e2f324 2242171 3e2f324 f9dc237 96b10cf f9dc237 2242171 f9dc237 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
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()
|