Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create AI avatar and talking head videos via inference.sh CLI. Recommended: P-Video-Avatar (fastest, cheapest, built-in TTS). Also: OmniHuman, Fabric, PixVerse. Audio: Inworld TTS-2 (100+ languages, emotion steering for characters), ElevenLabs, Kokoro. Capabilities: audio-driven avatars, text-to-avatar, lipsync videos, talking head generation, virtual presenters, UGC content. Use for: AI presenters, explainer videos, virtual influencers, dubbing, marketing videos, UGC ads, gaming avatars, NPC di
.claude/skills/aiskillstore-ai-avatar-video/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 89% | 0% |
> Install the belt CLI skill: npx skills add belt-sh/cli
Create AI avatars and talking head videos via inference.sh CLI.
!AI Avatar & Talking Head Videos
> Requires inference.sh CLI (belt). Install instructions
bashbelt login # Recommended: P-Video-Avatar (fastest, cheapest, built-in TTS) belt app run pruna/p-video-avatar --input '{ "image": "https://portrait.jpg", "voice_script": "Hello, welcome to our product demo!", "voice": "Zephyr (Female)" }'
Start with P-Video-Avatar — it's 18x faster and 6x cheaper than alternatives, with built-in TTS, dynamic backgrounds, and 1080p support.
| Model | App ID | Best For | Built-in TTS | |-------|--------|----------|-------------| | P-Video-Avatar | pruna/p-video-avatar | Best overall: speed, cost, quality, control | Yes (30 voices, 10 languages) | | OmniHuman 1.5 | bytedance/omnihuman-1-5 | Multi-character, audio-driven | No | | Fabric 1.0 | falai/fabric-1-0 | Image talks with lipsync | Yes | | PixVerse Lipsync | falai/pixverse-lipsync | Highly realistic lipsync | No |
| Model | Speed (per sec of video) | Cost per second | |-------|-------------------------|----------------| | P-Video-Avatar | ~1.83s/s | $0.025 | | OmniHuman 1.5 | ~28s/s (15x slower) | $0.16 (6.4x more) | | Fabric 1.0 | ~34s/s (18x slower) | $0.14 (5.6x more) |
Generate avatar from portrait + text script with built-in TTS:
bashbelt app run pruna/p-video-avatar --input '{ "image": "https://portrait.jpg", "voice_script": "Welcome to our product walkthrough. Today I will show you three key features.", "voice": "Puck (Male)", "voice_language": "English (US)", "resolution": "720p" }'
With custom style control:
bashbelt app run pruna/p-video-avatar --input '{ "image": "https://portrait.jpg", "voice_script": "This is exciting news!", "voice": "Aoede (Female)", "voice_prompt": "Enthusiastic and energetic tone", "video_prompt": "The person is presenting on stage with dramatic lighting", "resolution": "1080p" }'
With audio file instead of TTS:
bashbelt app run pruna/p-video-avatar --input '{ "image": "https://portrait.jpg", "audio": "https://speech.mp3" }'
Use Pruna P-Image to generate the portrait, then create the avatar:
bash# 1. Generate a portrait image belt app run pruna/p-image --input '{ "prompt": "professional headshot portrait of a young woman, neutral background, looking at camera, studio lighting, photorealistic", "aspect_ratio": "9:16" }' # 2. Create avatar video with built-in TTS belt app run pruna/p-video-avatar --input '{ "image": "<image-url-from-step-1>", "voice_script": "Hi there! Let me walk you through our latest features.", "voice": "Zephyr (Female)" }'
bashbelt app run bytedance/omnihuman-1-5 --input '{ "image_url": "https://portrait.jpg", "audio_url": "https://speech.mp3" }'
Supports specifying which character to drive in multi-person images.
bashbelt app run falai/fabric-1-0 --input '{ "image_url": "https://face.jpg", "audio_url": "https://audio.mp3" }'
bashbelt app run falai/pixverse-lipsync --input '{ "image_url": "https://portrait.jpg", "audio_url": "https://speech.mp3" }'
For models without built-in TTS (OmniHuman, PixVerse), generate speech first:
bash# 1. Generate speech — Inworld TTS-2 for expressive character voices belt app run inworld/text-to-speech-2 --input '{ "text": "[friendly] Welcome to our product demo! [excited] Let me show you three features that will change how you work.", "voice_id": "Sarah", "delivery_mode": "CREATIVE" }' > speech.json # 2. Create avatar video with the speech belt app run bytedance/omnihuman-1-5 --input '{ "image_url": "https://presenter-photo.jpg", "audio_url": "<audio-url-from-step-1>" }'
> Tip: For most use cases, P-Video-Avatar with built-in TTS is simpler — no separate audio step needed. Use this workflow only when you specifically need OmniHuman (multi-character) or PixVerse (realistic lipsync).
bash# 1. Transcribe original video belt app run infsh/fast-whisper-large-v3 --input '{"audio_url": "https://video.mp4"}' > transcript.json # 2. Translate text (manually or with an LLM) # 3. Generate speech in new language belt app run infsh/kokoro-tts --input '{"text": "<translated-text>"}' > new_speech.json # 4. Lipsync the original video with new audio belt app run infsh/latentsync-1-6 --input '{ "video_url": "https://original-video.mp4", "audio_url": "<new-audio-url>" }'
Create UGC-style content with P-Video-Avatar — built-in TTS, no separate audio step needed:
bash# 1. Generate a relatable UGC-style portrait belt app run pruna/p-image --input '{ "prompt": "casual selfie-style photo of a young woman in a cozy room, natural lighting, looking at camera, warm smile, authentic feel", "aspect_ratio": "9:16" }' # 2. Create UGC avatar video with built-in TTS belt app run pruna/p-video-avatar --input '{ "image": "<image-url-from-step-1>", "voice_script": "Okay so I just tried this product and honestly? It is a game changer. I was not expecting to love it this much but here we are!", "voice": "Zephyr (Female)", "voice_prompt": "Excited, casual, authentic tone like talking to a friend", "video_prompt": "The person is talking casually to camera in their room, natural gestures", "resolution": "1080p" }'
bash# Generate 3 different presenters for voice in "Zephyr (Female)" "Puck (Male)" "Aoede (Female)"; do belt app run pruna/p-video-avatar --input "{ \"image\": \"https://portrait.jpg\", \"voice_script\": \"This changed my morning routine completely. Five minutes and I am done.\", \"voice\": \"$voice\", \"voice_prompt\": \"Casual, authentic, like a real testimonial\", \"video_prompt\": \"Person talking to camera in a bright kitchen\", \"resolution\": \"1080p\" }" done
pruna/p-image using 9:16 aspect ratio for vertical videosbash# Dedicated P-Video-Avatar skill npx skills add inference-sh/skills@p-video-avatar # Full platform skill (all apps) npx skills add inference-sh/skills@infsh-cli # Text-to-speech (generate audio for non-TTS avatar models) npx skills add inference-sh/skills@text-to-speech # Speech-to-text (transcribe for dubbing) npx skills add inference-sh/skills@speech-to-text # Video generation npx skills add inference-sh/skills@ai-video-generation # Image generation (create avatar images) npx skills add inference-sh/skills@ai-image-generation
Browse all video apps: belt app list --category video
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→pass | 11,093 | 7,930 | -29% | 1 | 1 | 0% | 1,858 | 4,142 | +123% | 0 | 0 | — |
case-04 | pass→pass | 19,655 | 8,914 | -55% | 1 | 1 | 0% | 3,170 | 4,260 | +34% | 0 | 0 | — |
case-01 | fail→pass | 10,805 | 9,007 | -17% | 1 | 1 | 0% | 1,724 | 3,285 | +91% | 0 | 0 | — |
case-02 | fail→pass | 14,795 | 6,986 | -53% | 1 | 1 | 0% | 2,758 | 3,969 | +44% | 0 | 0 | — |
case-03 | fail→pass | 16,622 | 7,126 | -57% | 1 | 1 | 0% | 3,059 | 4,070 | +33% | 0 | 0 | — |
case-06 | fail→pass | 14,933 | 10,158 | -32% | 1 | 1 | 0% | 2,384 | 4,499 | +89% | 0 | 0 | — |
case-07 | fail→pass | 23,624 | 3,617 | -85% | 1 | 1 | 0% | 1,527 | 3,171 | +108% | 0 | 0 | — |
case-08 | fail→pass | 12,237 | 3,323 | -73% | 1 | 1 | 0% | 2,133 | 3,292 | +54% | 0 | 0 | — |
case-09 | fail→pass | 5,047 | 2,721 | -46% | 1 | 1 | 0% | 915 | 3,128 | +242% | 0 | 0 | — |
case-15 | pass→pass | 6,911 | 3,221 | -53% | 1 | 1 | 0% | 1,265 | 3,241 | +156% | 0 | 0 | — |
case-10 | fail→pass | 10,102 | 3,515 | -65% | 1 | 1 | 0% | 1,793 | 3,281 | +83% | 0 | 0 | — |
case-11 | fail→pass | 9,971 | 5,638 | -43% | 1 | 1 | 0% | 1,777 | 3,697 | +108% | 0 | 0 | — |
case-12 | fail→pass | 7,907 | 2,591 | -67% | 1 | 1 | 0% | 1,446 | 3,105 | +115% | 0 | 0 | — |
case-13 | fail→pass | 10,848 | 6,134 | -43% | 1 | 1 | 0% | 2,047 | 3,879 | +89% | 0 | 0 | — |
case-14 | fail→pass | 12,556 | 7,817 | -38% | 1 | 1 | 0% | 2,024 | 4,197 | +107% | 0 | 0 | — |
case-16 | fail→pass | 6,053 | 2,728 | -55% | 1 | 1 | 0% | 1,107 | 3,143 | +184% | 0 | 0 | — |
case-17 | fail→pass | 7,591 | 2,886 | -62% | 1 | 1 | 0% | 1,349 | 3,089 | +129% | 0 | 0 | — |
case-18 | fail→pass | 9,295 | 2,127 | -77% | 1 | 1 | 0% | 1,363 | 2,915 | +114% | 0 | 0 | — |
case-19 | pass→pass | 3,081 | 1,742 | -43% | 1 | 1 | 0% | 435 | 2,871 | +560% | 0 | 0 | — |
case-20 | fail→pass | 13,466 | 1,826 | -86% | 1 | 1 | 0% | 1,605 | 2,895 | +80% | 0 | 0 | — |
case-21 | fail→pass | 8,423 | 2,976 | -65% | 1 | 1 | 0% | 1,395 | 3,183 | +128% | 0 | 0 | — |
case-22 | fail→pass | 9,875 | 2,187 | -78% | 1 | 1 | 0% | 1,700 | 2,907 | +71% | 0 | 0 | — |
case-23 | fail→pass | 8,021 | 4,768 | -41% | 1 | 1 | 0% | 1,158 | 3,585 | +210% | 0 | 0 | — |
case-24 | pass→pass | 15,140 | 4,046 | -73% | 1 | 1 | 0% | 2,108 | 3,361 | +59% | 0 | 0 | — |
case-25 | pass→pass | 6,559 | 3,163 | -52% | 1 | 1 | 0% | 1,137 | 3,098 | +172% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +80 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/21/2026 | +50% |
Other measured skills in the registry, with their headline benchmark lift.