Global Speech
379 voices online

Text to speech
for every language.
One GET request.

Neural voices in 70+ languages, streamed while they're still being generated. Your text and audio are never stored. Drop a URL into an <audio> tag and you're done.

3 ms to first byte MP3 · WAV output 0 B of your audio stored REST no SDK needed
zsh
$ curl "https://speech.global/v1/tts?text=Hola%20mundo&voice=es-MX-DaliaNeural" \
    -H "X-Api-Key: gs_live_…" -o hola.mp3

$ curl "https://speech.global/v1/tts?text=こんにちは&voice=ja-JP-NanamiNeural&stream=1" \
    -H "X-Api-Key: gs_live_…" | mpv -

✓ audio/mpeg · streamed · not stored · 412 ms
24 kHz · mono · 48 kbps
Español (MX) English (US) Português (BR) Français Deutsch 日本語 中文 हिन्दी Italiano العربية 한국어 Русский Türkçe Nederlands Polski Svenska Tiếng Việt ไทย Bahasa Indonesia עברית Ελληνικά Čeština Magyar Українська Română Dansk Suomi Norsk Català বাংলা தமிழ் Kiswahili فارسی اردو Filipino Afrikaans Español (MX) English (US) Português (BR) Français Deutsch 日本語 中文 हिन्दी Italiano العربية 한국어 Русский Türkçe Nederlands Polski Svenska Tiếng Việt ไทย Bahasa Indonesia עברית Ελληνικά Čeština Magyar Українська Română Dansk Suomi Norsk Català বাংলা தமிழ் Kiswahili فارسی اردو Filipino Afrikaans
Live demo

Hear it. No signup.

Type anything, pick a language. This hits the real /v1/tts pipeline and streams the result back.

High demand right now — here's a sample in this voice instead. Your own text will work again in a few seconds. Get an API key

Sample sentences are pre-rendered for instant playback. Anything you type is synthesized live and discarded.

Why

Built for shipping, not for demos.

Streams while it speaks

Chunked MP3 or WAV leaves the server as soon as the first sentence is synthesized. stream=1 and the browser plays it progressively — long texts start in milliseconds.

<audio autoplay src="{signedUrl}&stream=1">   // signed on your backend, no key in the page

Privacy by design

Your audio is generated in memory, piped to your client and gone. No buckets, no logs of your text, nothing to leak or subpoena. Only character counts reach your dashboard.

70+ languages

379 natural voices, male and female, regional accents included. Same endpoint, different voice id — localize your product in one line.

Automatic failover

Several synthesis engines sit behind every voice. If one degrades, the next takes over — same voice id, same language, no change on your side. You get an X-Fallback header; your users just hear speech.

Integrate in an afternoon

Plain HTTP from curl, a browser <audio> tag or any backend. API keys per project, usage dashboard, live playground and Swagger docs included.

API

Two endpoints. You already know them.

GET /v1/tts for URLs and audio tags, POST /v1/tts for long text. GET /v1/voices to browse.

curl "https://speech.global/v1/tts?text=Bom%20dia&voice=pt-BR-FranciscaNeural&format=wav" \
  -H "X-Api-Key: $KEY" -o bom-dia.wav

# browser-safe URL (no key inside, expires in 10 min)
curl -X POST "https://speech.global/v1/tts/sign" -H "X-Api-Key: $KEY" \
  -H "Content-Type: application/json" -d '{"text": "Bom dia", "voice": "pt-BR-FranciscaNeural"}'
const r = await fetch("https://speech.global/v1/tts", {
  method: "POST",
  headers: { "X-Api-Key": KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Guten Morgen", voice: "de-DE-KatjaNeural" }),
});
new Audio(URL.createObjectURL(await r.blob())).play();
import requests

r = requests.get("https://speech.global/v1/tts",
    params={"text": "नमस्ते दुनिया", "voice": "hi-IN-SwaraNeural", "stream": 1},
    headers={"X-Api-Key": KEY}, stream=True)

for chunk in r.iter_content(8192):
    player.write(chunk)   # plays as it arrives
// backend: sign once (key stays server-side)
const { url } = await fetch("https://speech.global/v1/tts/sign", {
  method: "POST", headers: { "X-Api-Key": KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ text: "Bonjour", voice: "fr-FR-DeniseNeural" }),
}).then(r => r.json());

// page: plays directly, expires in 10 min, valid only for that text
<audio controls src="${url}&stream=1"></audio>
rate=+20% · pitch=-5Hz
prosody controls
X-Engine · X-Voice · X-Fallback
response headers tell the truth
/reference guide · /docs Swagger
in your dashboard
Under the hood

Built to stay up.

Voice is on the critical path of your product. We treat it that way.

01

Multi-engine synthesis

Multiple neural engines behind one API. Each voice id maps to a primary engine and language-matched alternates, chosen for quality first.

02

Smart routing

Every engine is health-checked. A failing one is bypassed instantly and retried after a cooldown, so a bad minute upstream never becomes your outage.

03

Fully observable

X-Engine, X-Voice and X-Fallback on every response, plus per-key usage in the dashboard. No black boxes.

request(es-MX-DaliaNeural) → primary ✗ timeout → rerouted → alternate (es · female) ✓ 640 ms → X-Fallback: 1

Give your app a voice tonight.

One API key, every language you ship in.