Lộ trình
Trong bài viết này, tôi sẽ chia sẻ trải nghiệm thử nghiệm công cụ Act-One mới của Runway ML. Tôi sẽ hướng dẫn bạn cách nó hoạt động, sử dụng cả giao diện web và API Python của họ. Tôi cũng sẽ thảo luận về kết quả tôi đạt được, vốn không ấn tượng như tôi kỳ vọng.
Nếu bạn tò mò về Act-One và muốn xem nó hoạt động như thế nào, hãy tiếp tục đọc!
Runway Act-One là gì?
Runway Act-One là một công cụ tạo chuyển động cho ảnh tĩnh của nhân vật bằng đầu vào là video. Hãy xem nó hoạt động ra sao:
Video này được tạo bằng cách sử dụng:
- Một video của diễn viên người thật; và
- Một ảnh tĩnh của nhân vật hoạt hình.
Runway Act-One sau đó sẽ tạo chuyển động cho nhân vật để phản chiếu các chuyển động và biểu cảm khuôn mặt của diễn viên.

Làm nhân vật chuyển động là một quy trình phức tạp mà chỉ những chuyên gia được đào tạo bài bản mới có thể làm từ con số 0. Act-One muốn thay đổi cuộc chơi bằng cách cho phép bất kỳ ai cũng có thể tạo chuyển động cho nhân vật chỉ bằng cách tự quay video và cung cấp một ảnh tĩnh của nhân vật muốn chuyển động.
Và nó không chỉ giới hạn ở nhân vật hoạt hình. Nó cũng hoạt động với nhân vật điện ảnh và chân thực. Và chúng ta cũng có thể tạo một đoạn hội thoại hấp dẫn bằng cách tạo nhiều video ngắn của các nhân vật nói qua lại rồi ghép chúng lại với nhau:
Tôi tự quay video để thử Runway Act-One
Hãy tự mình khám phá Runway Act-One. Mặc dù có gói miễn phí với 125 tín dụng và xếp hàng đợi, Act-One không nằm trong gói này và yêu cầu đăng ký trả phí.
Trước tiên, vào trang đăng nhập của Runway và đăng nhập hoặc tạo tài khoản. Tiếp theo, đăng ký một trong các gói hiện có. Lưu ý rằng ngay cả với gói trả phí, vẫn có giới hạn số lượng video có thể tạo. Tôi dùng gói 15 USD/tháng, được 625 tín dụng (cộng thêm 125 tín dụng miễn phí, tổng là 750 tín dụng).
Cách mở Runway Act-One
Để tạo video với Act-One, nhấn nút “Try it now” trên bảng điều khiển.

Giao diện Act-One tương đối dễ dùng. Trong hình dưới đây, bạn có thể thấy rằng:
- Ở trên cùng, ta chọn video dẫn động, là video dùng để điều khiển chuyển động.
- Ở dưới, ta chọn ảnh tham chiếu của nhân vật muốn tạo chuyển động.

Thử nghiệm Runway Act-One bằng cách tạo chuyển động từ chính tôi
Để thử, tôi tự quay cảnh mình làm biểu cảm ngạc nhiên và dùng ảnh tham chiếu nhân vật chú chó của họ.

Tôi thấy video kết quả chỉ ở mức tạm ổn. Biểu cảm khuôn mặt không rõ ràng lắm, nhưng vẫn khớp với tôi.
Tôi làm thêm vài thử nghiệm với cùng nhân vật, và Runway Act-One chưa khi nào khiến tôi ấn tượng. Có trường hợp thậm chí chẳng có biểu cảm nào. Ở ví dụ dưới đây, chú chó không hề cử động dù biểu cảm khuôn mặt của tôi khá rõ.

Tôi không phải diễn viên, nên có thể đó là vấn đề. Tuy nhiên, nếu mục tiêu của Act-One là giúp bất kỳ ai cũng có thể tạo chuyển động cho nhân vật, thì nó vẫn còn một chặng đường dài trước khi thực sự dễ dùng với người không có kinh nghiệm trong ngành.
Tôi cũng thấy không thể dùng ảnh nhân vật tùy chỉnh. Tôi tạo khoảng 10 nhân vật khác nhau bằng Dall-E 3, và Runway lần nào cũng không tìm thấy khuôn mặt. Ví dụ dưới đây:

Điều này cho tôi thấy các ví dụ được trưng bày có phần chọn lọc, và mô hình chưa sẵn sàng cho công chúng nói chung. Tuy vậy, tôi thử với nhân vật người thật thì lại hoạt động. Có thể là mô hình hiện chưa hỗ trợ nhân vật hoạt hình tùy chỉnh.
Đây là một ví dụ với nhân vật người thật:

Kết quả với khuôn mặt người thật tốt hơn nhiều, và tôi thấy đầu ra có độ trung thực cao hơn. Tuy nhiên, trường hợp sử dụng này kém tác động hơn vì chúng ta có thể để người thật diễn trực tiếp.
Lưu ý về giá
Độ dài video đầu ra sẽ khớp với video đầu vào, và tín dụng sẽ bị trừ tùy theo độ dài video.
Kết hợp Act-One với Runway Gen-3 Alpha
Đầu năm nay, vào tháng 6, Runway ML giới thiệu mô hình Gen-3 Alpha, tạo video dựa trên một ảnh tĩnh và một đoạn văn bản gợi ý.
Vì Act-One tập trung vào cận cảnh khuôn mặt, hai mô hình này bổ trợ cho nhau. Act-One có thể dùng để tạo các đoạn hội thoại, còn Gen-3 Alpha có thể tạo các cảnh chen giữa những đoạn hội thoại đó.
Tạo video với Gen-3 Alpha
Để chuyển sang Gen-3 Alpha, nhấn biểu tượng “T” ở bên trái (#1 trong hình dưới).

Đầu vào cho mô hình này là một ảnh (#2) và một prompt văn bản (#3). Runway gợi ý prompt văn bản theo định dạng sau:
[camera movement]: [establishing scene]. [additional details].
Ví dụ:
Low-angle static shot: The camera is angled up at a woman wearing all orange as she stands in a tropical rainforest with colorful flora. The dramatic sky is overcast and gray.
Tôi đã thử tạo chuyển động cho một bức ảnh tôi chụp gần đây. Đây là các đầu vào tôi dùng:

Và đây là kết quả:
Tôi khá thích kết quả. Ánh sáng trông ổn khi con thuyền rời xa mặt trời, và chuyển động của nước mượt mà.
Tuy nhiên, kết quả khác khá nhiều so với những gì tôi hình dung ban đầu. Đây chắc chắn là một trong những vấn đề chính với người làm video: không thể kiểm soát mọi chi tiết trong cảnh, điều vốn khả thi với các phương pháp làm phim truyền thống. Nếu hạn chế này tiếp diễn, các đạo diễn tương lai dùng AI có thể bị bó buộc vào những cảnh do AI tạo ra thay vì hiện thực hóa đúng tầm nhìn ban đầu của họ.
Kết hợp với cận cảnh từ Act-One
Trong trường hợp này, ta có thể sáng tạo bằng cách kết hợp ba đoạn video riêng biệt.
Thứ nhất, là video con thuyền di chuyển trên mặt nước. Đoạn này thiết lập bối cảnh và cung cấp ngữ cảnh cho các hành động tiếp theo.
Tiếp đó, có thể là một cảnh cận nhân vật đứng trên bờ, ánh mắt dõi theo con thuyền, thể hiện cảm giác khắc khoải.
Cuối cùng, là một video con thuyền rời xa bờ, nhìn từ góc nhìn của nhân vật. Đoạn thứ ba tạo cảm giác chuyển động và tiến triển.
Sử dụng API Runway ML với Python
Runway ML cũng cung cấp API để dùng các mô hình của họ ngoài giao diện web. Dù hỗ trợ Gen-3 Alpha Turbo, có vẻ Act-One vẫn chưa có mặt. Hướng dẫn này sẽ đề cập các bước cơ bản sử dụng API, những bước này sẽ giữ nguyên khi Act-One khả dụng.
Tạo khóa API
Để bắt đầu, chúng ta cần tạo tài khoản nhà phát triển và tạo khóa API.
Đi tới trang dành cho nhà phát triển và nhấn nút đăng nhập. Nếu bạn chưa có tài khoản, bạn có thể tạo tại đây.

Sau khi tạo tài khoản, đi tới trang “API Keys” và nhấn “New API key”:

Một cửa sổ bật lên sẽ yêu cầu tên khóa. Ta có thể để trống và nhấn “Create”.

Sau đó, khóa sẽ được hiển thị và ta có thể sao chép. Lưu ý vì lý do an toàn, đây là lần duy nhất khóa được hiển thị, nên hãy chắc chắn sao chép lại. Nếu vì lý do nào đó bị mất, ta luôn có thể xóa và tạo khóa mới.

Giá
API Runway ML không có gói miễn phí. Để thử nghiệm, chúng ta phải nạp tín dụng vào tài khoản. Mức giá giống hệt giao diện web: 0,25 USD cho video 5 giây và 0,50 USD cho video 10 giây.
Lưu ý rằng tín dụng API khác biệt với tín dụng của tài khoản đăng ký, vì vậy không thể dùng chéo giữa API và giao diện web.
Thiết lập
Runway ML cung cấp thư viện Python tên là runwayml mà chúng ta cần cài để tương tác với API. Để cài, dùng lệnh:
pip install runwayml
Để truy cập API, khóa API cần được đặt làm biến môi trường tên RUNWAYML_API_SECRET. Ta có thể làm như sau:
export RUNWAYML_API_SECRET=api_key
```Replacing api_key with the key created above.
Generating a videoRecently, I took this photo of the night sky:
Source: Instagram @fran.a.photo
I wanted to try out runwayml to see if it could generate a time-lapse video from the photo. To generate a video from an image using the API, we:
Import and initialize RunwayML client. Note that we don’t need to provide the API key as it is automatically loaded from the environment variable we set up before.Call the image_to_video.create() method from the client, providing the name of the model, the image URL, and the prompt.Store the task into a variable and print its identifier so that we can retrieve the video later. This is important as it seems that their API doesn’t have any way to list the past tasks. Without it, we’ll pay the generation credits but won’t have a way to get our video.```python
from runwayml import RunwayML
url = "https://i.ibb.co/LC7Kfrq/Z72-5415.jpg"
client = RunwayML()
task = client.image_to_video.create(
model="gen3a_turbo",
prompt_image=url,
prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
)
print(task.id)
Để xem kết quả, chúng ta cần chờ tác vụ hoàn tất. Ta có thể truy cập trạng thái tác vụ bằng task.status. Trạng thái sẽ bằng chuỗi ”SUCCEEDED” khi video đã được tạo thành công.
Ta có thể truy cập URL video bằng task.output. Lưu ý trường này là một danh sách các đầu ra. Mặc định, một video sẽ được tạo, nên URL video sẽ là task.output[0].
Dưới đây là đoạn script đơn giản in ra URL video dựa trên mã định danh tác vụ:
from runwayml import RunwayML
task_id = "af0a95ed-b0ff-4120-aecd-2473d7a42891"
client = RunwayML()
task = client.tasks.retrieve(id=task_id)
if task.status == "SUCCEEDED":
print(task.output[0])
else:
print(f"Video not ready, status={task.status}")
Đây là video chúng ta đã tạo từ bức ảnh:
Một lần nữa, tôi kỳ vọng kết quả sẽ khác. Tôi thích cách bầu trời xoay, mô phỏng tua nhanh thời gian ban đêm. Tuy nhiên, các vệt sao băng trông rất phi thực tế. Phần tiền cảnh cũng kém chân thực dần khi video tiếp diễn. Một chi tiết hay là phản chiếu trên mặt nước.
Tùy chọn nâng cao
Hãy điểm qua một vài tùy chọn khi tạo video với API. Để biết thêm chi tiết, xem trang tài liệu của Runway.
Runway ML hỗ trợ video có độ dài 5 hoặc 10 giây. Mặc định, nó tạo video 10 giây. Có thể đặt thông qua tham số duration, như sau:
task = client.image_to_video.create(
model="gen3a_turbo",
prompt_image=url,
prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
duration=5,
)
Mặc định, video có tỷ lệ khung hình 16:9. Ta cũng có thể đặt dọc bằng cách chỉ định tỷ lệ 9:16 qua tham số ratio:
task = client.image_to_video.create(
model="gen3a_turbo",
prompt_image=url,
prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
ratio=”9:16”,
)
Về mô hình, có vẻ tại thời điểm viết bài, mô hình duy nhất khả dụng trong API là gen3a_turbo.
Tải ảnh cục bộ
Trong ví dụ trên, ta dùng URL ảnh để chỉ định ảnh muốn dùng. Ta cũng có thể dùng tệp cục bộ trên máy bằng cách đọc nó thành data URI.
Dưới đây là hàm Python dùng các gói base64 và mimetypes để làm việc này. Cả hai gói đều có sẵn, không cần cài đặt.
def image_to_data_uri(image_path):
mime_type, _ = mimetypes.guess_type(image_path)
with open(image_path, "rb") as img_file:
img_data = img_file.read()
b64_encoded = base64.b64encode(img_data).decode("utf-8")
data_uri = f"data:{mime_type};base64,{b64_encoded}"
return data_uri
Đây là ví dụ cách tạo yêu cầu dùng hàm image_to_data_uri() để tải ảnh:
task = client.image_to_video.create(
model="gen3a_turbo",
prompt_image=image_to_data_uri("nightsky.jpg"),
prompt_text="Camera slowly zooms out: Astrophotography time-lapse featuring shooting stars.",
)
Kết luận
Trong bài viết này, chúng ta đã khám phá Act-One của Runway ML, một công cụ được thiết kế để đơn giản hóa việc tạo chuyển động cho nhân vật. Chúng ta đã tìm hiểu chức năng cơ bản, cách sử dụng qua giao diện web, và tích hợp với API Python. Chúng ta cũng tìm hiểu mô hình Gen-3 Alpha của Runway để tạo video từ ảnh tĩnh.
Như tôi đã đề cập, các thử nghiệm cá nhân với Act-One chưa đạt đến mức mượt mà như ví dụ của Runway ML. Kết quả thiếu sự sống động và biểu cảm như tôi kỳ vọng, cho thấy mô hình có thể vẫn đang phát triển hoặc cần đầu vào chuyên nghiệp hơn. Thêm vào đó, việc không thể dùng nhân vật hoạt hình tùy chỉnh là một hạn chế lớn.
Dù còn hạn chế, Act-One và Gen-3 Alpha của Runway ML cho thấy tiềm năng thú vị của AI trong tạo video và hoạt hình. Nếu bạn muốn đọc thêm về tạo video bằng AI, tôi gợi ý các bài viết sau:
