Video Modelsalibaba-cloud

معرفی و مستندات مدل هوش مصنوعی wan-2.1-plus-text-to-video

مستندات مدل تولید ویدیو از متن wan-2.1-plus-text-to-video از alibaba-cloud، ارائه شده توسط ای آی کار (AI-KAR).

معرفی و بررسی فنی

⚡ وضعیت پشتیبانی از زبان فارسی

این مدل از زبان فارسی به صورت متوسط پشتیبانی می‌کند. درک مفاهیم پیچیده و ظریف فارسی ممکن است با چالش مواجه شود.

مدل wan-2.1-plus-text-to-video یک مدل تبدیل متن به ویدیو (T2V) است که توسط Alibaba Cloud توسعه داده شده است. این مدل قادر است ویدیوهای صامت با کیفیت 720p و نرخ فریم تقریبی 30 فریم بر ثانیه تولید کند. این مدل با دریافت یک توضیح متنی، صحنه، موضوع یا عملی را که باید در ویدیو تولید شود، درک کرده و ویدیویی مطابق با آن تولید می‌کند. کاربران می‌توانند با استفاده از این مدل، ایده‌ها و تصورات خود را به ویدیوهای کوتاه تبدیل کنند. این مدل می‌تواند در زمینه‌های مختلفی مانند تولید محتوای تبلیغاتی، آموزشی، هنری و سرگرمی مورد استفاده قرار گیرد. به عنوان مثال، می‌توان از آن برای ساخت ویدیوهای کوتاه تبلیغاتی برای محصولات، ویدیوهای آموزشی برای توضیح مفاهیم پیچیده، ویدیوهای هنری برای بیان ایده‌های خلاقانه و ویدیوهای سرگرم‌کننده برای شبکه‌های اجتماعی استفاده کرد. یکی از ویژگی‌های مهم این مدل، امکان تعیین جنبه‌های مختلف ویدیو مانند رزولوشن و نسبت تصویر است. کاربران می‌توانند رزولوشن ویدیو را بر اساس نیاز خود تنظیم کنند. همچنین، امکان تعیین نسبت تصویر ویدیو نیز وجود دارد که به کاربران اجازه می‌دهد ویدیوهایی با نسبت‌های مختلف مانند 16:9، 9:16، 1:1، 4:3 و 3:4 تولید کنند. علاوه بر این، کاربران می‌توانند با استفاده از پارامتر `negative_prompt`، عناصری را که می‌خواهند در ویدیو از آن‌ها اجتناب شود، مشخص کنند. این ویژگی به کاربران کمک می‌کند تا کنترل بیشتری بر روی محتوای تولید شده داشته باشند و ویدیوهایی دقیق‌تر و مطابق با نیاز خود تولید کنند. همچنین، پارامتر `seed` به کاربران امکان می‌دهد تا با تغییر مقدار آن، نتایج متفاوتی برای یک درخواست یکسان دریافت کنند. استفاده از یک مقدار یکسان برای یک درخواست یکسان، نتایج مشابهی را تولید می‌کند. اگر این پارامتر مشخص نشود، یک عدد تصادفی انتخاب می‌شود. پارامتر `enable_prompt_expansion` نیز به کاربران امکان می‌دهد تا با فعال کردن آن، از گسترش متن ورودی استفاده کنند. این ویژگی به مدل کمک می‌کند تا متن ورودی را بهتر درک کند و ویدیوهایی با کیفیت‌تر تولید کند. این مدل از طریق API قابل دسترسی است و کاربران می‌توانند با استفاده از کلید API خود، به آن دسترسی پیدا کنند. برای استفاده از این مدل، ابتدا باید یک کلید API دریافت کنید. سپس، می‌توانید با ارسال درخواست‌های HTTP به API، ویدیوهای مورد نظر خود را تولید کنید.

مشخصات فنی (API References)

پارامترنوعتوضیحات و مقادیر
model
stringRequired
مدلی که برای تولید ویدیو استفاده می‌شود.
مقادیر مجاز (کلیک برای کپی):
prompt
stringRequired
توضیح متنی صحنه، موضوع یا عملی که باید در ویدیو تولید شود.
resolution
string
یک شمارش که در آن ضلع کوتاه فریم ویدیو، رزولوشن را تعیین می‌کند. مقدار پیش‌فرض 720P است.
مقادیر مجاز (کلیک برای کپی):
aspect_ratio
string
نسبت تصویر ویدیوی تولید شده. مقدار پیش‌فرض 16:9 است.
مقادیر مجاز (کلیک برای کپی):
negative_prompt
string
توضیح عناصری که باید در ویدیوی تولید شده از آن‌ها اجتناب شود.
watermark
boolean
مشخص می‌کند که آیا ویدیو حاوی واترمارک باشد یا خیر. مقدار پیش‌فرض false است.
seed
integer
تغییر عدد seed راهی برای دریافت نتایج مختلف برای سایر پارامترهای درخواست یکسان است. استفاده از مقدار یکسان برای یک درخواست یکسان، نتایج مشابهی را تولید می‌کند. اگر مشخص نشود، یک عدد تصادفی انتخاب می‌شود.
enable_prompt_expansion
boolean
مشخص می‌کند که آیا گسترش متن ورودی فعال شود یا خیر. مقدار پیش‌فرض true است.

نمونه کدهای درخواست

نکته مهم برای توسعه‌دهندگان:

برای احراز هویت، حتما کلید API خود را جایگزین YOUR_API_KEY کنید. هدر Authorization الزامی است.

import requests
import time

# Insert your AI-KAR API Key instead of <YOUR_AI-KARAPI_KEY>:
AI-KARapi_key = "<YOUR_AI-KARAPI_KEY>"
base_url = "https://api.ai-kar.com/v1"

# Creating and sending a video generation task to the server
def generate_video():
    url = f"{base_url}/generate/video/alibaba/generation"
    headers = {
        "Authorization": f"Bearer {AI-KARapi_key}",
    }
    data = {
        "model": "alibaba/wan2.1-t2v-plus",
        "prompt": '''
A menacing evil dragon appears in a distance above the tallest mountain, then rushes toward the camera with its jaws open, revealing massive fangs. We see it's coming.
'''
    }
    response = requests.post(url, json=data, headers=headers)
    if response.status_code >= 400:
        print(f"Error: {response.status_code} - {response.text}")
    else:
        response_data = response.json()
        return response_data

# Requesting the result of the task from the server using the generation_id
def get_video(gen_id):
    url = f"{base_url}/generate/video/alibaba/generation"
    params = {
        "generation_id": gen_id,
    }
    headers = {
        "Authorization": f"Bearer {AI-KARapi_key}",
        "Content-Type": "application/json"
    }
    response = requests.get(url, params=params, headers=headers)
    return response.json()

def main():
    # Running video generation and getting a task id
    gen_response = generate_video()
    gen_id = gen_response.get("id")
    print("Generation ID:  ", gen_id)

    # Trying to retrieve the video from the server every 10 sec
    if gen_id:
        start_time = time.time()
        timeout = 1000
        while time.time() - start_time < timeout:
            response_data = get_video(gen_id)
            if response_data is None:
                print("Error: No response from API")
                break
            status = response_data.get("status")
            print("Status:", status)
            if status == "waiting" or status == "active" or  status == "queued" or status == "generating":
                print("Still waiting... Checking again in 10 seconds.")
                time.sleep(10)
            else:
                print("Processing complete:/n", response_data)
                return response_data
        print("Timeout reached. Stopping.")
        return None

if __name__ == "__main__":
    main()

نمونه پاسخ موفق (JSON)

RESPONSE (200 OK)
{
  "id": "60ac7c34-3224-4b14-8e7d-0aa0db708325",
  "status": "completed",
  "video": {
    "url": "#",
    "duration": 8
  },
  "duration": 8,
  "error": null,
  "meta": {
    "usage": {
      "tokens_used": 120000
    }
  }
}