🎁 New Sign up free, 10 calls on us. Up to $1, no card needed.

Google TTS Chirp 3 HD vs Google TTS Neural2

vs

Which one, when — curated verdict, not a benchmark table

google-tts-neural2 is 1.9x cheaper ($16 per million characters against $30) and supports SSML outright, where google-tts-chirp3-hd lists it as preview — but neural2 does not stream and publishes a much shorter locale list, 17 locales with named voice ids. Both take 5000 bytes per request and expose numeric voice parameters. Pick google-tts-neural2 for SSML-driven batch work in a covered locale, google-tts-chirp3-hd for streaming and locale breadth.

Pricing

Google TTS Chirp 3 HD Google TTS Neural2 Δ
Per 1M characters $30 $16 1.9×

Rates from the live catalog at build time; each model page carries the current card.

Where they sit — price per 1M characters across all 7 text-to-speech models on this billing unit (log scale)

Capabilities

Google TTS Chirp 3 HD Google TTS Neural2
Streaming yes no
SSML preview supported
Billing unit character character

Specs

Google TTS Chirp 3 HD Google TTS Neural2
Input modalities text text
Output modalities audio audio
Request limit 5000 bytes 5000 bytes
Voices Voices are named after stars and published with a gender: Achernar, Achird, Algenib, Algieba, Alnilam, Aoede, Autonoe, Callirrhoe, Charon, Despina, Enceladus, Erinome, Fenrir, Gacrux, Iapetus, Kore, Laomedeia, Leda, Orus, Pulcherrima, Puck, Rasalgethi, Sadachbia, Sadaltager, Schedar, Sulafat, Umbriel, Vindemiatrix, Zephyr and Zubenelgenubi. A locale prefix forms the id, e.g. en-US-Chirp3-HD-Charon. Google describes the set as 30 distinct styles across many languages. Voice ids follow the locale-plus-letter pattern (en-US-Neural2-F, ja-JP-Neural2-B). Google's comparison table lists Neural2 as general purpose, generally available, controllable via SSML and not streaming-capable, and the docs state the voices are based on the same technology used to create a Custom Voice, letting anyone use Custom Voice technology without training their own.
Languages ar-XA, bn-IN, bg-BG, yue-HK, hr-HR, cs-CZ, da-DK, nl-BE, nl-NL, en-AU, en-IN, en-GB, en-US, et-EE, fi-FI, fr-CA, fr-FR, de-DE, el-GR, gu-IN, he-IL, hi-IN, hu-HU, id-ID, it-IT, ja-JP, kn-IN, ko-KR, lv-LV, lt-LT, ml-IN, cmn-CN, mr-IN, nb-NO, pl-PL, pt-BR, pa-IN, ro-RO, ru-RU, sr-RS, sk-SK, sl-SI, es-ES, es-US, sw-KE, sv-SE, ta-IN, te-IN, th-TH, tr-TR, uk-UA, ur-IN and vi-VN. A much shorter locale list than Standard. Neural2 voice ids are published for da-DK, de-DE, en-AU, en-GB, en-IN, en-US, es-ES, es-US, fr-CA, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR, th-TH and vi-VN. Google notes Neural2 voices are available on global and single-region endpoints.
Voice control
  • Voice controls are Preview: pace via speaking_rate 0.25 to 2.0
  • pause tags [pause short], [pause long] and [pause] accepted only in the markup input field, never in text, and the model may disregard tags placed unnaturally
  • custom pronunciations in IPA or X-SAMPA
  • SSML support is Preview and synchronous-only, unsupported for streaming requests, with unlisted tags ignored and say-as interpret-as=expletive or bleep not supported
  • AudioConfig controls: speakingRate 0.25 to 2.0 (1.0 native)
  • pitch -20.0 to 20.0 semitones
  • volumeGainDb -96.0 to 16.0
  • effectsProfileId device profiles for wearable, handset, headphone, small and medium Bluetooth speaker, large home entertainment, large automotive and telephony playback
  • SSML tags include speak, break, say-as, sub, mark, prosody, emphasis, phoneme, voice and lang
Limits

Content limit of 5,000 total bytes per synthesize request. Default response format LINEAR16

streaming supports ALAW, MULAW, OGG_OPUS and PCM, batch adds MP3, so MP3 is not available on the streaming path. The only voice type Google's comparison table marks as streaming-capable. Generally available in the global, us and eu endpoints plus asia-southeast1, europe-west2 and asia-northeast1, but out of scope for regionalization and data residency. Billed per character including spaces and newlines, with all SSML tags except <mark> counted.

Content limit of 5,000 total bytes per synthesize request. Output LINEAR16 (with a WAV header), MP3 at 32 kbps, OGG_OPUS, or G.711 MULAW and ALAW

optional sampleRateHertz resamples and fails the request if the rate is unsupported for the encoding. Not offered over streaming synthesis. Billed per character including spaces and newlines, with all SSML tags except <mark> counted

the multi-byte-counts-once note applies to Standard and WaveNet only.

Specs are transcribed from each vendor’s documentation; a row a vendor does not publish is left out rather than inferred. Full sources: Google TTS Chirp 3 HD · Google TTS Neural2

Switch between them with one line

Both ids are in every tab below — the highlighted pair of lines is the only edit. Same endpoint, same key, same request shape.

from openai import OpenAI

client = OpenAI(
    base_url="https://synthorai.io/v1",
    api_key="sk-syn-...",
)

resp = client.audio.transcriptions.create(
    model="google-tts-chirp3-hd",
    # model="google-tts-neural2",  # uncomment this line, comment the one above
    file=open("meeting.mp3", "rb"),
    language="en",
)
print(resp.text)

Get an API key →

FAQ

Which is cheaper, Google TTS Chirp 3 HD or Google TTS Neural2?

Google TTS Neural2 is cheaper on per 1m characters ($16 vs $30, 1.9× apart). Other rows may point the other way — the table above carries the full card, and real cost depends on your mix.

Can I A/B test Google TTS Chirp 3 HD against Google TTS Neural2 without two integrations?

Yes. Both are served through the same OpenAI-compatible endpoint with one API key — switching is a one-line model-string change, so you can route a fraction of traffic to each and compare bills directly.

How is text-to-speech billed?

Per character of input text, with a per-request character ceiling shown in the spec table. Long scripts must be chunked across requests on either model.

Related comparisons