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:
| Configuration | Price |
|---|---|
| 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.
Quickstart
Section titled “Quickstart”Upload the portrait
Section titled “Upload the portrait”curl -X POST "https://api.pruna.ai/v1/files" \ -H "apikey: YOUR_API_KEY" \ -F "content=@/path/to/portrait.jpg"Script (asynchronous)
Section titled “Script (asynchronous)”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"}}'Uploaded audio
Section titled “Uploaded audio”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.
Parameters
Section titled “Parameters”Required
Section titled “Required”| Parameter | Type | Description |
|---|---|---|
| image | string | Portrait (first frame). jpg, jpeg, png, or webp, up to 20 MiB |
Also provide audio or voice_script. Uploaded audio overrides the script.
Optional
Section titled “Optional”| Parameter | Type | Default | Description |
|---|---|---|---|
| audio | string | — | Speech audio, up to 64 MiB and 3 minutes. The video matches its length |
| voice_script | string | "" | Exact words to speak when no audio is uploaded |
| voice | string | "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_prompt | string | "Say the following." | Delivery instructions (tone, pacing, accent, emotion). Not spoken |
| voice_language | string | "English (US)" | "English (US)", "English (UK)", "Spanish", "French", "German", "Italian", "Portuguese (Brazil)", "Japanese", "Korean", "Hindi" |
| prompt | string | "The person is talking." | What the video should show |
| prompt_upsampling | boolean | true | Append the scene's own motion from the portrait to prompt. Your words stay first |
| resolution | string | "768p" | "480p", "768p", "1080p", "2k" or "4k". 1080p, 2k and 4k upscale the 768p video; 4k up to 125 s |
| seed | integer | random | Random seed for reproducible generation |
| enable_safety_filter | boolean | false | Block 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.