El modelo de humano digital wan2.2-s2v genera videos naturales de conversación, canto o actuación basados en una sola imagen y un archivo de audio.
- Impulsado por audio: Ingrese audio de voz humana para impulsar a la persona en una imagen estática, sincronizando los movimientos de los labios, las expresiones faciales y las acciones con el audio.
- Escenarios diversos: Admite tres escenarios de sincronización labial: "hablar", "cantar" y "actuar".
- Estilos de personajes diversos: Admite personas reales (retrato, medio cuerpo, cuerpo completo) y personajes de dibujos animados.
- Resolución de video de salida: Proporciona opciones de resolución de 480P y 720P.
ImportanteEste documento se aplica solo a la región de China (Beijing). Para usar modelos, debe usar una clave de API de la región de China (Beijing).
Modelos y precios
Nombre del modelo | Precio | Limitación de tasa (compartida por la cuenta principal y los usuarios RAM) | |
|---|---|---|---|
Límite de RPS de envío de tareas | Límite de tareas simultáneas | ||
wan2.2-s2v | 480P: $0.071677/segundo 720P: $0.129018/segundo | 5 | 1 |
API HTTP
Requisitos previos
- Active el servicio y obtenga una clave de API: Obtener una clave de API.
- Configure las variables de entorno: Configurar la clave de API como variable de entorno.
Paso 1: Crear una tarea para obtener un ID de tarea
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
Nota
- Debido a que este modelo tarda mucho tiempo en procesar, las tareas se crean de forma asíncrona.
- Después de crear una tarea, el sistema devuelve inmediatamente un
task_id. En el siguiente paso, use este task_id para consultar el resultado de la tarea dentro de 24 horas.
Parámetros de solicitud
| Parámetro | Tipo | Ubicación | Obligatorio | Descripción | Valor de ejemplo |
|---|---|---|---|---|---|
Content-Type | String | Header | Sí | Tipo de solicitud: application/json. | application/json |
Authorization | String | Header | Sí | Clave de API en el formato Bearer sk-xxx. | Bearer sk-1a**2b |
X-DashScope-Async | String | Header | Sí | Valor fijo: enable. Indica que se utiliza el método de llamada asíncrona. | enable |
model | String | Cuerpo | Sí | Especifica el modelo a llamar. | wan2.2-s2v |
input.image_url | String | Cuerpo | Sí | URL de la imagen cargada.
| |
input.audio_url | String | Cuerpo | Sí | URL del archivo de audio cargado.
| |
parameters.resolution | String | Cuerpo | No | Nivel de resolución de video. Valores válidos: 480P y 720P. Valor predeterminado: 480P. El modelo intenta mantener la relación de aspecto del video de salida consistente con la imagen de entrada y ajusta el recuento total de píxeles al nivel seleccionado manteniendo la relación de aspecto sin cambios. Ejemplos 480P: típicamente 640 x 480 (aproximadamente 310,000 píxeles), relación de aspecto 4:3. 720P: típicamente 1280 x 720 (aproximadamente 920,000 píxeles), relación de aspecto 16:9. Ejemplo: Si la imagen de entrada tiene una relación de aspecto 4:5 y selecciona el nivel 480P, el video de salida mantiene la relación de aspecto 4:5 y la resolución se ajusta a aproximadamente 310,000 píxeles. Por ejemplo, la resolución del video de salida es 480 x 600, para un total de 288,000 píxeles. Estos datos son solo de referencia; la salida real puede variar. | 480P |
NotaLa duración del video generado coincide con la duración del audio de entrada. Por lo tanto, la duración máxima del video por solicitud también está limitada por la duración del audio (debe ser inferior a 20 segundos). Si el audio de entrada supera los 20 segundos, la tarea falla. Para generar un video más largo, divida el audio largo en segmentos de menos de 20 segundos, llame a esta interfaz para cada segmento y luego use una herramienta de edición de video para concatenar los segmentos en un video completo.
Parámetros de respuesta
Parámetro | Tipo | Descripción | Valor de ejemplo |
|---|---|---|---|
output.task_id | String | ID único de la tarea asíncrona. | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | Estado del trabajo después de enviar la tarea asíncrona. | PENDING |
request_id | String | ID único de esta solicitud. | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
Ejemplo de solicitud
Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
curl
curl 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.2-s2v",
"input": {
"image_url": "https://img.alicdn.com/imgextra/i3/O1CN011FObkp1T7Ttowoq4F_!!6000000002335-0-tps-1440-1797.jpg",
"audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250825/iaqpio/input_audio.MP3"
},
"parameters": {
"resolution": "480P"
}
}'
SDK de Python
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os
# If you have not set environment variables, replace the following line with your API Key: api_key="sk-xxx"
# Get API Key: https://www.alibabacloud.com/help/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
def sample_async_call():
# Submit video generation task asynchronously
rsp = VideoSynthesis.async_call(api_key=api_key,
model='wan2.2-s2v',
img_url='https://img.alicdn.com/imgextra/i3/O1CN011FObkp1T7Ttowoq4F_!!6000000002335-0-tps-1440-1797.jpg',
audio_url='https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250825/iaqpio/input_audio.MP3',
resolution='480P')
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("task_id: %s" % rsp.output.task_id)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# Query task status
status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# Wait for task completion
rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output.video_url)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_async_call()
Ejemplo de respuesta
{
"output": {
"task_id": "a8532587-fa8c-4ef8-82be-xxxxxx",
"task_status": "PENDING"
}
"request_id": "7574ee8f-38a3-4b1e-9280-xxxxxx"
}
Paso 2: Consultar resultados por ID de tarea
Use el task_id obtenido en el paso anterior para enviar una solicitud GET y consultar el estado y el resultado de la tarea. Reemplace {task_id} en la URL con su ID de tarea real, y reemplace {WorkspaceId} con su ID de espacio de trabajo real.
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Nota
- Las tareas de generación de video tardan mucho tiempo (aproximadamente 5-10 minutos). Recomendamos usar un mecanismo de sondeo con un intervalo de consulta razonable (por ejemplo, 15 segundos) para recuperar los resultados.
- La
video_urldevuelta después de una tarea exitosa es válida durante 24 horas. Descargue y guarde el video de inmediato.
Parámetros de solicitud
Parámetro | Tipo | Ubicación | Obligatorio | Descripción | Valor de ejemplo |
|---|---|---|---|---|---|
Authorization | String | Header | Sí | Clave de API, por ejemplo, Bearer sk-xxx. | Bearer sk-xxx |
task_id | String | Ruta de URL | Sí | ID de la tarea a consultar. | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
Parámetros de respuesta
Parámetro | Tipo | Descripción | Valor de ejemplo |
|---|---|---|---|
output.task_id | String | ID de la tarea consultada. | a8532587-fa8c-4ef8-82be-0c46b17950d1 |
output.task_status | String | Estado de la tarea. Valores posibles:
| SUCCEEDED |
output.submit_time | String | Hora de envío de la tarea. | 2025-09-01 09:37:27.468 |
output.scheduled_time | String | Hora de inicio de ejecución de la tarea. | 2025-09-01 09:37:34.885 |
output.end_time | String | Hora de finalización de la tarea. | 2025-09-01 09:40:20.734 |
output.results.video_url | String | Archivo de video generado. La video_url es válida durante 24 horas. Descárguela promptly. | https://xxx/1.mp4?Expires=xxx |
usage.duration | Float | Duración del video en segundos. Se utiliza para la facturación, que se cobra por segundo. | 10.23 |
usage.video_count | Integer | Número de videos generados. | 1 |
usage.SR | Integer | Nivel de resolución del video generado. | 480 |
usage.size | String | Resolución del video generado por esta solicitud. | "size": "640*480" |
usage.fps | Integer | Tasa de fotogramas del video generado por esta solicitud. | "fps": 16 |
output.code | String | Código de error. Se devuelve cuando la tarea falla. | InvalidParameter |
output.message | String | Detalles del error. Se devuelve cuando la tarea falla. | A la solicitud le faltan parámetros obligatorios o tiene un formato incorrecto |
request_id | String | ID único de esta solicitud. | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
Ejemplo de solicitud
Reemplace 86ecf553-d340-4e21-xxxxxxxxx con el task_id real, y reemplace {WorkspaceId} con su ID de espacio de trabajo real.
curl -X GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
NotaLa task_id solo se puede usar para consultar resultados de tareas dentro de 24 horas. Después de eso, el sistema la borra automáticamente.
Ejemplo de respuesta
Respuesta exitosa
Los datos de la tarea (como el estado de la tarea y la URL del video) se conservan solo durante 24 horas. Después de eso, se borran automáticamente. Guarde los resultados de inmediato.
{
"output": {
"task_id": "bcae8761-f242-4775-a11e-xxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2025-09-01 09:37:27.468",
"scheduled_time": "2025-09-01 09:37:34.885",
"end_time": "2025-09-01 09:40:20.734",
"results": {
"video_url": "http://dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com/1d/xxx.mp4?Expires=xxxxxx"
}
},
"usage": {
"duration": 18.13,
"size": "512*640",
"fps": 16,
"video_count": 1,
"SR": 480
},
"request_id": "28cfedb1-cd60-9e0c-b920-xxxxxx"
}
Respuesta fallida
{
"request_id": "8d49f522-f6a4-9eed-b322-xxxxxx",
"output": {
"task_id": "101ad32f-7653-4ae9-8f22-xxxxxx",
"task_status": "FAILED",
"submit_time": "2025-09-01 11:43:41.174",
"scheduled_time": "2025-09-01 11:43:48.937",
"end_time": "2025-09-01 11:43:49.802",
"code": "InvalidURL",
"message": "Required URL is missing or invalid, please check the request URL."
}
}
Facturación y limitación de tasa
-
Para cuotas gratuitas y precios del modelo, consulte Wanx-Digital Human.
-
Para la limitación de tasa del modelo, consulte la serie Wanxiang.
-
Notas de facturación:
- La entrada no se factura; la salida sí se factura. Se le cobra según el número de segundos del video generado correctamente.
- Las llamadas fallidas al modelo o los errores de procesamiento no se cobran y no consumen la Cuota gratuita para nuevos usuarios.
Códigos de error
Si una llamada al modelo falla y devuelve un mensaje de error, consulte Códigos de error para resolver el problema.