성인 캐릭터 이미지와 녹음한 대사를 가지고 있으며, 캐릭터와 의도한 분위기를 모두 유지하는 짧은 영상을 만들고 싶다고 가정해 보겠습니다. Wan 2.7 Spicy는 NSFW 이미지→영상 생성과 오디오 입력을 제공하므로 유망한 선택지입니다.
Wan 2.7 Spicy는 SpicyAPI의 무검열 이미지→영상 옵션입니다. 2026년 9월 테스트에서는 모든 성인 지향 요청이 결과로 제공되었으며, 표현이 완화되거나 거부된 요청은 없었습니다.
현재 작업은 720p 또는 1080p에서 2–15초를 생성합니다. 시작 이미지, 필수 동작 프롬프트, 선택적인 생성 오디오와 오디오 트랙을 받습니다. 5초 비용은 720p에서 $0.6175, 1080p에서 $0.95입니다. 별도의 오디오 요금 구간은 명시되어 있지 않습니다.
이 테스트에서 ‘무검열’의 의미
SpicyAPI는 Wan 2.7 Spicy에 플랫폼 콘텐츠 필터를 추가하지 않습니다. 그래도 실제 출력 결과는 평가해야 합니다.
강도가 높은 요청도 더 순한 대체 결과로 완료되지 않고 요청한 결과가 제공되었습니다. 다른 테이크를 만들려면 새 seed를 선택하고, 두 설정을 비교할 때는 같은 시드를 유지합니다. Wan 2.7 Spicy 테스트 보고서를 확인하세요.

영상 버전이며 Wan 2.7 이미지 생성기가 아닙니다
Wan 2.7 Spicy에는 공개된 작업이 하나 있으며, 이미지→영상입니다. 시작 이미지와 비어 있지 않은 프롬프트가 모두 필요합니다. 텍스트로 스틸 이미지를 만들거나, 별도의 마지막 프레임을 받거나, 여러 캐릭터 레퍼런스 이미지를 받거나, 업로드한 영상을 연장하지 않습니다.
SpicyAPI의 Wan 2.7과 Wan 2.7 Pro는 별도의 이미지 모델입니다. 캐릭터 설명만 있다면 먼저 시작 스틸 이미지를 만듭니다. 완성된 클립의 사운드트랙을 교체하려면 영상 편집기를 사용하세요. 이 작업은 새 클립을 생성합니다.
사운드를 처리하는 세 가지 방법
성인 캐릭터 카탈로그에서는 차분한 목소리, 반복되는 실내 분위기 소리, 일관된 음악 신호처럼 사운드도 캐릭터의 일부입니다. Wan 2.7 Spicy는 generate_audio와 audio_url이라는 두 제어 항목을 제공하지만, 각각 역할이 다릅니다.
| 원하는 결과 | 오디오 설정 방법 | 실제 활용 |
|---|---|---|
| 나중에 음악을 넣을 무음 클립 | generate_audio를 false로 설정하고 audio_url은 비워 둡니다 | 편집기에서 승인된 사운드트랙을 추가합니다. |
| 영상과 함께 새로 만든 소리 | generate_audio를 true로 유지하고 프롬프트에 원하는 분위기 소리를 설명합니다 | 영상과 함께 목소리와 분위기 소리를 생성합니다. |
| 녹음 트랙을 바탕으로 한 클립 | audio_url을 제공하고 generate_audio를 true로 유지합니다 | 제공한 트랙으로 립싱크와 속도를 유도합니다. |
generate_audio가 false이면 제공한 오디오도 사용하지 않습니다. 따라서 녹음을 업로드한 다음 오디오를 끄는 것은 음성 중심 클립에 잘못된 설정입니다. WAV 또는 MP3를 사용하고, 보수적인 준비 기준으로 원본을 15 MB 미만으로 유지합니다. 생성 영상은 여전히 15초가 상한입니다. 30초를 업로드한다고 30초 영상이 되지는 않습니다.
제출 전에 녹음 길이를 의도한 샷 길이에 맞춥니다. 녹음 자체가 정확히 그대로 유지되어야 한다면 마스터를 보관하고, 편집기에서 선택한 영상 아래에 배치한 뒤 말소리가 선명한지 직접 듣고 확인합니다.

녹음 트랙을 제공할 때는 Generate audio를 켜 둡니다. 표시된 설정은 작성한 지시를 유지하도록 Prompt expansion을 꺼 둔 상태입니다.
음성 중심 캐릭터 클립의 실용적인 예
완전한 시작 설정으로, 불투명한 버건디 블라우스를 입고 카메라를 향해 앉아 있는 38세의 가상 성인 여성을 사용합니다. 허리 바로 아래부터 머리 위까지 담습니다. 입이 보이게 하고 두 손은 얼굴에서 떨어진 곳에 둡니다. 부드러운 조명 하나와 단순한 방을 사용합니다. 머리카락에 입이 가려진 옆모습 이미지는 발화를 평가하기 위한 시작 이미지로 적절하지 않습니다.
“Stay a little longer. I saved this moment for you.”처럼 짧은 독창적인 대사를 녹음합니다. 상세한 성인 장면 없이 성인 캐릭터를 보여 주는 티저입니다. 처리 권한이 있는 목소리를 사용하고, 시작과 끝에 짧고 조용한 여유를 두어 녹음을 5초로 다듬습니다. 첫 시도에서는 말소리에 음악을 덮지 마세요. 목소리가 잘 들리지 않으면 생성과 믹싱 중 무엇이 문제인지 알 수 없습니다.
- 승인된 시작 이미지를 Input image로, 녹음 트랙을 Input audio로 업로드합니다.
- 720p의 5초를 선택하고 Generate audio는 켜 두며 Prompt expansion은 끕니다.
- 동작 지시를 붙여 넣고 음성 중심 테이크를 생성합니다.
지시 예:
One continuous medium shot of the fictional adult woman in the opening image. She faces the viewer and speaks the supplied short line, then settles into a restrained smile. Keep the same burgundy blouse, face, chair and lighting. Both hands remain resting beside her waist and clear of her face. Stationary eye-level camera, unchanged framing. No cut, no other speaker and no music added over the voice. End with a quiet hold.
움직임을 제한하면 말하는 연기를 눈으로 확인할 수 있습니다. 목소리와 입 움직임이 쓸 만해지면 두 번째 샷에서 제스처를 추가할 수 있습니다. 첫 시도에 고개 돌리기, 입을 가로지르는 손, 움직이는 카메라를 함께 넣으면 오디오에 맞춘 연기가 작동하는지 평가하기가 훨씬 어렵습니다.
출력을 소리와 함께 재생합니다. 대사를 알아들을 수 있나요? 다른 목소리가 나타나나요? 입 움직임은 말소리와 함께 시작하고 끝나나요? 마지막 미소가 얼굴을 왜곡하나요? 무음 티저로 적합한 클립도 음성 중심 클립으로는 실패할 수 있습니다. 시청자가 실제로 듣고 보게 될 것을 기준으로 결정합니다.
녹음이 잘린다면 긴 연기를 5초 클립에 맞추려 하지 말고 더 짧은 대사를 준비합니다. 말할 때 얼굴이 변한다면 정면 스틸 이미지로 돌아가 고개 움직임을 없앱니다. 정확한 발화가 계속 실패한다면 쓸 만한 무음 테이크를 보관하고, 눈에 보이는 립싱크가 필요하지 않을 때만 후반 작업에서 녹음을 추가합니다.
모델이 의도한 장면을 유지하도록 하기
Wan 2.7 Spicy는 프롬프트에서 요청한 것보다 더 많은 동작을 추가할 수 있습니다. 의뢰가 절제된 티저라면 추가 캐릭터, 의상 변경 또는 계획하지 않은 성인 장면 때문에 기술적으로 완료된 영상도 사용할 수 없게 됩니다. 변형 결과에 비용을 쓰기 전에 원하는 연기를 구체적으로 지정합니다.
통제된 샷을 위해 원하는 한 가지 동작과 그 동작이 멈추는 지점을 설명합니다. 시작 이미지, 의상, 방이 같아야 한다면 명시합니다. 연기 지시를 완전히 작성했다면 Prompt expansion을 끕니다. 확장은 기본적으로 켜져 있으며 생성 전에 프롬프트를 다시 작성합니다. 끄면 제출한 설명이 이 확장 단계에서 바뀌지 않아, 생성에 자신의 문구가 전달됩니다.
네거티브 프롬프트 필드는 최대 500자를 받습니다. 앉아 있는 예에는 다음을 사용합니다.
additional person, outfit change, scene change, zoom, camera cut, hand across face, subtitles, watermark
카메라 움직임이 계속되면 긍정 지시도 수정합니다: “stationary eye-level camera, same waist-up framing from beginning to end.” 의도한 움직임이 계속 다른 장면으로 바뀐다면 샷 설계를 바꾸거나 다른 모델을 평가합니다. 똑같이 원하지 않는 해석의 결과를 계속 구매할 이유는 없습니다.
예산은 얼마나 잡아야 할까요?
공개 요금은 720p에서 출력 1초당 $0.1235, 1080p에서 $0.19입니다. 명시된 가격표에는 생성 오디오나 제공된 오디오에 별도 요금이 추가되지 않습니다.
| 클립 길이 | 720p | 1080p |
|---|---|---|
| 2초 | $0.247 | $0.38 |
| 5초 | $0.6175 | $0.95 |
| 10초 | $1.235 | $1.90 |
| 15초 | $1.8525 | $2.85 |
2초로 시작 프레임이 움직이는지 확인할 수 있지만, 앞서 나온 5초 대사에는 너무 짧습니다. 720p의 5초 테이크 세 개는 $1.8525입니다. 1080p로 5초를 한 번 더 생성하면 시작 이미지와 녹음을 제외한 총액은 $2.8025가 됩니다. 캐릭터 열 명에게 이 네 번 시도하는 워크플로를 적용하면 영상 생성 비용은 $28.025입니다.
1080p 재생성은 선택한 720p 클립의 업스케일링이 아니라 새 테이크입니다. 표정, 타이밍, 발음이 바뀔 수 있습니다. 오디오를 꺼도 명시된 가격 할인은 없습니다.

Wan 2.7 Spicy는 무음, 생성 사운드, 제공 트랙 설정 모두에 5초 720p 요금 $0.6175를 명시합니다. 제공 트랙을 사용하려면 오디오를 켜야 합니다.
다른 작업이 더 적합한 경우
완성된 시작 이미지가 있고 선택적으로 녹음 오디오를 입력하는 짧은 성인 지향 클립을 원할 때 Wan 2.7 Spicy를 사용합니다. 2–15초 범위에서 최대 길이를 구매하지 않고도 특정한 짧은 장면에 길이를 맞출 수 있습니다.
- 더 저렴한 녹음 트랙 클립: Wan 2.6 Spicy는
audio_url을 받고 720p의 5초에 $0.475입니다. 길이는 5/10/15초로 고정되며 오디오 켜기/끄기 스위치는 없습니다. - 마지막 프레임 또는 15초를 넘는 길이: Wan 3.0 Spicy는 종료 이미지 입력과 2–30초 클립을 제공하며 480p에서 $0.057/s부터 시작합니다. 오디오를 생성하지만 자신의 오디오 파일은 받지 않습니다. Wan 3.0 길이 가이드를 확인하세요.
- 녹음 오디오와 정확한 짧은 길이: 720p 또는 1080p에서 2부터 15까지 정수 초 길이를 지정하려면 Wan 2.7 Spicy를 선택합니다.
모델 제품군의 성인 콘텐츠 동작은 Wan 무검열 버전을 비교하세요.
Wan 2.7 Spicy 이미지→영상을 열고, 승인된 성인 캐릭터 스틸 이미지를 업로드한 다음 연기가 들어가는 가장 짧은 클립으로 시작합니다. 무음, 생성 사운드, 자신의 녹음 중에서 의도적으로 선택합니다. 아이디어를 일괄 생성으로 확대하기 전에 실제 영상과 사운드트랙을 평가합니다.
API로 음성 중심 설정 사용하기
환경에 SPICY_API_KEY를 설정하고 SPICY_IMAGE_URI를 시작 이미지의 접근 가능한 URL 또는 업로드된 spicy:// URI로 설정합니다. SPICY_AUDIO_URI를 녹음 트랙의 접근 가능한 URL 또는 업로드된 URI로 설정합니다. 이 Python 3 예제는 가격을 확인한 후 새 샷 하나를 제출합니다.
import json
import os
import urllib.request
import uuid
base = "https://api.spicyapi.ai/api/v1"
headers = {"Authorization": "Bearer " + os.environ["SPICY_API_KEY"],
"Content-Type": "application/json", "User-Agent": "SpicyAPI-Blog/1.0"}
settings = {
"duration_seconds": 5,
"resolution": "720p",
"generate_audio": True,
"enable_prompt_expansion": False
}
settings["prompt"] = 'The adult speaker talks in one continuous stationary shot.'
settings["image_url"] = os.environ["SPICY_IMAGE_URI"]
settings["audio_url"] = os.environ["SPICY_AUDIO_URI"]
payload = {"model": "alibaba/wan-2.7-spicy/image-to-video", "input": settings}
def post(path, body):
request = urllib.request.Request(base + path, json.dumps(body).encode(), headers)
with urllib.request.urlopen(request, timeout=60) as response:
result = json.load(response)
if result.get("code") != 200:
raise RuntimeError(result)
return result["data"]
quote = post("/jobs/quote", payload)
if input(f"Maximum charge ${quote['maxCharge']}. Type yes to generate: ") != "yes":
raise SystemExit("Stopped before generation")
headers["Idempotency-Key"] = str(uuid.uuid4())
print("Request key:", headers["Idempotency-Key"], flush=True)
task = post("/jobs/createTask", {**payload, "quoteId": quote["quoteId"],
"expectedCost": quote["estimatedCost"]})
print("Task ID:", task["taskId"])같은 요청을 복구할 수 있도록 출력된 요청 키를 보관합니다. 새 샷에는 새 키를 사용합니다. 작업 API 문서에서 결과 전달과 복구를 설명합니다.
반복되는 샷은 Agent가 승인된 입력 파일을 사용하도록 맡깁니다. CLI spicyapi tasks create --model alibaba/wan-2.7-spicy/image-to-video --input-file input.json --wait; MCP는 해당 모델과 입력으로 spicyapi_task_create를 호출하도록 요청합니다. Skill은 “Use the spicyapi Skill to generate this approved shot and return the result.”라고 요청합니다. CLI와 MCP는 생성 전에 가격을 보여 줍니다. Agent 통합 문서를 확인하세요.






