Skip to content
Developer Portal

p-video-2-pro-avatar

Generate a talking video from a portrait and uploaded audio or a script

p-video-2-pro-avatar turns a portrait and speech into a talking video with synced lips and expressions. Provide a portrait plus either an audio file or a script. Uploaded audio sets the timing; a script is spoken with text-to-speech. Output is a 24 fps MP4 from 1 second to 3 minutes.

Rate Limit: 50 requests per minute

Category: Video Generation

Pricing:

ConfigurationPrice
480p$0.02 per second of output video
768p$0.04 per second of output video
1080p$0.06 per second of output video
2k$0.08 per second of output video
4k$0.12 per second of output video

A 60 second video is $1.20 at 480p, $2.40 at 768p or $7.20 at 4k. 1080p, 2k and 4k upscale the 768p video with p-video-upscale (24 fps kept), at the 768p rate plus the p-video-upscale rate for that target; 4k is limited to 125 seconds of audio. The soundtrack sets the length. Audio is up to 3 minutes, and the video matches that length. Audio under 1 second is rejected. Voice, language, and prompt_upsampling do not change the price.

Terminal window
curl -X POST "https://api.pruna.ai/v1/files" \
-H "apikey: YOUR_API_KEY" \
-F "content=@/path/to/portrait.jpg"
Terminal window
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H 'apikey: YOUR_API_KEY' \
-H 'Model: p-video-2-pro-avatar' \
-d '{
"input": {
"image": "https://api.pruna.ai/v1/files/YOUR_FILE_ID",
"voice_script": "Hello, welcome to our product demo!",
"voice": "Zephyr (Female)",
"voice_language": "English (US)",
"resolution": "768p"
}
}'
Terminal window
curl -X POST 'https://api.pruna.ai/v1/predictions' \
-H 'Content-Type: application/json' \
-H 'apikey: YOUR_API_KEY' \
-H 'Model: p-video-2-pro-avatar' \
-d '{
"input": {
"image": "https://api.pruna.ai/v1/files/YOUR_FILE_ID",
"audio": "https://api.pruna.ai/v1/files/YOUR_AUDIO_ID",
"resolution": "480p"
}
}'

When both audio and voice_script are set, the uploaded audio is used.

prompt_upsampling is on by default. A vision model looks at the portrait and appends the scene's own motion (rain, lights, background, body movement) to prompt. Your words stay unchanged and come first, and anything you ask to keep still is left still. If the upsampler fails, your prompt is used as is. Set it to false to use prompt exactly as written.

ParameterTypeDescription
imagestringPortrait (first frame). jpg, jpeg, png, or webp, up to 20 MiB

Also provide audio or voice_script. Uploaded audio overrides the script.

ParameterTypeDefaultDescription
audiostring—Speech audio, up to 64 MiB and 3 minutes. The video matches its length
voice_scriptstring""Exact words to speak when no audio is uploaded
voicestring"Zephyr (Female)"TTS voice. 30 voices: Zephyr, Puck, Charon, Kore, Fenrir, Leda, Orus, Aoede, Callirrhoe, Autonoe, Enceladus, Iapetus, Umbriel, Algenib, Despina, Erinome, Laomedeia, Achernar, Algieba, Schedar, Gacrux, Pulcherrima, Achird, Zubenelgenubi, Vindemiatrix, Sadachbia, Sadaltager, Sulafat, Alnilam, Rasalgethi. Each name includes (Female) or (Male)
voice_promptstring"Say the following."Delivery instructions (tone, pacing, accent, emotion). Not spoken
voice_languagestring"English (US)""English (US)", "English (UK)", "Spanish", "French", "German", "Italian", "Portuguese (Brazil)", "Japanese", "Korean", "Hindi"
promptstring"The person is talking."What the video should show
prompt_upsamplingbooleantrueAppend the scene's own motion from the portrait to prompt. Your words stay first
resolutionstring"768p""480p", "768p", "1080p", "2k" or "4k". 1080p, 2k and 4k upscale the 768p video; 4k up to 125 s
seedintegerrandomRandom seed for reproducible generation
enable_safety_filterbooleanfalseBlock content in the toggleable moderation categories. The always-on rules apply either way.

The portrait sets the aspect ratio. The image is cropped to the output canvas when its ratio is outside the model range.