SF VertexAI Veo 3.1 Text to Video
Veo 3.1 video with native audio — the one thing open source still can't do
- video
If you've ever burned a Sunday trying to get a local video model to generate synced dialogue and sound effects, you know the gap Veo 3.1 fills. It's the model that generates audio natively - not a separate step, not an overlay, but dialogue and SFX baked into the generation - and there's still no open-source equivalent. SF VertexAI Veo 3.1 Text to Video is the node that puts that capability inside ComfyUI.
The honest framing: this is a premium cloud model, priced like one, and it's Google's rules all the way down. You reach for it when you specifically need Veo's motion quality or that native audio, and you're fine paying per generation. For free, open-source video, Wan and friends remain the answer - the community's been measuring the gap and it's still there.
It's part of the comfyui-stillfront pack, under Stillfront/VertexAI.
How it works
The node drives Veo 3.1 through Vertex AI (google-genai), authenticating with your standard Google Application Default Credentials. It submits your prompt plus configuration, waits for the generation, and returns the result as a ComfyUI VIDEO type - the native video object, not just a URL string - so you can preview it right in the graph. If you set output_gcs_uri, it instead saves the clip to your own GCS bucket and downloads it back for preview. The default is the simpler path: leave the GCS field empty and get the video returned directly.
The inputs that matter
model- four variants. The-001ones are the current standard;-fast-variants trade quality for speed, and there are-previewbuilds of both. Default isveo-3.1-generate-001.prompt- describe scene, style, camera movement, and any audio you want. Theenhance_prompttoggle (default on) runs Google's prompt rewriter over it first.duration_seconds- 4, 6, or 8 seconds. 8 is the max; Veo clips are short.aspect_ratio-16:9or9:16.resolution-1080por720p.generate_audio- default off. Flip it on and you get Veo 3.1's native audio, which is genuinely the headline feature. It's also where a chunk of the cost goes, so leave it off for draft passes.- Optional:
output_gcs_uri,person_generation(Google's policy dial), andseed.
Output is a single video (VIDEO) you can wire into a preview or a video-save node.
Installing it
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/comfyui-stillfront
cd comfyui-stillfront
pip install -r requirements.txt
Restart, then set up Google Cloud: enable Vertex AI on your project, gcloud auth application-default login, and fill in project_id (or export GOOGLE_CLOUD_PROJECT). The google-cloud-storage dependency in requirements.txt is what powers the GCS path if you use it.
Troubleshooting
- "No valid video returned." Usual suspects: the safety filter caught your prompt (Google is strict on people and IP), or you're on a
-previewmodel that hit a quota. Restate the prompt; drop to a standard-001model. - Auth errors. ADC not configured or the API not enabled -
gcloud auth application-default loginand check the project. - Takes a while. Veo generations are minutes, not seconds. There's no progress bar to watch; leave it running.
- Audio came out wrong or missing. Check
generate_audiois actually on, and know that short clips with dense sound directions will lose detail - keep the audio description in the prompt simple.
One more cost note: 8-second 1080p Veo clips with audio are the expensive end of this pack's offerings. Do your drafts at 720p, 4 seconds, no audio. Lock the good one, then spend.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| project_id | STRING | Google Cloud project ID | |
| location | STRING | us-central1 | Google Cloud region (e.g., us-central1) |
| prompt | STRING | Text description of the video to generate | |
| model | COMBO | veo-3.1-generate-001 | Veo 3.1 model variant (fast=quicker generation, standard=higher quality) |
| aspect_ratio | COMBO | 16:9 | Video aspect ratio |
| resolution | COMBO | 1080p | Video resolution |
| duration_seconds | COMBO | 8 | Video duration in seconds |
| output_gcs_uriopt | STRING | GCS URI to save output video (e.g., gs://bucket/path/). Leave empty for direct return. | |
| enhance_promptopt | BOOLEAN | true | Use prompt rewriter to enhance the prompt |
| generate_audioopt | BOOLEAN | false | Generate audio for the video |
| person_generationopt | COMBO | allow_adult | Person generation policy |
| seedopt | INT | 3867161520–4294967295 | Random seed for reproducible results |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |