Veo 3.1 Audio Generation API — Video with Synchronized AI Sound

Sep 5, 2026·8 min read

Your marketing team wants product demo videos with ambient sound and background music. Your current pipeline is three tools deep: generate video with Model A, generate audio with Model B, mux them together with ffmpeg, then fix the sync drift that appeared somewhere in the middle.

Veo 3.1, accessible via the GenRelay API, generates synchronized audio natively alongside the video — a single API call returns one .mp4 with both tracks embedded. This article explains what Veo 3.1 audio generation produces, how to request it, how to retrieve and use the output, and how pricing works compared to assembling audio in post.

What is Veo 3.1 audio generation?

Veo 3.1 audio generation is a capability of Google's Veo 3.1 model that produces ambient sound, environmental effects, and mood-appropriate background audio synchronized to the video content in a single inference pass. Unlike models that generate silent video and require separate audio processing, Veo 3.1 infers what audio would naturally accompany the scene described in your prompt and encodes it directly into the output file.

The audio is conditioned on both your text prompt and the generated video frames — the model "watches" the video it's generating and produces sound that matches the visual motion and scene. A prompt for "waves crashing on a rocky coastline" produces audio that tracks the rhythm of the waves in the generated footage, not generic ocean ambience.

As of September 2026, Veo 3.1 Lite is available on GenRelay under the model identifier veo-3.1-lite. Audio generation is enabled by setting "generate_audio": true in the request body.

What types of audio does Veo 3.1 generate?

Veo 3.1 generates diegetic and ambient audio — sound that emerges from the scene and its environment:

  • Environmental sounds: rainfall, wind, crowd noise, traffic, ocean waves, forest ambience
  • Object-triggered effects: footsteps, door mechanisms, pouring liquids, mechanical clicks, keyboard typing, tool sounds
  • Background music: light, mood-matched scoring — upbeat for dynamic scenes, calm for slower pacing
  • Human sounds: breathing, applause, general crowd reactions (but not intelligible speech from a transcript)

Audio fidelity tracks scene complexity. A close-up product shot on a plain background produces subtle ambient room tone; a bustling market scene produces layered, spatially-aware crowd audio.

What Veo 3.1 audio does not generate:
- Scripted voiceover or narration from a text transcript
- Licensed music tracks
- Specific audio from a reference clip

For scripted speech, use a TTS service and mux it in post. For licensed music, generate silent video and layer the licensed track separately. Both of those workflows work alongside Veo 3.1 — the audio Veo 3.1 generates can be discarded in ffmpeg post-processing if you only need the video track.

How do I request a video with audio via the GenRelay API?

Video generation on GenRelay is asynchronous. Submit a job, receive a job ID, poll until complete. To enable audio, include "generate_audio": true:

import requests
import time

API_KEY = "YOUR_GENRELAY_KEY"
BASE_URL = "https://genrelay.ai/v1"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

payload = {
    "model": "veo-3.1-lite",
    "prompt": "A barista pouring latte art in a sunlit café, close-up cinematic shot",
    "duration": 8,
    "resolution": "720p",
    "generate_audio": True
}

resp = requests.post(f"{BASE_URL}/videos/generations", headers=headers, json=payload)
resp.raise_for_status()

job = resp.json()
job_id = job["id"]
print(f"Job submitted: {job_id}")

The request returns immediately with a job ID and initial status of "pending". Audio-enabled jobs run approximately 20–40% longer than silent-video jobs because the model runs an additional conditioning pass to align the audio track to the generated frames.

How do I poll for completion and retrieve the output?

Poll the job status endpoint until "succeeded" or "failed":

def poll_video_job(job_id: str, interval: int = 12, timeout: int = 360) -> dict:
    deadline = time.time() + timeout
    while time.time() < deadline:
        resp = requests.get(
            f"{BASE_URL}/videos/generations/{job_id}",
            headers=headers
        )
        result = resp.json()
        status = result["status"]
        print(f"[{job_id}] status: {status}")
        if status == "succeeded":
            return result
        if status == "failed":
            raise RuntimeError(f"Job failed: {result.get('error', 'unknown error')}")
        time.sleep(interval)
    raise TimeoutError(f"Job {job_id} did not complete within {timeout}s")

result = poll_video_job(job_id)
video_url = result["output"]["url"]
print(f"Video with audio ready: {video_url}")

Recommended poll intervals for Veo 3.1 with audio enabled:

Resolution Duration Poll interval Timeout
720p ≤8s 12s 240s
1080p ≤8s 15s 360s
1080p HQ ≤8s 20s 480s

The output URL points to a standard .mp4 container with the video and audio tracks embedded. Default URL TTL is 24 hours — download and store to your own storage (S3 or GCS) before it expires. The cloud storage integration guide has a reusable async upload pattern that works with both image and video URLs.

What does Veo 3.1 audio generation cost?

Veo 3.1 Lite on GenRelay is billed per generation — not per second of output. Audio is included in the base price with no surcharge for enabling generate_audio:

Resolution Price per generation
720p $0.060
1080p $0.120
1080p (high quality) $0.180

Cost math for representative workloads:

Use case Resolution Clips Cost
Social media shorts (720p, with audio) 720p 20 $1.20
Product demo batch (1080p) 1080p 50 $6.00
Premium brand content 1080p HQ 10 $1.80
Monthly content pipeline 720p 200 $12.00

Compare this to assembling audio separately. A TTS service for narration costs $0.015–$0.030 per 1,000 characters. A background music generation API costs $0.05–$0.20 per clip. ffmpeg muxing is free but adds pipeline steps and latency. For workloads where ambient audio is acceptable, Veo 3.1's bundled audio eliminates those layers at no cost increase.

When should I use Veo 3.1 audio vs assembling audio separately?

Use Veo 3.1 native audio when:
- You need ambient, environmental, or scene-appropriate background audio
- You're generating marketing clips, product showcases, or atmospheric content
- You want the simplest pipeline — one request, one output file

Assemble audio separately when:
- You need scripted narration or exact dialogue: Veo 3.1 does not render intelligible speech from a transcript
- You require licensed music tracks with specific rights
- You're producing multilingual content: a single silent video can be paired with different TTS narration per locale without re-generating the video

The practical hybrid: generate the video with generate_audio: false (silent), add your TTS or licensed track in post, and optionally layer Veo 3.1's native ambient audio underneath at reduced volume. This approach lets you control each layer independently.

How does Veo 3.1 audio compare to other video APIs on GenRelay?

As of September 2026, Veo 3.1 is the only model on GenRelay that produces synchronized audio output:

Model Native audio Billing model Starting price
Veo 3.1 Lite Yes Per generation $0.060 / 720p
Grok Imagine 1.0 No Per second $0.010 / s
Grok Imagine 1.5 No Per second $0.022 / s
Gemini Omni Flash No Per generation $0.10 / 720p

For audio-free video at the lowest cost per second, Grok Imagine 1.0 at $0.010/s is the strongest option — see the Grok vs Veo video API comparison for a full cost breakdown across clip lengths. For a video model comparison across all four models, see the Veo 3 API pricing guide.

FAQ

Does Veo 3.1 generate intelligible speech from a prompt like "a narrator says hello"?
No. Veo 3.1 generates ambient and atmospheric audio. A prompt referencing speech may produce a voice-like sound texture, but not recognizable words. Use a TTS API (e.g., ElevenLabs, Google Cloud TTS) and mux the track into the silent video output for scripted dialogue.

Can I control audio volume, music style, or specific sound effects?
Not via explicit parameters as of September 2026. The audio output is conditioned entirely on your text prompt and the generated video. To bias the audio, include descriptive audio cues in the prompt — "quiet café ambience", "upbeat background music", "dramatic orchestral score" — rather than explicit parameter knobs.

Will enabling audio increase my generation time?
Yes, by roughly 20–40%. For a 720p 8-second clip, expect 40–120 seconds total vs 30–80 seconds without audio, depending on server load.

Can I extract just the audio from the output file?
Yes. The output is a standard .mp4 container. Use ffmpeg to demux: ffmpeg -i output.mp4 -vn -acodec copy audio.aac. The extracted audio is a standard AAC file usable in any downstream workflow.

Does generate_audio work with image-to-video (i2v) and reference-video (ref2v) modes?
Yes. Pass "generate_audio": true alongside your image_url (for i2v) or reference_video_url (for ref2v) parameters. The model infers audio from the generated motion output, not from the source media. See the Veo 3.1 API tutorial for the complete parameter reference across all three modes.

Next steps

Related posts

Join our DiscordVeo 3.1 Audio Generation API — Video with Synchronized AI Sound — GenRelay