Back to Blog

LecSync vs Google Cloud Speech-to-Text Streaming: Translation, Speakers and Price for Live Apps

LecSync Team

If you are building live captions, a meeting client or a lecture app, Google Cloud Speech-to-Text streaming is usually the first API on the shortlist. It is a mature service with volume discounts and a long language list. The questions that decide the build are narrower: can one stream run for a full meeting, do live results carry speaker labels, how does translation get into the pipeline, and what does the bill look like once all of that is added?

This article compares Google Cloud Speech-to-Text streaming with the LecSync Realtime Speech API on exactly those points. Google facts come from its public docs and pricing pages, read on October 7, 2026 (the docs pages show "Last updated 2026-09-30 UTC"). LecSync facts come from the LecSync developers page and the API docs.

Scope: this covers Cloud Speech-to-Text (V2, with Chirp 3 and Chirp 2). Google's Gemini Live API is a separate product and is not part of this comparison.

The short answer

For a live app that needs captions, a translation track and speaker labels together, LecSync returns all three over one WebSocket for $0.006 per audio minute. On Google you combine Speech-to-Text with Cloud Translation, restart streams every five minutes, and check which model supports live diarization. Google is the stronger pick for transcription-only workloads at very high volume, or when you need an SLA and Google Cloud regions.

Side-by-side facts (checked October 7, 2026)

LecSync Realtime Speech APIGoogle Cloud Speech-to-Text (V2 streaming)
TransportOne WebSocket per stream, opened after a connect POSTgRPC StreamingRecognize
Max length of one streamNo per-stream duration limit listed; expiresAt is only the deadline for opening the socket"A stream can remain open for up to 5 minutes"
Audio per messageUp to 64 KB per frame (PCM 16 kHz mono)25 KB per request in the stream
Live speaker labelsEvery final segment carries speaker when speakers: trueChirp 3: diarization "available only in Speech.BatchRecognize". Chirp 2: diarization not supported
Live translationBuilt in, one language pair per stream, direction decided per segmentChirp 2 speech translation (pairs not symmetrical), or a separate Cloud Translation call per line
Live summarydigest.update minutes on the same connectionNot part of Speech-to-Text
Price$0.006/min, all features includedV2 standard recognition $0.016/min (0–500k min/month), falling to $0.004/min above 2M min
Billing granularityFractions of a second, no roundingEach request rounded up to the nearest second
SLANone today ("best-effort availability")Google publishes an SLA for the service

Sources: Google Speech-to-Text pricing, V2 quotas and limits, Chirp 3 model page, Chirp 2 model page, LecSync pricing docs, LecSync connect docs.

The five-minute stream limit

Google's V2 limits page says a stream can stay open for up to 5 minutes, and audio must be sent at roughly real-time speed. For anything longer, Google points you to its endless streaming tutorial. The sample code there sets STREAMING_LIMIT = 290000, about 4 minutes 50 seconds, then opens a new stream and carries on.

That works, but your client now owns a few jobs:

  • Restart the stream on a timer, before Google closes it.
  • Bridge the audio around the restart so words at the seam are not cut in half.
  • Shift each new stream's time offsets so they line up with the full recording.

With that sample's limit, a one-hour meeting means about a dozen restarts.

LecSync's connect docs list no per-stream duration limit. A stream ends when you close it or the network drops. If it does drop, there is no resume: you call connect again and a new stream starts, with segmentId and startMs counting from zero. The disconnects guide spells that out, and with store: true you get one recording per connection. So reconnect handling still exists, but only for real network failures, not on a fixed clock.

Speaker labels in a live stream

This is where the model choice matters most on Google.

Google's general diarization guide says diarization works with both recognize and streaming. The model pages are stricter. Chirp 3's feature table lists speaker diarization as "Available only in Speech.BatchRecognize", and its language section says it supports diarization "only in BatchRecognize and Recognize". Chirp 2's page lists diarization as "Not supported".

In practice: if you want Google's newest model for live captions, you get speaker labels after the call, not during it. To get live labels you would pick an older model where streaming diarization is available, and check the locations API for your language. When it works, Google puts a speakerLabel on each word.

LecSync labels at the segment level. With transcribe.speakers: true, every transcript.final message carries a speaker field next to startMs and endMs. Partial results have no speaker, because attribution is settled when the segment is. Google's word-level labels are finer-grained; LecSync's are simpler to render as "who said this line". The speakers docs show the message shape.

Getting a translation track

Google gives you two routes.

Chirp 2 speech translation. Chirp 2 can translate as it transcribes, using a TranslationConfig with a target language. The docs warn that language support "is not symmetrical": translating A to B does not mean B to A is available. Google's translation sample uses the synchronous Recognize method. Chirp 2 also does not support diarization, so you give up live speaker labels on that route.

Speech-to-Text plus Cloud Translation. Transcribe with any model, then send each final line to Cloud Translation. NMT text translation costs $20 per million characters after the first 500,000 characters each month, which are free. Your code pairs each translation back to its source line and timestamp. We covered the trade-offs of that design in built-in translation vs a DIY STT + MT pipeline.

LecSync takes one language pair per stream, such as ["en", "zh"]. Each segment is translated in whichever direction it needs, so a two-way conversation and a one-way lecture use the same config. A third language that shows up mid-session is translated into the second language of the pair. Translation arrives on the same socket as translation.final, tied to the same segmentId and time range. LecSync says translation adds about 88 ms to the first token. See the translation docs.

What 1,000 hours a month costs

Assume 1,000 hours of live audio a month (60,000 minutes), one translation language, and captions plus a translated track. For translated text we use our own rough figure of about 50,000 characters per hour of speech (roughly 150 words a minute). It is an estimate, so change it to match your content.

LecSyncGoogle STT V2 + Cloud Translation NMT
TranscriptionIncluded60,000 × $0.016 = $960
Translation (1 language)Included(50M − 0.5M free) chars × $20/M = $990
Speaker labelsIncludedNo separate line on the pricing page; depends on model (see above)
Live summaryIncludedNot offered in Speech-to-Text
Monthly total60,000 × $0.006 = $360About $1,950
Per hour$0.36About $1.95

The Google numbers are list prices from its pricing pages. The same page lists 1-year and 3-year savings plans with lower rates ($0.0144 and $0.0128 per minute in the first tier), and Google offers custom quotes through sales. LecSync has one public price with no tiers.

Where Google is the better choice

  • Transcription only, at very high volume. Above 2,000,000 minutes a month, Google's V2 standard rate is $0.004 per minute, below LecSync's $0.006. If you don't need translation, speakers or minutes, that matters.
  • Batch jobs. Google's dynamic batch recognition is $0.003 per minute. For recordings you process later, not live, that is cheaper than any realtime price here.
  • An SLA and Google Cloud regions. Google publishes an SLA. LecSync states there is no SLA today. If your contract needs one, or your data has to stay in a Google Cloud region (Chirp 3 runs in the us and eu multi-regions), Google wins.
  • Word-level detail. Google can return word-level timestamps and, on supported models, word-level speaker labels. LecSync works at the segment level.

Which one fits

  • Live captions with a translation track: LecSync. One socket, one price, no separate translation bill.
  • Meeting or classroom app that needs who-said-what during the session: LecSync, unless you are happy to pick an older Google model and verify live diarization for each language.
  • Long sessions with minimal client code: LecSync. On Google you rebuild the stream about every five minutes.
  • Huge transcription-only volume, or SLA and GCP residency requirements: Google Cloud Speech-to-Text.

FAQ

How long can a Google Speech-to-Text stream stay open?

Up to 5 minutes, according to Google's V2 quotas page, and audio has to arrive at about real-time speed. For longer audio Google suggests its endless streaming pattern, which closes and reopens the stream just before the limit. A one-hour session needs about a dozen restarts.

Does Google Chirp 3 return speaker labels in streaming?

No, not according to the Chirp 3 model page checked on October 7, 2026. It lists speaker diarization as available only in BatchRecognize, and Chirp 2 does not support diarization at all. Google's general diarization guide mentions streaming support, so check the locations API for your model and language.

Can Google Cloud Speech-to-Text translate live audio?

Chirp 2 documents speech translation to a target language, with pairs that are not symmetrical and no diarization. The common alternative is to transcribe with Speech-to-Text and translate each line through Cloud Translation, which costs $20 per million characters after 500,000 free characters a month.

How much does LecSync's realtime API cost compared with Google?

LecSync charges $0.006 per audio minute with transcription, translation, speaker labels, timestamps and live minutes included. Google's V2 standard streaming rate is $0.016 per minute for the first 500,000 minutes a month, before translation. For 1,000 hours with one translation language, that is $360 against roughly $1,950.

Is LecSync cheaper than Google for transcription only?

Up to 500,000 minutes a month, yes: $0.006 against $0.016 per minute at list price. Google's rate falls in steps, to $0.004 above 2,000,000 minutes a month, which is cheaper than LecSync. Google's batch tier is also cheaper, at $0.003 per minute, for audio that does not need live results.

What happens when a LecSync stream disconnects?

The stream ends. There is no resume. Your client calls connect again, a new stream starts, and segmentId and timestamps count from zero on it. The text you already received stays with you. With storage on, each connection produces its own recording, so you order them by creation time.

The short version

Google Cloud Speech-to-Text streaming is a solid transcription engine with deep volume discounts. For a live product that needs translation and speaker labels during the session, you assemble that yourself: five-minute stream restarts, a separate translation bill, and a model choice that decides whether live diarization exists at all.

LecSync puts captions, translation, speaker labels, timestamps and live minutes on one WebSocket for $0.006 a minute. If that matches your app, start with the LecSync Realtime Speech API and the quickstart docs. For the full multi-vendor price breakdown, see what 1,000 hours of realtime STT really costs, and for the speaker and timestamp message format, see building a meeting client on the LecSync Realtime API.

LecSync vs Google Cloud Speech-to-Text Streaming (2026) | LecSync