Una solicitud común de quienes crean demos de productos, introducciones de cursos y clips para redes sociales: «Tengo una foto del presentador y una voz en off que ya grabé. Haz que la persona de la foto diga exactamente eso». P-Video-2 Pro Reference de Pruna AI lo hace en una sola llamada a la API. Envías la foto como referencia, tu archivo de audio y keep_audio: true; el modelo genera el video alrededor de tu pista, con los labios y el movimiento de la cabeza siguiendo las palabras. Esta guía muestra la solicitud exacta, cuánto cuesta y un clip real que generamos mientras la escribíamos.
Qué hace P-Video-2 Pro Reference
Es un modelo de referencia a video. En lugar de describirlo todo en texto, le das material con el que trabajar:
- Imágenes de referencia (hasta 9): cómo se ve un personaje o producto, o un estilo.
- Videos de referencia (hasta 3, de 2 a 15 segundos cada uno, 15 segundos en total): movimiento o escena que debe seguir.
- Audio (hasta 3 archivos, 15 segundos en total).
- Un prompt de texto que lo conecta todo: dónde está la persona y qué está haciendo.
El resultado es un clip de 5 a 15 segundos con sonido, a 480p o 768p, en modo Speed o Cost, con relaciones de aspecto de 16:9 a 9:16 o «adaptive» (sigue las referencias). Se requiere al menos una referencia de imagen o video.
keep_audio: tu voz, tus palabras
La entrada de audio tiene dos significados muy distintos, y keep_audio permite cambiar entre ellos:
- Sin
keep_audio(la opción predeterminada), el audio es solo una muestra. El modelo imita la voz o el sonido, pero tu archivo no se incluye en el clip y las palabras pueden ser diferentes. - Con
keep_audio: truey exactamente un archivo de audio, ese archivo se convierte en la banda sonora. La misma voz, las mismas palabras; el video (movimiento y labios) se genera para coincidir con ella.
Cómo interactúa la duración de la pista con duration: si tu audio es más corto que la duración, se reproduce primero y el modelo genera el resto; si es más largo, se recorta a la duración; si está a menos de un segundo de la duración, el clip sigue la duración del audio. Así que elige una duración cercana a la de tu voz en off. keep_audio no cambia el precio.
Precio
El precio del clip se calcula por generación a partir de tres elementos: los segundos de salida (según el modo y la resolución), más cada imagen de referencia, más los segundos de video y audio de referencia. La combinación más económica es 480p en modo Cost. La tabla completa de niveles está en la página del modelo P-Video-2 Pro Reference.
Como el precio depende de tus entradas exactas, solicita una cotización antes de generar. El endpoint de cotización es gratuito y devuelve un quoteId que puedes asociar al trabajo:
curl https://getvibeapi.com/api/media/price \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d @request.json
# Nuestra cotización del 22 de octubre de 2026 para la solicitud siguiente
# (7 s, 480p, modo Cost, 1 foto, 1 pista de audio, keep_audio):
{"ok":true,"priceUsd":0.165625,"isEstimate":false,"chargeBasis":"quote","quoteId":"mq_…","quoteTtlSeconds":900}
La cotización es un límite máximo: las referencias no se miden antes del envío, así que asume el límite completo (por ejemplo, los 15 segundos completos de audio de referencia cuando se envía cualquier audio). A nuestro trabajo se le cobró exactamente el importe cotizado.
Paso a paso: foto + voz en off → clip parlante
1. Prepara dos archivos públicos
Necesitas una URL HTTPS pública para el retrato (una foto clara de frente, de la cabeza y los hombros, funciona mejor) y otra para la voz en off (MP3 o WAV). Para nuestra prueba generamos una presentadora ficticia con Nano Banana 2.1 y una voz en off en inglés de 7.3 segundos con gpt-4o-mini-tts, ambos a través de la misma clave de API. Cualquier grabación tuya funciona de la misma manera.
2. Envía el trabajo
import os, time, requests
API = "https://getvibeapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['GETVIBE_API_KEY']}"}
body = {
"model": "p-video-2-pro-reference",
"prompt": "La mujer de la foto de referencia habla cálidamente a la cámara en una panadería acogedora, "
"movimiento natural de la cabeza, labios sincronizados con la voz en off",
"opts": {
"mode": "cost", # modo más económico; "speed" es más rápido
"resolution": "480p", # o "768p"
"duration": "7", # cercano a la duración de la voz en off (7.3 s)
"aspect_ratio": "16:9",
"reference_image_urls": ["https://your-cdn.example/presenter.jpg"],
"reference_audio_urls": ["https://your-cdn.example/voiceover.mp3"],
"keep_audio": True, # usa esta pista como banda sonora, no como muestra
},
}
job = requests.post(f"{API}/api/media/generate", json=body, headers=HEADERS).json()
print(job["jobId"], job["status"], job["priceRub"])
El campo se llama priceRub por razones históricas; en getvibeapi.com contiene dólares estadounidenses, el mismo número que devolvió la cotización.
3. Consulta el resultado
while True:
r = requests.get(f"{API}/api/media/jobs/{job['jobId']}", headers=HEADERS).json()
if r["status"] in ("success", "fail"):
break
time.sleep(10)
print(r["status"], r["resultUrls"])
Para lotes en producción, usa un webhook en lugar de hacer consultas periódicas; consulta webhooks de media. Los enlaces a los resultados caducan después de aproximadamente una semana, así que copia el archivo a tu propio almacenamiento.
Qué obtuvimos
Nuestro trabajo terminó en unos minutos con el estado success. El resultado fue un MP4: 832×480, 7.33 segundos, con una pista de audio. Estas son las comprobaciones que hicimos:
- La voz es la nuestra. Comparamos la banda sonora del clip con la muestra de voz en off original, muestra por muestra: correlación de 0.99998 con desplazamiento cero. El modelo conservó el archivo, no una imitación con la voz recreada.
- El rostro se conserva. Los fotogramas de los segundos 1, 3 y 5 muestran a la misma mujer que aparece en la foto de referencia (cabello, aretes, camisa de lino verde), ahora en una panadería como pedía el prompt, hablando con un movimiento visible de la boca.
- La duración sigue la pista. Una voz en off de 7.3 segundos con
duration: "7"produjo un clip de 7.33 segundos, tal como predice la regla de menos de un segundo.
480p en modo Cost es suficiente para previsualizaciones y formatos pequeños para redes sociales. Para el corte final, ejecuta la misma solicitud a 768p cuando estés satisfecho con el prompt.
Consejos y límites
- Envía exactamente un archivo de audio con
keep_audio; con dos o tres, la solicitud se rechaza con un error claro. - Mantén la voz en off en 15 segundos o menos. Para guiones más largos, divide el contenido en varios clips y únelos.
- Todas las imágenes de referencia se cobran, incluidas
first_frame_urlylast_frame_url. Un buen retrato suele ser suficiente. - Describe el entorno y la forma de hablar en el prompt («tranquila, explicando», «sonriente, enérgica»); las palabras provienen de tu audio.
- Usa únicamente fotos y voces sobre las que tengas derechos. No suplantes a personas reales sin su consentimiento.
En la página de modelos se incluyen otros modelos de video, incluidas opciones de texto a video e imagen a video, y imagen, video y voz a través de una sola API explica en general el flujo de trabajo de media. Referencia completa de la solicitud: documentación de generación de media.
Dónde resulta útil
Los clips parlantes creados a partir de una foto fija y una voz en off lista encajan en cualquier flujo de trabajo donde las palabras estén definidas y el rostro sea el mismo en cada ocasión:
- Anuncios de productos y funciones. Graba un guion de 10 segundos una sola vez y haz que tu presentador lo diga frente a distintos fondos cambiando únicamente el prompt.
- Introducciones de cursos y procesos de incorporación. Un anfitrión coherente para cada lección sin tener que reservar un estudio para cada una.
- Versiones localizadas. Graba o sintetiza la voz en off en otro idioma y genera un clip a juego; los labios siguen el nuevo audio.
- Fragmentos de soporte al cliente. Clips cortos de «así se hace X» en los que la precisión de las palabras importa más que el movimiento cinematográfico.
Dos cosas que no es: una herramienta de avatares de formato largo (cada generación dura como máximo 15 segundos) ni una forma de editar un video existente. Para cambiar el aspecto de material que ya tienes, consulta Kling 3.0 Omni Transformation.
Preguntas frecuentes
¿Puedo hacer que una foto hable con mi propia voz grabada?
Sí. Envía la foto en reference_image_urls, tu grabación como único elemento de reference_audio_urls y keep_audio: true. La grabación se convierte en la banda sonora del clip y los labios se generan para coincidir con ella.
¿Qué ocurre sin keep_audio?
El audio se usa únicamente como muestra para imitarlo. Tu archivo no aparece en el resultado y el discurso del clip puede ser diferente.
¿Cuánto puede durar el clip?
De 5 a 15 segundos por generación. El audio de referencia está limitado a 15 segundos en total.
¿Cuánto cuesta un clip parlante?
Depende de la duración, la resolución, el modo y las referencias que envíes. Obtén una cifra exacta en el endpoint gratuito /api/media/price antes de generar; nuestro clip de 7 segundos, 480p y modo Cost, con una foto y una pista de audio, se muestra arriba. Los niveles actuales están en la página del modelo.
¿El resultado tiene marca de agua?
No vimos ninguna marca de agua en nuestro clip.
