13 languages
99.9% SLA
$0.002 / min
PALABRA API · SPEECH-TO-TEXT
EARLY ACCESS

Realtime Speech-to-Text

Native-speaker-level accuracy in 13 languages with consistently low latency. Every transcription is final — timestamped, exact, and ready to act on the moment it arrives over one WebSocket stream.
Trusted by top teams worldwide

Built for production. Certified for compliance.

Cloud, self-hosted, or on-premises.

ISO 27001
Certified infrastructure
GDPR
EU data processing, DPA ready
HIPAA
US healthcare data protection
Zero Training
Your data never trains our models
CAPABILITIES

Built for the parts of speech recognition that usually break

Digits get garbled, mixed languages fall apart, and agents wait out long silences before replying. Palabra's ASR is engineered around exactly these failure points.

STREAMING OUTPUT
final
0.3s – 1.2s
The quarterly numbers look strong,
final
1.2s – 2.1s
so we're raising
final
2.1s – 2.8s
end of turn
the forecast.
Accuracy & latency

High accuracy and low latency

Palabra delivers native-speaker-level accuracy across all supported languages while keeping recognition latency as low as possible. Every transcription the model streams is final, with precise timestamps

Alphanumerics

Robust alphanumeric recognition

Whether it is credit card information, a phone number, or a street address — everything is recognized accurately down to the last digit and character.

Alphanumerics
“Sure — the card ends in 4417, my number is +1 415 555 0142, and you can ship it to 830 Folsom St, Apt 12C,   San Francisco 94107.”
character-exact
cards · phones · addresses · IDs
END OF TURN
“…and that's everything I needed, thanks.”
Palabra · turn detected
silence timeout · still waiting
Turn detection

Instant turn detection

Palabra analyzes language-specific conversational patterns to detect when a speaker has finished — much faster than traditional silence-based detection. Your agent starts answering instead of waiting out the pause.

Language switching

Automatic language switching

Mixed-language audio is not a problem. Palabra automatically detects language changes and transcribes each segment in the correct language.

CODE-SWITCHED SPEECH
EN
Could you check my delivery date?
ES
El paquete tenía que llegar ayer.
EN
The tracking still says in transit.
Each segment is tagged with its detected language in the response.

TRANSCRIPTION LANGUAGES

English
German
Spanish
French
Italian
Dutch
Portuguese
Russian
Hindi
Arabic
Korean
Japanese
BUILT-IN TRANSLATION

Transcription and translation in one stream

Add translate_languages=es,de,fr to the same WebSocket and every segment comes back translated into each target language by Palabra's ultra-precise, context-aware translation model — no second vendor, no extra round-trip.

← TRANSCRIPTION (FINAL)
{
  "message_type": "transcription",
  "transcription_id": "a1b2c3d4",
  "language": "en",
  "is_eos": true,
  "segment": { "text": "Hello world, how are you?",
    "start_time": 0.32, "end_time": 1.84 }
}
→ TRANSLATED_TRANSCRIPTION
{
  "message_type": "translated_transcription",
  "transcription_id": "a1b2c3d4",
  "language": "es",
  "is_eos": true,
  "segment": { "text": "Hola mundo, ¿cómo estás?",
    "start_time": 0.32, "end_time": 1.84 }
}
DEVELOPER EXPERIENCE

Stream audio in. Get structured text back.

One WebSocket connection: push raw audio frames, receive incremental JSON transcriptions. No callbacks to poll, no jobs to manage

quick_start.py · pip install palabra-ai
import asyncio
from palabra_ai import Palabra, SttTranscript

async def main():
    palabra = Palabra()

    async with palabra.stt(language="en") as stt:

        async def feed():
            # any audio source: PCM s16le, 16 kHz,
~320 ms chunks
            while chunk := await audio_buffer.get():
                await stt.send_audio(chunk)

        feeder = asyncio.create_task(feed())

        async for event in stt:
            if isinstance(event, SttTranscript):
                print(event)

        await feeder

asyncio.run(main())
message · JSON
{
  "message_type": "transcription",
  "transcription_id": "a1b2c3d4",
  "language": "en",
  "is_eos": true,
  "segment": {
    "text": "Hello world, how are you?",
    "start_time": 0.32,
    "end_time": 1.84
  }
}
WebSocket streaming
Final transcriptions only
Segment timestamps
PCM — signed · unsigned · float (le/be)
G.711 — μ-law · A-law
Filler filter
Python client

Sign up and get $50 in credits

Competitive and transparent pricing

$0.002
/ minute
One flat rate, metered per minute of audio you transcribe. That's $0.12 for a full hour of speech.
rate
Pay for what you process
Billed on audio minutes streamed through the API — no seats, no platform fee.
langs
Same price in every language
All 13 supported languages, including automatic language switching, at one rate.
volume
Questions or high volume?
Talk to us — we'll help you plan capacity and costs.

Where teams put it to work

Voice agents
Instant turn detection and low-latency final transcriptions keep the agent responsive instead of waiting out silences.
Contact centers
Order numbers, card endings, and addresses captured character-exact — over telephony audio (G.711) too.
Media & live captions
Stream live audio and get timed, final segments ready for subtitles — translated in the same stream if you need them.
Meetings & notetakers
Automatic language switching keeps mixed-language calls readable; timestamps make notes easy to align.

FAQ

Which languages are supported?

The API transcribes 13 languages: English, Spanish, German, French, Italian, Dutch, Portuguese, Russian, Arabic, Hindi, Chinese, Japanese, and Korean. Source language detection defaults to auto, and mixed-language audio is switched automatically mid-stream.

What audio formats can I send?

Raw PCM in signed (pcm_s8 / s16 / s24 / s32), unsigned (pcm_u8 / u16 / u24 / u32), and float (pcm_f32 / f64) variants, little- or big-endian, plus companded G.711 (mulaw and alaw) for telephony. Chunks of ~320 ms are recommended.

How does the streaming API work?

Exchange your API credentials for a short-lived session token, open one WebSocket, and push raw audio frames. You receive JSON transcriptions as speech is recognized — every one of them final, with start and end timestamps per segment, so there are no provisional results to reconcile.

Is the real-time speech translation truly instant?

Yes. Palabra provides simultaneous two-way automatic translation with less than one second of latency. This ensures conversations flow smoothly, making it a true instant translator.

Can I get translations in the same stream?

Yes. Pass translate_languages=es,de,fr when connecting and every segment is also returned as a translated_transcription message per target language — translated by Palabra's context-aware model and correlated by transcription_id.

Is my audio stored?

No. Audio is encrypted in transit and processed entirely in memory — it is not stored on our servers and not used to train models.

How do I get access?

The realtime Speech-to-Text API is in early access. Contact us to request access, or start with the documentation — a Python client and a complete streaming example are ready to go.

How much does it cost?

$0.002 per minute of audio, metered on what you actually process — that's $0.12 per hour of speech.