AI 캐릭터 스왑은 영상 속 인물을 다른 캐릭터로 바꾸면서 타이밍, 카메라, 동작은 그대로 두는 방식입니다. MiniMax H3 Character Swap은 요청 한 번으로 끝납니다. 짧은 영상, 새 캐릭터 이미지 한 장, 누구를 바꿀지 알려 주는 몇 마디를 보내면 그 캐릭터가 원래 테이크를 연기하는 새 클립이 돌아옵니다. 감지 단계도, 마스크를 그리는 작업도 없습니다. 영상과 이미지에 등장하는 실존 인물 모두의 허락이 필요합니다(아래 「동의와 초상」 참고). 여기 쓰인 예시는 평범한 장면이며, 이 가이드는 성인 콘텐츠를 다루지 않습니다.
얼굴만 바꾸는 페이스 스왑과는 다릅니다. 페이스 스왑은 원래 사람의 몸, 머리, 옷을 그대로 두고 얼굴만 바꿉니다. 캐릭터 스왑은 얼굴, 머리, 옷차림, 체형까지 모두 이미지 속 캐릭터로 바꾸고, 움직임만 클립에서 가져옵니다.
입력과 출력
| 입력 | 넣을 것 |
|---|---|
| 영상 | MP4, 90MB 이하, 처음 15초만 사용됩니다. 끊김 없는 한 샷으로 준비하세요. 모델 페이지에 따르면 컷이 없는 테이크가 가장 잘 됩니다. |
| 이미지 | 새 캐릭터 한 장. 사진, 3D 렌더, 그림 모두 가능. JPEG, PNG, WebP, GIF, 10MB 이하. 단색 배경의 전신 이미지가 가장 좋습니다. |
| 프롬프트 | 누구를 바꿀지 가리키는 명사구만 적습니다. 예: "왼쪽의 여성", "흰 셔츠의 남자"(영어로 입력). 플랫폼이 모델이 학습한 지시문으로 감싸서 보내므로 "X를 Y로 바꿔"라고 직접 쓰지 마세요. 비워 두면 주인공이 대상입니다. |
| 길이, 화면비, 해상도 | 길이와 화면비는 클립에 맞춥니다. 해상도는 480p, 540p, 768p, 1080p, 출력은 3~15초입니다. 모델 페이지에는 출력에 소리가 있다고 적혀 있지만, 아래 클립들의 소리는 확인하지 않았습니다. |
먼저 480p로 시험해 보세요. 가장 저렴한 단계라서 1080p에 비용을 쓰기 전에 교체가 잘 되는지 확인할 수 있습니다.
다시 실행해 볼 수 있는 예시
여기 나오는 클립은 모두 AI로 생성했고 등장인물은 가상의 성인입니다. 모두 모델 페이지에 있는 예시이며 입력 파일, 프롬프트, 시드도 거기 있습니다. 소개하는 실행은 768p로 만들었습니다. 아래 코드는 저렴하게 시험하도록 480p를 쓰므로, 480p로 다시 돌리면 결과가 다소 다르게 보일 것입니다.
댄스 스튜디오 솔로("Studio mirror dancer swap", 시드 7). 원본은 텅 빈 스튜디오에서 검은 홀터넥 점프수트의 여성이 팔을 들고, 한 바퀴 돌고, 카메라에 미소 짓는 영상입니다. 참조는 리넨 셔츠를 입은 수염 난 남자, 프롬프트는 "the woman in the black halter jumpsuit"입니다.

들어 올린 팔과 미소가 결과에 담겼습니다. 첫 시드(41)는 배경에 여분의 댄서들이 나타났고, 시드 7은 원본처럼 스튜디오를 비워 두었습니다. 사람이 늘어나면 다른 시드를 써 보세요.
케이블카("Funicular scarlet jumpsuit swap", 시드 12). 원본은 검은 머리에 머스터드색 트렌치코트를 입은 여성이 창가에서 돌아서 머리를 귀 뒤로 넘기며 웃는 영상입니다. 참조는 짧은 백금색 머리에 스칼렛 오프숄더 점프수트를 입은 여성의 전신 스튜디오 사진, 프롬프트는 "the woman in the mustard trench coat"입니다.

얼굴, 머리, 붉은 점프수트는 사진에서 가져왔고, 머리를 넘기는 동작과 웃음은 클립에서 원본과 같은 구간에 나옵니다. 같은 참조 이미지가 스튜디오 클립에서는 통하지 않았습니다. 아래 「직접 겪은 한계」를 보세요.
이발소, 그림과 3D 참조 두 가지(시드 42, 프롬프트 "the man in the white shirt"). 두 예시는 같은 원본 클립을 씁니다. 흰 셔츠의 남자가 일어나 거울로 머리를 확인하고 걸어 나가는 영상입니다.
첫 번째 참조는 갈색 비행 재킷과 녹색 카고 바지를 입은 붉은 머리 여성을 그린 만화 일러스트입니다. 결과("Barbershop comic heroine swap")는 같은 붉은 머리, 재킷, 바지의 실사 여성이며, 포스터 프레임에서는 원본의 남자처럼 거울 앞에서 한 손을 머리로 올리고 있습니다.


두 번째 참조는 회색 머리와 수염의 3D 애니메이션 남자 렌더로, 남색 피코트에 크림색 니트, 갈색 구두 차림입니다("Barbershop 3D character swap"). 결과는 회색 머리, 짧은 수염, 남색 코트의 실사 남자이고, 포스터 프레임에서 거울 앞에서 한 손을 머리로 올리는 같은 동작이 보입니다. 선화와 렌더 음영은 이어지지 않고, 머리, 색감, 옷차림은 이어집니다.


어댑터가 정말 중요할까
저희 테스트에서는 그랬습니다. 같은 입력으로 캐릭터 스왑 어댑터 없이 돌리면 원래 남자가 행인으로 배경에 다시 나타났고, 소파의 두 사람 장면에서는 후반부에 동작이 사라졌습니다. 어댑터가 있으면 지정한 사람만 바뀌었고 동작은 원본을 따랐습니다. 모델 페이지는 항상 어댑터와 함께 실행하므로 조정할 것이 없습니다. 두 사람을 바꾸려면 클립을 두 번 실행하며 매번 다른 사람을 지정하세요.
코드로 호출하기
파일 두 개를 업로드한 뒤 태스크 하나를 실행합니다. Python SDK(pip install spicyapi)를 설치하고 SPICY_API_KEY를 설정하세요.
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
clip = client.upload_file("./studio-solo.mp4")
character = client.upload_file("./character-full-body.jpg")
task = client.create_task(
model="minimax/h3-character-swap/video-edit",
input_data={
"video_url": clip["uri"],
"image_url": character["uri"],
"prompt": "the woman in the black halter jumpsuit",
"duration_seconds": 5,
"aspect_ratio": "16:9",
"resolution": "480p",
"seed": 7,
},
idempotency_key=str(uuid.uuid4()), # new key per new request
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"{task['taskId']} ended as {final['state']}")
print(output_assets(final)[0]["url"]) # copy the video to your own storage now업로드, 대기, 오류, 재시도는 태스크 가이드와 Python SDK 레퍼런스에 정리되어 있습니다. 결과는 제한된 기간만 보관되므로 반환된 링크에 의존하기 전에 미디어 보관과 전달을 확인하세요. Playground에서는 같은 입력이 폼으로 제공됩니다. 영상과 이미지를 올리고, 누구를 바꿀지 입력한 뒤 실행하면 됩니다.
비용
요금은 세 부분입니다. 출력 초와 원본 영상 초(시작한 초는 올림, 최대 15초)에 해상도별 단가를 곱하고, 여기에 캐릭터 이미지 몫으로 요청당 $0.02가 더해집니다.
| 해상도 | 초당 |
|---|---|
| 480p | $0.06 |
| 540p | $0.09 |
| 768p | $0.135 |
| 1080p | $0.27 |
480p에서 5초 원본으로 5초를 출력하면 10초 × $0.06 + $0.02 = $0.62, 768p에서는 10 × $0.135 + $0.02 = $1.37입니다. 출력은 최소 3초이므로 가장 저렴한 테스트는 480p에서 3초 클립으로 3초를 출력하는 경우로, 6 × $0.06 + $0.02 = $0.38입니다. 실행 전에 모델 페이지의 실시간 견적에서 합계를 볼 수 있습니다.
직접 겪은 한계
- 검은 점프수트에 스칼렛 점프수트. 스튜디오 클립(검은 홀터넥 점프수트의 여성)에 위의 스칼렛 점프수트 사진을 넣어 시드 7과 99로 실행했습니다. 두 번 모두 원본 옷이 남았고, 피부색은 참조보다 밝게 나왔으며, 얼굴도 사진에서 벗어났습니다. 같은 사진을 케이블카 클립(트렌치코트, 시드 12)에 넣으면 첫 실행부터 잘 나왔습니다. 원인은 따로 가려내지 못했습니다. 두 클립의 차이는 스튜디오의 여성이 참조와 같은 원피스형 옷을 이미 입고 있었다는 점이므로, 옷이 바뀌지 않으면 다른 종류의 옷을 입은 인물이 나오는 원본 클립이나 다른 시드를 써 보세요.
- 불필요한 인물. 스튜디오 실행 한 번(시드 41)에서 원본에 없던 배경 댄서가 추가되었습니다. 다른 시드로 다시 실행하세요.
- 요청당 캐릭터 한 명이며, 원본은 처음 15초만 사용됩니다. 출력은 요청한 길이의 새 클립이지 원본 파일의 한 사람만 덧칠한 것이 아니므로 배경의 사소한 부분이 달라질 수 있습니다. 공개 전에 항상 얼굴을 참조 이미지와 대조하세요.
동의와 초상
본인, 서명된 출연 동의를 받은 연기자, 직접 생성한 가상 인물처럼 처리할 권한이 있는 영상과 초상에만 사용하세요. 실존 인물을 본인의 명시적이고 충분한 설명에 기반한 동의 없이 사적이거나 명예를 훼손하는 영상에 넣거나, 누군가를 사칭하거나, 미성년자가 나오는 영상에 사용해서는 안 됩니다. 사진이 공개되어 있다는 것은 동의가 아니며, 동의는 다른 프로젝트로 이전되지 않습니다.
어떤 도구를 쓸까
- 한 사람, 이미지 한 장, 빠른 교체, 또는 그려진 캐릭터: 위에서 설명한 MiniMax H3 Character Swap.
- 여러 사람, 또는 같은 캐릭터의 사진 최대 3장: Video Character Swap은 먼저 클립을 분석하고 번호로 대상을 고르며 5~30초 클립을 받습니다. 레퍼런스 워크플로 가이드에서 과정을 볼 수 있습니다.
- 얼굴만 바꾸면 되는 경우: 페이스 스왑 워크플로를 쓰세요. 페이스 스왑 API 가이드에서 설명합니다.
FAQ
무료로 써 볼 수 있나요? 이 모델에는 무료 구간이 없습니다. 가장 저렴한 테스트는 480p 3초 클립이며, 위에서 계산한 대로 $0.38입니다.
영상은 몇 초까지 되나요? 원본은 처음 15초가 사용되고 출력은 3~15초입니다. 길이를 클립에 맞추세요.
여러 사람을 바꿀 수 있나요? 요청당 캐릭터 한 명입니다. 클립을 다시 실행해 다른 사람을 지정하거나, Video Character Swap에서 한 번의 분석으로 여러 대상을 고르세요.
원래 소리가 유지되나요? 모델 페이지에는 출력에 소리가 있다고 적혀 있지만 이번 테스트에서는 소리를 확인하지 않았으므로, 원본과 같다고 가정하지 마세요.
만화나 애니메이션 이미지도 되나요? 됩니다. 그 캐릭터의 실사 버전으로 나타나며 머리, 색감, 옷차림은 이어지지만 선화와 음영은 이어지지 않습니다.





