P-Video-2-Pro-Avatar

P-Video-2-Pro-Avatar, based on MiniMax H3, is Pruna’s talking-video model: a portrait plus a script or uploaded audio becomes a 24 fps MP4. Lips and expression follow the soundtrack. Length follows the audio, from 1 second to 3 minutes, at 480p or 768p.

The portrait is the identity and the frame. Uploaded audio is kept in the MP4 and wins over voice_script. With no recording, Gemini TTS speaks the script: 30 voices, 10 languages. prompt directs the picture; voice_prompt directs delivery and is not spoken.

Note

When using P-Video-2-Pro-Avatar, respect the copyright of the images, speech, and video you use as input and of the content you generate.

Pricing: billed per second of output video. The soundtrack sets the length. A 60 second video is $1.20 at 480p or $2.40 at 768p. Voice, language, and prompt_upsampling do not change the price. There is no separate charge for the portrait or for TTS.

480p

768p

Per output second

$0.02

$0.04

10 seconds

$0.20

$0.40

60 seconds

$1.20

$2.40

180 seconds

$3.60

$7.20

Speed: model execution time. A 10 second clip at 480p takes about 9.7 s. A 10 second clip at 768p takes about 22 s.

Resolution

Worker time

480p

~0.97 s per second of output video

768p

~2.2 s per second of output video

Tip

Try in the Playground in the Pruna User Portal.

Prompt formula

Fast pass

Portrait plus a short script. Default picture prompt. Enough for a first talking shot.

[image] [voice_script]
one still; the image sets the frame, short lines in the target language

Locked-in

Spell out gesture, camera, and what stays still. Lock delivery. Or upload the take.

[image] [voice_script / audio] [voice_prompt] [prompt]
same still every rerun, full script or uploaded take, tone, pace, what to avoid, one shot; gesture; background stays
Fast pass: a short script and a 16:9 still. Length follows the line.
Locked-in: gesture and what stays still are written into prompt.
  1. image — required. The person, painting, character, or sculpture who speaks. Generate a locked still with P-Image or P-Image-Ideogram when you need a repeatable face. The still sets the canvas; there is no aspect_ratio field.

    • Fast pass: one well-lit still.

    • Locked-in: same file and same seed when you need the same face again.

  2. voice_script or audio — required (one of them). The script is spoken with TTS. Uploaded audio is the soundtrack and sets the length. Audio wins when both are set. Speech or a song both work.

    • Fast pass: “Don’t. I just did the lipstick.”

    • Locked-in: a full localized script, or the take you already recorded.

  3. voice_prompt — how it is said: tone, pace, accent, emotion. Not spoken. Listen to timbre in Voice audio samples.

    • Fast pass: leave the default.

    • Locked-in: “Quiet, slow, soft, and private.” / “Bright, quick, amused.”

  4. prompt — the picture: camera, gesture, what stays still. Default is The person is talking. One continuous shot. No second scene, no cut, no on-screen words.

    • Fast pass: leave the default.

    • Locked-in: “Medium close-up, she speaks to the lens. A small nod on the last line. The camera stays put. The background stays the same room. Mouth clearly visible. No captions, no cut.”

Slot

Fast pass (enough to run)

Locked-in (stronger control)

image

One still. The portrait sets the frame.

Same still every rerun; generate it with P-Image when identity must lock.

voice_script / audio

Short lines in the target language.

Full script, or upload the take. Audio under 1 s is rejected; over 3 minutes is cut to 3 minutes.

voice_prompt

Default.

Tone, pace, register, what to avoid. Do not paste the script here.

prompt

Default: the person is talking.

One shot; name the gesture and what stays still; no cut, no captions.

Tip

When you need the exact take, prefer uploaded audio over generated TTS.

Tip

For comprehensive video prompting (motion, framing, atmosphere), see the Video Generation guide.

Choosing the right video model

Pruna ships performance video models that share the same prediction API, but each solves a different production problem. P-Video-2-Pro-Avatar generates speech from one still on the MiniMax H3 stack (Model: p-video-2-pro-avatar).

P-Video-2-Pro-Avatar

P-Video-2-Pro-Reference

P-Video-2-Pro

P-Video-2

P-Video

P-Video-Avatar

P-Video-Animate

P-Video-Replace

P-Video-Edit

One-line job

Speak from one still

Generate cinematic footage from prompts + references

Generate cinematic footage from prompts

Generate premium footage from prompts

Generate fast / affordable footage

Speak from one still (script or audio)

Retarget one still with clip motion

Swap characters in existing footage

Rewrite content in existing footage

You start with

Portrait still + voice_script or audio

Prompt + at least one image or video (+ optional audio, start / end frames)

Text prompt (+ optional first / last frame)

Text prompt (+ optional image / audio)

Text prompt (+ optional image / audio)

Portrait still + voice_script or audio

Source video + one still

Source video + identity stills

Source video + text prompt

You keep from the source

Aspect ratio of the still; uploaded audio as soundtrack

Identity, motion, and canvas from the uploaded references

N/A (new scene); canvas follows reference images when set

N/A (new scene); strong I2V consistency when an image is set

N/A (new scene)

Aspect ratio of the still

Motion, timing, camera from the driver

Camera, timing, blocking, background

Camera, timing, subject performance

Typical ask

“This person, painting, or character says this line — or sings this track.”

“Continue this clip / match these stills for 8 s at 768p.”

“Make an 8 s cinematic product or documentary clip with generated audio.”

“Make a 10 s product ad with music and lip-sync.”

“Draft a 5 s social clip cheaply and fast.”

“This spokesperson says this line in French.”

“Animate this catalog still using our winning ad take.”

“Put our creator in this UGC b-roll.”

“Turn this silver SUV red and keep the camera move.”

Generation time (5 s video)

~4.9 s (480p) · ~11 s (768p)

4.0 s (768p speed, 1 image) · 10.6 s (768p cost, 1 image)

4.3 s (768p speed) · 9.1 s (768p quality)

4.5 s (draft: 2.0 s)

9.3 s

—

26.2 s (720p)

~17.9 s (720p)

—

Cost (5 s video)

$0.10 (480p) · $0.20 (768p)

$0.130 (768p cost + 1 image) · $0.185 (768p speed + 1 image)

$0.125 (768p cost) · $0.175 (768p speed) · $0.375 (768p quality)

$0.13 (draft: $0.08)

$0.10 (draft: $0.03)

$0.125 (720p) · $0.225 (1080p)

$0.15 (720p) · $0.30 (1080p)

$0.15 (720p) · $0.30 (1080p)

$0.225 (draft: $0.125)

Draft mode

No

No

No

Yes

Yes

No

No

No

Yes

Quick decision guide

  • Need talking video from a still, including songs, paintings, or any character, at 480p / 768p, 1 s–3 min → P-Video-2-Pro-Avatar.

  • Need 720p / 1080p talking head, voice only, no music bed → P-Video-Avatar.

  • Need cinematic generation from text or a single first / last frame → P-Video-2-Pro.

  • Need multiple image, video, or audio references on MiniMax H3 → P-Video-2-Pro-Reference.

  • Need 1080p, imported audio muxed onto a new clip, or draft previews → P-Video-2.

  • Need the fastest / cheapest generation iteration → P-Video.

  • Footage exists and the hero still should move like the driver → P-Video-Animate.

  • Footage exists and you need different people in the same shot → P-Video-Replace.

  • Footage exists and you need a color, product, environment, object, or text edit → P-Video-Edit.

Key features

Any character

People, anime, game characters, paintings, and sculpture all speak. The still is the identity.

Performance direction

prompt can ask for a gesture, a head turn, a step toward the lens, or a song. One continuous talking shot.

Script or uploaded audio

TTS speaks voice_script, or uploaded audio is kept in the MP4. A song works. Audio wins over the script.

Voices and languages

30 Gemini TTS voices and 10 languages. Write voice_script in voice_language. Preview voices in Voice audio samples.

1 second to 3 minutes

There is no duration field. A short line is a short video. Long clips are assembled in chunks.

480p and 768p

Default is 768p. Use 480p for the lowest list price. Output is 24 fps.

Practical constraints

  • Resolution is 480p or 768p, not 720p / 1080p.

  • There is no duration or aspect_ratio input. The soundtrack sets the length; the portrait sets the frame and is cropped when its ratio is outside the model range.

  • Audio under 1 second is rejected. Audio over 3 minutes is truncated. Image up to 20 MiB (jpg, jpeg, png, webp). Audio up to 64 MiB.

  • Long clips are stitched. A change of room, or a wide static background, can show a seam.

  • Rate limit: 50 requests per minute.

Horizontal and vertical strategy

p-video-2-pro-avatar inherits aspect ratio from the input image:

  • Horizontal output: provide a landscape start frame (for example 16:9). A 16:9 still at 768p comes back 1344×768.

  • Vertical output: provide a portrait start frame (for example 9:16). A 9:16 still at 768p comes back 768×1344. A 3:4 still comes back 768×1024.

Generate landscape and portrait starts with P-Image so the first frame matches the aspect ratio you want in the final clip.

Examples

People, paintings, songs, languages, and clips from 2 seconds to 50 seconds. Open a card for the still, the script, and the picture prompt.

Integration

P-Video-2-Pro-Avatar uses the same Pruna predictions API as other performance models. Upload the portrait (and optional audio) first, then pass the returned URLs. You must send image plus voice_script or audio.

For the full p-video-2-pro-avatar request and response reference, use P-Video-2-Pro-Avatar in the API guides.

Tip

For more information on how to use the API, see the API Reference.

API endpoint

Base URL: https://api.pruna.ai/v1/predictions

Authentication

-H 'apikey: YOUR_API_KEY'
-H 'Model: p-video-2-pro-avatar'

Step 1: Upload your avatar source image

curl -X POST "https://api.pruna.ai/v1/files" \
  -H "apikey: YOUR_API_KEY" \
  -F "content=@/path/to/portrait.jpg"

Use the returned file URL as image in generation requests.

Step 2: Create avatar generation request

Script + built-in TTS (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/file-abc123",
      "voice_script": "Hey — we finally shipped the thing I kept talking about. One portrait, your audio or a script, and you get the talking video back.",
      "voice": "Zephyr (Female)",
      "voice_language": "English (US)",
      "voice_prompt": "Natural conversational tone, relaxed pacing, real pauses, honest not salesy.",
      "prompt": "Medium close-up, she speaks to the lens. A small nod on the last line. The camera stays put. The background stays the same room. Mouth clearly visible. No captions, no cut.",
      "resolution": "768p"
    }
  }'

Script + built-in TTS (synchronous)

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' \
  -H 'Try-Sync: true' \
  -d '{
    "input": {
      "image": "https://api.pruna.ai/v1/files/file-abc123",
      "voice_script": "We ship on Thursday. If the build is red, we slip it.",
      "voice": "Puck (Male)",
      "resolution": "480p",
      "seed": 41
    }
  }'

Uploaded audio override

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/file-abc123",
      "audio": "https://api.pruna.ai/v1/files/file-audio456",
      "prompt": "Medium close-up, he speaks to the lens. Mouth clearly visible. Hands stay below frame. The background does not change. No captions, no cut.",
      "resolution": "768p"
    }
  }'

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

Configuration

Required parameters

Parameter

Type

Description

image

file/string

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

You must also provide voice_script or audio (or both, with audio taking priority).

Optional parameters

Parameter

Type

Default

Description

audio

file/string

—

Speech or song, up to 64 MiB and 3 minutes. The video matches its length. Overrides voice_script.

voice_script

string

""

Exact words to speak when audio is not provided.

voice

string

"Zephyr (Female)"

Gemini TTS voice. Browse examples in Voice audio samples.

voice_prompt

string

"Say the following."

Delivery instructions (tone, pacing, accent, emotion). Not spoken.

voice_language

string

"English (US)"

Language of voice_script.

prompt

string

"The person is talking."

What the video should show: camera, gesture, what stays still.

prompt_upsampling

boolean

true

When true, the picture prompt is rewritten from the portrait. Set false to use prompt as written. Does not change the price.

resolution

string

"768p"

"480p" or "768p".

seed

integer

random

Random seed for a repeatable run. Does not invent a new person.

Supported option values

  • resolution: 480p, 768p.

  • voice_language: English (US), English (UK), Spanish, French, German, Italian, Portuguese (Brazil), Japanese, Korean, Hindi.

  • voice: Zephyr (Female), Puck (Male), Charon (Male), Kore (Female), Fenrir (Male), Leda (Female), Orus (Male), Aoede (Female), Callirrhoe (Female), Autonoe (Female), Enceladus (Male), Iapetus (Male), Umbriel (Male), Algenib (Male), Despina (Female), Erinome (Female), Laomedeia (Female), Achernar (Female), Algieba (Male), Schedar (Male), Gacrux (Female), Pulcherrima (Female), Achird (Male), Zubenelgenubi (Male), Vindemiatrix (Female), Sadachbia (Male), Sadaltager (Male), Sulafat (Female), Alnilam (Male), Rasalgethi (Male).

Use Voice audio samples to audition voices before finalizing voice + voice_language.

Voice audio samples

The TTS voices are the same Gemini set as P-Video-Avatar. Play them inline:

Voice Player
Achernar (Female)
Achird (Male)
Algenib (Male)
Algieba (Male)
Alnilam (Male)
Aoede (Female)
Autonoe (Female)
Callirrhoe (Female)
Charon (Male)
Despina (Female)
Enceladus (Male)
Erinome (Female)
Fenrir (Male)
Gacrux (Female)
Iapetus (Male)
Kore (Female)
Laomedeia (Female)
Leda (Female)
Orus (Male)
Puck (Male)
Pulcherrima (Female)
Rasalgethi (Male)
Sadachbia (Male)
Sadaltager (Male)
Schedar (Male)
Sulafat (Female)
Umbriel (Male)
Vindemiatrix (Female)
Zephyr (Female)
Zubenelgenubi (Male)

Argument recommendations

Use these patterns for consistent quality:

  • image: the only first-frame input. Use P-Image to create the still, then upload the file.

  • audio vs voice_script: prefer audio when the take, the song, or the timing is already recorded; otherwise use voice_script.

  • voice + voice_language: choose together and write the script in that language (see Voice audio samples).

  • voice_prompt: keep to delivery only. Do not paste the script.

  • prompt: one shot; name the gesture and what stays still. Do not ask for a new location halfway through.

  • prompt_upsampling: leave true for a first look; set false when the picture prompt must be used as written.

  • resolution: iterate in 480p, then rerun finals in 768p.

  • seed: set when you need the same face again; change only one variable at a time.