360 Secure SkillHub
360 安全技能中心

Talking Avatar

核心功能是将肖像、注册头像或现有视频,通过文本转语音(可选语音类型、语言)或上传音频实现精准唇同步,生成说话人视频,支持背景替换、字幕添加,适配不同平台分辨率。典型场景包括制作解说视频、品牌发言人内容、给现有视频重新配音、多语言内容生成。输入需提供人像/原视频、脚本或音频,可选语音、背景等参数;输出为异步生成的视频文件。

runware
热度 9.17
最近更新 2026-07-18 23:06:12
分类:创作依赖:第三方 API应用场景:视频编辑 / 品牌素材 / 文案创作

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add talking-avatar
Metadata
name
talking-avatar
description
Make a person, portrait, or avatar talk on camera. Use when the user says "make this photo talk", "talking head video", "lip-sync this to my audio", "turn my script into a presenter", "avatar reads this text", "sync this video to a new voiceover", or wants a spokesperson, explainer, or presenter driven from a script or audio file. For a full creator-style ad built around the talking head, use ugc-ad. For only the spoken audio with no video, use voiceover.

Talking avatar

Drive a talking-head video from a still portrait or a registered avatar. Two ways in: write a script and let the model speak it (text-to-speech), or hand the model your own audio and it lip-syncs the face to it. The output is a video of someone delivering your words. Use this for presenters, explainers, spokespeople, and re-voicing footage. For a full ad or a standalone voice track, compose with the sibling skills below.

Inputs to collect

  • The face. A portrait image of the person, or a registered avatar ID for catalog-based models. (Ask only if none provided.)
  • The words. Either a script (you generate the voice) or an audio file (you supply the voice). One or the other, not both.
  • Voice if going the script route: which TTS voice reads it, plus optional target language.
  • Where it plays: orientation and resolution for the target platform (16:9 for web/YouTube, 9:16 for Reels/TikTok/Shorts).
  • Optional: a background to composite behind the speaker, and whether to burn in captions.

Models

Confirm the live model + its schema via runware-models + runware-run before calling. Never hardcode a stale choice. All carry the io:audio-to-video capability.

Portrait / avatar driven (a still image or registered look becomes the speaker):

  • HeyGen Avatar V (heygen:avatar@5): registered-avatar presenter with the richest composition controls (background, framing, captions, multilingual TTS). Best general pick for a polished spokesperson.
  • OmniHuman-1.5 (bytedance:5@2): image + audio, strong expressive full-body motion from a single portrait.
  • KlingAI Avatar 2.0 (klingai:avatar@2.0-standard): expressive avatar video from image + audio.

Lip-sync onto existing footage (re-voice a person already on camera):

  • sync-3 (sync:3@0): full-scene lip sync with obstruction handling. Accepts a script or audio.
  • lipsync-2-pro (sync:lipsync-2-pro@1): high-resolution diffusion lip-sync editing up to 4K.
  • PixVerse LipSync (pixverse:lipsync@1): realistic lip sync from audio onto any reference video.

Workflow

These are video tasks, so they run asynchronously.

  1. Pick the model + path. Portrait/avatar to a talking head: HeyGen / OmniHuman / Kling. Re-syncing existing footage: sync-3 / lipsync-2-pro / PixVerse. Resolve the schema (runware-run) and confirm the exact inputs field names before calling.
  2. Choose exactly one drive mode:
    • TTS path: set speech.text (the script) and speech.voice. The model generates the voice.
    • Audio path: set inputs.audio (a public URL or an uploaded asset UUID). The model extracts phonemes and animates the mouth to match.
    • Sending both errors. Not every model exposes speech, so on those use the audio path.
  3. Provide the face. Upload the portrait into the image field (inputs.image), pass a catalog inputs.avatar ID where the model uses one, or for lip-sync pass the source footage (inputs.video / inputs.referenceVideos).
  4. Compose for the platform (HeyGen): set width/height for the orientation, optionally inputs.background + settings.removeBackground to replace the scene, settings.fit to resolve aspect mismatch, settings.caption to burn in subtitles.
  5. Run async and poll. Submit videoInference, get a taskUUID, poll getResponse until terminal. Read the result from videoURL.

Technique

  • The face and the voice are independent. Pick the avatar/portrait and the voice separately. Lip sync adapts to whatever face you pair the audio with. A masculine voice on a feminine avatar will sync correctly but reads as a jarring mismatch, so pair them deliberately.
  • TTS path for iterating on copy. Two requests with different speech.text give two videos in minutes, and speech.language localizes the same voice across locales (BCP 47 codes like en-US, es-ES). This is the cheapest way to A/B copy or fan a script out across languages. Translate, don't transliterate. The language code alone won't fix awkward source copy.
  • Audio path for brand voices. When you already have the exact delivery (a recording, a voice clone, a separate TTS pass), feed it as inputs.audio and let the lip sync wrap it. You give up the TTS tuning knobs on this path, so shape the voice upstream instead.
  • Lock the avatar and voice before iterating. Both are visible-in-the-output decisions. Test the pairing on a short 10-second script first, then send the full read once it feels right.
  • Background and framing are where it reads as production. Most of the polish lives around the speaker, not in the face. settings.removeBackground only matters paired with a replacement (settings.backgroundColor hex, or an image in inputs.background). Alone it falls back to the source environment. Match the background image's aspect to the output canvas to avoid crop or letterbox.
  • Pick orientation before the look. A wide-framed avatar forced into a 9:16 canvas needs fit: cover and still looks awkward. For mobile-first output, choose a look that frames vertically. cover fills and crops, contain letterboxes, and omitting fit lets the server choose.

Fill this in before building the request:

Drive mode (pick ONE):
  [ ] TTS    -> speech.text = "<script>", speech.voice = "<voice ID>"  (no inputs.audio)
  [ ] Audio  -> inputs.audio = "<URL or UUID>"                          (no speech block)
Face: avatar = "<catalog ID>"  | portrait = "<image>"  | lip-sync source video = "<video>"
Orientation + resolution: <16:9 or 9:16> @ <720p / 1080p / 4K>
Background: <none / backgroundColor #hex / inputs.background image>  (+ removeBackground if replacing)
Fit: <cover / contain / omit>   Captions: <on / off>

For full worked requests covering each drive path, load references/examples.md.

Parameters that matter

  • One of speech or inputs.audio, never both. speech.text + speech.voice are required together on the TTS path.
  • speech.speed (HeyGen 0.5 to 1.5, default 1.0), speech.pitch (-50 to +50, default 0, keep adjustments small), speech.volume (0.0 to 1.0). TTS-path only.
  • speech.language: a BCP 47 locale that adapts the voice's pronunciation to the target language.
  • inputs.image (portrait), inputs.avatar (catalog ID, validated against an enum on avatar models), inputs.video / inputs.referenceVideos (lip-sync source), inputs.audio (URL or UUID).
  • width/height: HeyGen outputs fixed 16:9 or 9:16 resolutions (720p / 1080p / 4K). 1080p is the production default, 720p for previews.
  • settings.removeBackground, settings.backgroundColor, inputs.background, settings.fit (cover/contain), settings.caption: HeyGen composition controls. Burned-in captions are permanent and use a fixed style.
  • Confirm exact field names and ranges against the live schema (runware-run). They vary across these models. Never guess.

Quality bar

  • Lip sync tracks the audio cleanly, with no drift or mouth artifacts across the clip.
  • Exactly one drive mode was sent (script or audio), so the request validated.
  • Orientation and resolution match the destination platform, and fit resolves any aspect mismatch without ugly letterboxing.
  • If a background was replaced, removeBackground ran with a real replacement and the background aspect matches the canvas.
  • No fabricated endorsements or on-screen claims. Only use copy the user supplied.

Related skills

runware-run, runware-models, runware-prompting; voiceover (generate or clone the audio you feed in), ugc-ad (wrap the talking head into a full ad), character-consistency (keep the same presenter across videos).