Video Modelsrunway

معرفی و مستندات مدل هوش مصنوعی act_two

مستندات مدل تولید ویدیو از روی ویدیو و تصویر act_two، ارائه شده توسط ای آی کار (AI-KAR)

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

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

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

مدل act_two یک مدل هوش مصنوعی تولید ویدیو به ویدیو است که به شما امکان می‌دهد شخصیت‌ها را با استفاده از ویدیوهای مرجع متحرک کنید. به سادگی یک ویدیو از شخصی که در حال ایفای نقش یک صحنه است را به همراه یک مرجع شخصیت (تصویر یا ویدیو) ارائه دهید، و Act-Two عملکرد را به شخصیت شما منتقل می‌کند - از جمله حرکت طبیعی، گفتار و حالات چهره. این مدل با بهره‌گیری از تکنیک‌های پیشرفته یادگیری عمیق، قادر است حرکات و احساسات موجود در ویدیوی مرجع را به طور دقیق به شخصیت مورد نظر شما منتقل کند. این فرآیند شامل تحلیل دقیق حرکات بدن، حالات چهره و گفتار در ویدیوی مرجع و سپس بازسازی این عناصر بر روی شخصیت جدید است.

یکی از ویژگی‌های برجسته این مدل، توانایی آن در حفظ اصالت و ویژگی‌های منحصر به فرد شخصیت اصلی است. به عبارت دیگر، در حالی که حرکات و احساسات از ویدیوی مرجع گرفته می‌شوند، ظاهر و هویت شخصیت اصلی حفظ می‌شود. این امر باعث می‌شود که ویدیوهای تولید شده با استفاده از این مدل، بسیار طبیعی و واقعی به نظر برسند.

کاربردهای این مدل بسیار گسترده و متنوع هستند. از جمله می‌توان به تولید انیمیشن‌های سفارشی، ساخت ویدیوهای آموزشی، ایجاد محتوای تبلیغاتی و حتی تولید فیلم‌های کوتاه اشاره کرد. با استفاده از این مدل، هنرمندان و سازندگان محتوا می‌توانند به سرعت و به آسانی شخصیت‌های خود را به حرکت درآورند و داستان‌های خود را به شکلی جذاب و دیدنی روایت کنند.

برای استفاده از این مدل، ابتدا باید یک حساب کاربری در وب‌سایت AI-KAR ایجاد کنید و یک کلید API دریافت کنید. سپس، می‌توانید با استفاده از کلید API و پارامترهای مورد نیاز، درخواست تولید ویدیو را به سرور ارسال کنید. پارامترهای اصلی شامل URL تصویر یا ویدیوی شخصیت و URL ویدیوی مرجع هستند. همچنین، پارامترهای اختیاری دیگری نیز وجود دارند که به شما امکان می‌دهند رفتار مدل را تنظیم کنید، مانند شدت بیان، اندازه فریم و کنترل بدن.

پس از ارسال درخواست، مدل شروع به پردازش ویدیو می‌کند و پس از اتمام، یک URL برای دانلود ویدیوی تولید شده در اختیار شما قرار می‌دهد. زمان پردازش ویدیو بستگی به عوامل مختلفی دارد، اما معمولاً برای درخواست‌های ساده، کمتر از یک دقیقه طول می‌کشد.

در نهایت، مدل act_two یک ابزار قدرتمند و کارآمد برای تولید ویدیوهای متحرک با کیفیت بالا است. با استفاده از این مدل، می‌توانید به سرعت و به آسانی شخصیت‌های خود را به حرکت درآورید و داستان‌های خود را به شکلی جذاب و دیدنی روایت کنید. این مدل به ویژه برای هنرمندان، سازندگان محتوا و شرکت‌های تبلیغاتی که به دنبال تولید محتوای ویدیویی با کیفیت بالا هستند، بسیار مفید است.

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

پارامترنوعتوضیحات و مقادیر
model
stringRequired
نام مدل. مقدار ثابت runway/act_two را باید قرار دهید.
مقادیر مجاز (کلیک برای کپی):
character
objectRequired
شخصیتی که باید کنترل شود. می‌توانید یک ویدیو یا یک تصویر ارائه دهید. یک چهره قابل تشخیص بصری باید قابل مشاهده باشد و در داخل فریم بماند.
reference
objectRequired
ارائه یک مرجع ویدئویی به مدل اجازه می‌دهد تا سبک یا محتوای مرجع را در خروجی شبیه‌سازی کند.
frame_size
string
عرض و ارتفاع ویدیو.
مقادیر مجاز (کلیک برای کپی):
body_control
boolean
یک مقدار بولی که نشان می‌دهد آیا کنترل بدن فعال شود یا خیر. هنگامی که فعال باشد، حرکات و ژست‌های غیر صورتی علاوه بر حالات چهره به شخصیت اعمال می‌شوند.
expression_intensity
integer
یک عدد صحیح بین 1 و 5 (شامل). مقدار بزرگتر شدت بیان شخصیت را افزایش می‌دهد.
seed
integer
تغییر عدد صحیح seed راهی برای به دست آوردن نتایج مختلف برای پارامترهای درخواست یکسان است. استفاده از مقدار یکسان برای یک درخواست یکسان نتایج مشابهی را تولید می‌کند. اگر مشخص نشده باشد، یک عدد تصادفی انتخاب می‌شود.

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

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

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

import requests
import time

# replace <YOUR_AI-KARAPI_KEY> with your actual ای آی کار (AI-KAR) key
api_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/runway/generation"
    headers = {
        "Authorization": f"Bearer {api_key}",
    }
    data = {
        "model": "runway/act_two",
        "character":
        {
            "type":"image",
            "url":"https://s2-111386.kwimgs.com/bs2/mmu-aiplatform-temp/kling/20240620/1.jpeg"
        },
        "reference":
        {
            "type":"video",
            "url": "https://zovi0.github.io/public_misc/kling-video-v1.6-pro-text-to-video-dancing-woman-output.mp4"
        },
        "frame_size":"1280:720",
        "body_control":True,
        "expression_intensity":3
    }
    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()
        print(response_data)
        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/runway/generation"
    params = {
        "generation_id": gen_id,
    }
    headers = {
        "Authorization": f"Bearer {api_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 = 1800
        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
    }
  }
}