Skip to main content
Glama

Lip-sync Video

xbrush_video_lip_sync

Sync a face video or animated portrait to speech audio or built-in TTS. Submits asynchronous lip-sync generation for talking-head videos or talking photos.

Instructions

Sync a face to speech: either a face VIDEO (pixverse-lipsync, infinite-talk) or a still portrait PHOTO animated as a talking head (fabric-1.0, fabric-1.0-fast). Speech comes from audio_url, or from built-in TTS via text + voice_id. Submits async — lip-sync generation can take 30s to several minutes. Poll with xbrush_get_request.

Args: video_url (string): Face video URL — video-driven models. Provide this OR image_url. image_url (string): Still portrait URL — talking photo (fabric-1.0/-fast). audio_url (string): Audio URL to drive the mouth movement. Or use text + voice_id. text (string): Text to speak via built-in TTS (with voice_id from xbrush_list_voices). voice_id (string): TTS voice for text. duration (number, optional): Output seconds (1-60). resolution (string, optional): "480p" or "720p" (720p costs more). model (string, optional): Lip-sync model ID; which inputs are required is model-specific.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNoText to speak via built-in TTS instead of audio_url (use with voice_id; see xbrush_list_voices).
modelNoLip-sync model ID: pixverse-lipsync / infinite-talk (video input), fabric-1.0 / fabric-1.0-fast (still-photo input, 'talking photo'). Defaults to the server's default model.
durationNoOutput duration in seconds (1-60). Model default if omitted.
voice_idNoVoice for built-in TTS when using text (from xbrush_list_voices).
audio_urlNoURL of the speech audio to lip-sync. Alternative: text + voice_id (built-in TTS).
image_urlNoURL of a still portrait photo to animate — talking photo (fabric-1.0/-fast). Provide video_url OR image_url.
video_urlNoURL of the source face video (video-driven models). Provide video_url OR image_url.
resolutionNoOutput resolution tier — currently "480p" or "720p" (higher costs more; e.g. fabric-1.0 480p 0.104 vs 720p 0.195 credits/sec). Server-validated.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses crucial behavioral traits not captured by the generic annotations: 'Submits async — lip-sync generation can take 30s to several minutes' and directs users to poll with xbrush_get_request. It also surfaces model-specific input requirements and resolution cost implications, adding real operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The introductory paragraph is tightly written and front-loads the core purpose and async behavior. However, the following Args block repeats the input schema's property descriptions almost verbatim for all eight parameters, making the overall description longer than necessary despite being well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with eight parameters, multiple input alternatives, and asynchronous behavior, the description covers a great deal: input modes, speech sources, polling, cost tiers, and model-specific caveats. It stops short of stating explicit mutual-exclusion rules (e.g., 'exactly one of video_url/image_url required') and omits any output/return format, though the lack of an output schema lowers that burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already describes each parameter in detail, including the video/image OR constraint and model groupings. The Args section in the description largely duplicates these schema descriptions, contributing little new parameter-level meaning beyond the minor note that required inputs are model-specific.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Sync a face to speech' and immediately distinguishes the two input modes: face video (pixverse-lipsync, infinite-talk) vs. still portrait (fabric-1.0/-fast). It also names speech sources (audio_url or built-in TTS), making the tool's scope unmistakable and distinct from siblings like xbrush_video_generate or xbrush_tts_generate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear when-to-use guidance by explaining the video vs. photo branches, the audio vs. TTS branches, and the model-specific input requirements. It also advises polling with xbrush_get_request. However, it does not explicitly mention alternative sibling tools or state when not to use this tool, so it lacks full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lweight/xbrush-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server