Coda v2: Getting every word right

Megan Dorcey
Megan Dorcey
October 23, 2026

Pneumonia. It reached us as a customer escalation: a healthcare agent saying an illness incorrectly. For a caller, a mangled word is worse than an awkward pause. The agent sounds like it doesn't know where it works, and caller trust erodes quickly. Something healthcare agents can’t afford to lose.

On Coda v1, a builder had two ways to fix a word like that, and neither was ideal. They could respell it in their own text and hope some spelling landed close, but a respelling is still spelling, so some sounds stay out of reach. Or they could ask us for a rewrite rule, which applied to every customer on the platform and only shipped with a release.

With our release of Coda v2, we’re handing that control to you. 

Send the pronunciation with the request

Now you can add a ‘customLexicon’ entry to any Coda v2 request. Each entry maps a spelling to its phonemes in X-SAMPA, a standard keyboard-friendly version of the International Phonetic Alphabet:

"customLexicon": [  {    "spelling": "pneumonia",    "pronunciation": "n @ . \" m oU . n j @"  }]

The entry applies to every occurrence of the word, in your requests only, up to 500 entries per request. It works in English, German, French, Spanish, Italian, and Portuguese. 

And you don’t need to be a linguist to build your custom phoneme lexicon. In the Rime dashboard, you can simply record yourself speaking a difficult word, and we’ll give you the phonemic spelling in a few seconds. 

The phonemic spelling of pneumonia, a commonly mis-pronounced word for TTS.

The word changes, but the meaning persists

Coda learned meaning, rhythm, and intonation from text, so we left the rest of the text alone. In training, one word per sentence was swapped for its phonemes; the rest stayed as written. At inference it works the same way: only the words you specify in your custom lexicon are read as phonemes, and everything around them is read the way Coda has always read text. This way, you can guarantee that difficult words are pronounced correctly, and things like emotion and meaning aren’t lost for the utterance as a whole.

We tested it on hard English words that weren’t in any of Coda’s training dictionaries. Spelled out, it got 24.5% of the sounds wrong. Given phonemes, that dropped to 16.7%. 

What else is new in Coda v2?

Coda now speaks 10 languages, with 313 voices to choose from. Teaching it phonemes didn’t cost anything in quality, either. Compared with the last version, each voice sounds a little closer to the person it’s built on, and a little more natural.

A new API for Coda and Mist

Coda v2 comes with new endpoints. Each model now has its own address, coda.api.rime.ai and mist.api.rime.ai, and each one serves HTTP, WebSockets, and gRPC from the same host. Requests go automatically to our us-east or us-west region, whichever is closer to you, so your audio has less distance to cover before it reaches the call.

Some of Coda v2 only works on these endpoints. Streaming text input lets you send text as your LLM writes it, and Coda holds one tone across the whole response. Word-level timestamps tell you when each word plays, matched to the text you actually sent rather than the normalized version Coda reads aloud. When a caller interrupts, your agent knows which words they heard.

Switching means changing one URL. Keep your API key and your message format, and point requests at https://coda.api.rime.ai/ or wss://coda.api.rime.ai/ws. If you use LiveKit’s Rime plugin, set the new WebSocket URL and the model to coda.

And what we shipped since beta

A lot has happened since we first launched Coda in May. We rebuilt how Coda reads numbers, codes, dates, and money in every language it speaks. A reference number like 8163 is read digit by digit, the way a person would say it, and email addresses and confirmation codes come out as connected letters. Coda v2 takes English a step further, with a new normalizer that reads acronyms, codes, and numbers based on the sentence around them.

With streaming text input, a multi-sentence response holds one tone from start to finish. A single request can now run up to 180 seconds of audio. And under heavy load, Coda rejects extra requests right away with a clear error instead of queueing them, so one traffic spike doesn’t slow down everyone else’s calls.

Coda v2 is live today. If you already use Coda, you’re on v2 today. Switch to the new endpoint to get timestamps, streaming input, and regional routing. New to Rime? Sign up and try it for free.

‍