<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6" -->

---
title: Build a live translation broadcast app with the Gemini...
description: A walkthrough demonstrates building a live translation broadcast app using Gemini's live translate model via the Gemini API, combined with LiveKit and deployed...
canonical: https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Build a live translation broadcast app with the Gemini Live API and LiveKit | daily.dev
og:description: A walkthrough demonstrates building a live translation broadcast app using Gemini's live translate model via the Gemini API, combined with LiveKit and deployed...
og:url: https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6
og:image: https://api.daily.dev/og/posts/3V9SUG8l6.png
og:image:alt: Build a live translation broadcast app with the Gemini Live API and LiveKit
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a live translation broadcast app with the Gemini Live API and LiveKit

**[Google for Developers](https://daily.dev/sources/googledevelopers)** · 1 min read · 0 upvotes · 0 comments

## Summary

A walkthrough demonstrates building a live translation broadcast app using Gemini's live translate model via the Gemini API, combined with LiveKit and deployed on Google Cloud Run. The app dynamically creates live translation sessions per requested language, reuses sessions for multiple listeners of the same language, and closes WebSocket connections when no listeners remain. Next.js deployed on Cloud Run enables long-running WebSocket connections, while WebRTC handles audio broadcast and data channels carry captions. The demo is open source and available on the Google Gemini GitHub account.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=Z8ycfJosB-o>

## Questions this post answers

### How can I broadcast live translated audio to multiple listeners using the Gemini Live API?

Set up one Gemini live translate session per requested language, and subscribe additional listeners of the same language to that existing session instead of creating a new one. When the last listener for a language disconnects, close that session's WebSocket. Use WebRTC to broadcast the translated audio and WebRTC data channels to send synchronized captions.

_Developers building real-time translation features can find similar implementation walkthroughs on daily.dev._

### How do I run long-lived WebSocket connections with Next.js on Google Cloud Run?

Deploying a Next.js application to Google Cloud Run supports long-running WebSocket connections, which is what enables persistent live translation sessions to stay open while listeners join and leave. This setup pairs Cloud Run's request handling with WebSocket sessions rather than short-lived serverless functions.

_Track deployment patterns like this for Next.js and Cloud Run on daily.dev._

## Similar posts on daily.dev

- [Fluid, natural voice translation with Gemini 3.5 Live Translate](https://daily.dev/posts/fluid-natural-voice-translation-with-gemini-3-5-live-translate-egnwzzctw) · DeepMind · 0 upvotes · 0 comments
- [Real-Time AI Translation over MoQ](https://daily.dev/posts/real-time-ai-translation-over-moq-qsydteobk) · Software Mansion · 0 upvotes · 0 comments
- [How to use Gemini Live API Native Audio in Vertex AI](https://daily.dev/posts/how-to-use-gemini-live-api-native-audio-in-vertex-ai-j3hrh6va0) · Google Cloud · 0 upvotes · 0 comments

---

Tags: [#nextjs](https://daily.dev/tags/nextjs), [#gcp](https://daily.dev/tags/gcp), [#webrtc](https://daily.dev/tags/webrtc)

[View this post on daily.dev](https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Build a live translation broadcast app with the Gemini Live API and LiveKit","url":"https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6"},"datePublished":"2026-08-18T16:18:49.714Z","dateModified":"2026-08-18T16:19:10.088Z","description":"A walkthrough demonstrates building a live translation broadcast app using Gemini's live translate model via the Gemini API, combined with LiveKit and deployed...","image":"https://i.ytimg.com/vi/Z8ycfJosB-o/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/Z8ycfJosB-o/sddefault.jpg","isAccessibleForFree":true,"articleSection":"Google for Developers","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Google for Developers","logo":"https://media.daily.dev/image/upload/s--jj3nxRoG--/f_auto/v1725035497/logos/googledevelopers","url":"https://daily.dev/sources/googledevelopers"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"nextjs,gcp,webrtc","timeRequired":"PT1M","video":{"@type":"VideoObject","name":"Build a live translation broadcast app with the Gemini Live API and LiveKit","description":"A walkthrough demonstrates building a live translation broadcast app using Gemini's live translate model via the Gemini API, combined with LiveKit and deployed...","thumbnailUrl":"https://i.ytimg.com/vi/Z8ycfJosB-o/sddefault.jpg","uploadDate":"2026-08-18T16:18:49.714Z","duration":"PT1M","url":"https://api.daily.dev/r/3V9SUG8l6","embedUrl":"https://www.youtube.com/embed/Z8ycfJosB-o"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Google for Developers","item":"https://daily.dev/sources/googledevelopers"},{"@type":"ListItem","position":3,"name":"Build a live translation broadcast app with the Gemini Live API and LiveKit"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/build-a-live-translation-broadcast-app-with-the-gemini-live-api-and-livekit-3v9sug8l6#faq","mainEntity":[{"@type":"Question","name":"How can I broadcast live translated audio to multiple listeners using the Gemini Live API?","acceptedAnswer":{"@type":"Answer","text":"Set up one Gemini live translate session per requested language, and subscribe additional listeners of the same language to that existing session instead of creating a new one. When the last listener for a language disconnects, close that session's WebSocket. Use WebRTC to broadcast the translated audio and WebRTC data channels to send synchronized captions. Developers building real-time translation features can find similar implementation walkthroughs on daily.dev."}},{"@type":"Question","name":"How do I run long-lived WebSocket connections with Next.js on Google Cloud Run?","acceptedAnswer":{"@type":"Answer","text":"Deploying a Next.js application to Google Cloud Run supports long-running WebSocket connections, which is what enables persistent live translation sessions to stay open while listeners join and leave. This setup pairs Cloud Run's request handling with WebSocket sessions rather than short-lived serverless functions. Track deployment patterns like this for Next.js and Cloud Run on daily.dev."}}]}
```

