Send audio, take back translated voice.
In real time, and into the pipeline you already have. The same engine that runs a conference, reachable over the protocols your stack already speaks.
A real installation
Santiago de Compostela Cathedral: a device in the room, the audio going out to the engine and the translation arriving on the listener's phone. Over five hours at a stretch, in one of the most hostile acoustic environments there is.
How it fits
Three pieces, and the middle one is not yours to worry about.
In
Your audio
A continuous stream over SRT, or WebRTC when what is speaking is a phone already signed in.
Engine
One listen, every language
The audio is heard once and every target language comes out of that listen. None of them waits behind another.
Out
Voice and text
Translated voice into your own WebRTC over WHIP, and one HTTP POST per translated sentence for the text.
Fourteen languages in parallel on a single node, end to end in 812 ms.
Where the audio goes in.
A room being spoken in does not send files: it sends a continuous stream, and it has to keep sending through a network that drops packets. That is what SRT is there for.
- Your device is the caller. Creating the room hands you the whole URL already assembled — host, port, device id and passphrase.
- Opus in an MPEG-TS container, mono, 16 kHz, around 24 kbps. That is speech, not music, and the extra bandwidth buys nothing you would hear.
- The passphrase is per device and not optional: a connection that is not encrypted is refused whatever else it gets right. Ten characters is SRT's own floor, not ours.
- Send continuously, with discontinuous transmission off. A stream that stops during silence clips the beginning of the sentence that restarts it.
The connection URL, as the room hands it to you
srt://HOST:8890?streamid=DEVICE_ID&mode=caller&latency=120&passphrase=SECRETThe pipeline our own appliance runs
The shortest way to test yours is to run the same thing. A line-level capture often arrives quieter than a microphone: if yours is faint, add a volume stage rather than pushing the encoder harder.
gst-launch-1.0 -e \
alsasrc device=plughw:CODEC,0 ! audioconvert ! audioresample ! \
audio/x-raw,rate=16000,channels=1 ! \
opusenc bitrate=24000 ! mpegtsmux ! \
srtsink uri="srt://HOST:8890?streamid=DEVICE_ID&mode=caller&latency=120&passphrase=SECRET"The other way in is WebRTC. Pick it when what is speaking is a phone that is already signed in: there is nothing to install and nothing to authenticate with, so no credentials come back with the room.
And where it comes out.
If you already have WebRTC infrastructure — a video platform, an event app, a control room — you do not have to join a room of ours to get the translation. Give us a WHIP endpoint and we publish into it.
- Each target language is its own WHIP session. A WHIP endpoint is allowed to accept a single audio track and plenty do, so five languages in one session would arrive as one, with four silently missing.
- Put the language placeholder in the URL and each language gets its own path; leave it out and the language travels as a query parameter instead. Either way your side can tell them apart, which it has to.
- A token is sent as an Authorization Bearer header if you set one, and we delete the session resource when a talk ends, so nothing is left holding a connection.
- By default this is in addition to the room: your listeners keep working and your own stack gets the audio too. Make it the only destination and the room stops being used.
Both forms of the endpoint
delivery.whip.url = https://you.example.com/ingest/{lang}/whip → …/ingest/en/whip
delivery.whip.url = https://you.example.com/whip → …/whip?lang=enThe text travels separately, and that is not a detail
WHIP carries media and nothing else — there is no data channel in the protocol — so the subtitles cannot come inside the audio. Give us a URL and we POST one line per translated sentence, with the room, the segment, the language it came from and the language it went to. Anybody who builds this assuming the text arrives with the audio finds out on the day of the event.
Known to work as it is
These are the ones the specification names, not a wall of logos. For something that speaks RTMP or SRT downstream instead, MediaMTX in front of it bridges from WHIP without either of us writing code.
This is not the API reference, and the difference matters
They are two doors to the same engine, and going in through the wrong one costs a day. This one is for putting a media flow through it. The other is for building against it.
This page
You already have audio moving and you want the translation inside that movement. What you need is a port, a codec and a place to publish to.
The API reference
You are writing code: create rooms, upload a recording, ask for the result in the format you want, manage who may speak. Endpoint by endpoint, with examples that run as pasted.
Go to the referenceThe two meet in one place: the WHIP endpoint and the text URL are settings on a room, and a room is created through the API.
Latency end to end is 812 ms — the whole trip, from somebody speaking to being heard translated.
Fourteen languages come out of one listen to the audio, so the fourteenth costs what a fourteenth costs and not fourteen times the first.
Integrations and jobs: loose minutes
For broadcasting a room or processing files. No monthly fee: you buy minutes and they're spent as things get translated. You have twelve months to spend them, and it's the same engine and the same fourteen languages in every pack.
In accent, what is spoken
silence · the counter is stopped
they don’t add to the counter
An hour of meeting, 20 minutes of speech: 20 minutes counted.
€20+ VAT
A handful of events, or trying it on something real.
- 100 minutes
- of voice translated into one language
- €0.20 per minute
- no monthly fee, and twelve months to spend it
- —
- the reference price
- ≈ 1 service
- an hour each, 40 minutes of speech, four languages
- Fourteen languages
- out of the same audio, at the same time
€85+ VAT
A weekly service, and its whole season.
- 500 minutes
- of voice translated into one language
- €0.17 per minute
- no monthly fee, and twelve months to spend it
- −15%
- off the pay-as-you-go rate
- ≈ 6 services
- an hour each, 40 minutes of speech, four languages
- Fourteen languages
- out of the same audio, at the same time
€300+ VAT
Several rooms running every week.
- 2,000 minutes
- of voice translated into one language
- €0.15 per minute
- no monthly fee, and twelve months to spend it
- −25%
- off the pay-as-you-go rate
- ≈ 24 services
- an hour each, 40 minutes of speech, four languages
- Fourteen languages
- out of the same audio, at the same time
€675+ VAT
A venue that broadcasts most days.
- 5,000 minutes
- of voice translated into one language
- €0.135 per minute
- no monthly fee, and twelve months to spend it
- −32.5%
- off the pay-as-you-go rate
- ≈ 60 services
- an hour each, 40 minutes of speech, four languages
- Fourteen languages
- out of the same audio, at the same time
In every pack, without exception
- All fourteen languages, out of the same audio
- As many rooms as you want to create
- Recordings, documents and subtitles
- Full API access and your own keys
- An invoice per purchase, with your tax details
- Nothing recorded from a live room
Hands-on help is quoted separately
The minute pays for the engine, not for someone’s hours. Anything with one of us behind it is quoted:
- Getting started: wiring your SRT or WebRTC and reviewing your setup
- Being on the other end on the day of the event
- Custom development for whatever your flow needs
- Installing it inside your network
Or any amount you like
At €0.20 a minute, with no volume discount — that is what the packs are for. Anything between €10 and €5,000, and it lands in the account the moment the payment clears.
The first 30 minutes are on us
Save a card and they are in your account. Nothing is charged and the card page says €0 too — the card is there for the day you want to top up in one click, not to bill you quietly. They last three months: they are for trying it, not for keeping.
Talk to engineering
Four fields, and no question about monthly volume — at this point nobody knows it. Tell us what you have in front of you and somebody who has wired this before answers.
The words only used in your house
An organisation's own names — people, streets, references, job titles — are exactly what a general model has never heard, and where it fails: it swaps them for an ordinary word that sounds similar. Write them once and they stop failing. You write them in the room and they hold for all its meetings.
- It is a list, not training: you write it and it works from the first sentence.
- It collects nothing. Not your audio, not your text, not one second of anything.
- And it is included. Not an extra plan, not a line on the bill.