Dograh

Orpheus TTS for Voice Agents: What Emotion Tags Cost in Speed

Orpheus TTS for Voice Agents: What Emotion Tags Cost in Speed
TechnicalNovember 5, 2026·6 min read

Orpheus TTS for Voice Agents: What Emotion Tags Cost in Speed

Abhishek Kumar
Abhishek Kumar·Co-founder, Dograh AI

Co-founder of Dograh, building the future of open-source voice AI agents. Own your voice AI stack.

Orpheus 3B is an open voice model, Apache-2.0 on its card and built on Llama 3.2 3B, that takes emotion tags such as laugh and sigh. In our test of seven voices it was the runner-up on tricky text, at 0.54, but used about 18x more compute per clip than kokoro-82m. Use it where the tags earn that GPU cost.

Key Takeaways

  • orpheus-3b ranked second on tricky text and tied for best on phone numbers.
  • It used about 18x the compute per clip of kokoro-82m in our test.
  • Record the lines that need a laugh or warmth every time.

This post is part of our guide to open-source TTS models, where Orpheus 3B is the expressive pick and the heaviest of the seven models we tested. Below, we cover its emotion tags, our benchmark result, the serving cost, its license, and how it runs behind Dograh.

What Orpheus emotion tags do

Orpheus can laugh or sigh on cue when the text asks for it. Orpheus on GitHub lists eight tags you write into the text: <laugh>, <chuckle>, <sigh>, <cough>, <sniffle>, <groan>, <yawn> and <gasp>. It ships eight English voices, named tara, leah, jess, leo, dan, mia, zac and zoe.

On a live call, nobody types the text. The language model writes each reply, so a tag only reaches Orpheus if the language model has to write the tag into its reply. That means the prompt asks for tags and says when, for example a short chuckle when the caller shares good news and nothing during a complaint. Check on a test call that your voice server passes the tags through to the model, since some servers strip markup.

A caller shares good news. A language model writes a reply with a chuckle tag in it, a voice server passes it on, and Orpheus speaks the reply back to the caller with a short chuckle in the audio.
Your prompt decides when a tag appears, so name the moments that earn one and rule out the rest. A sigh at the wrong moment sounds sarcastic, and a laugh after 'your payment failed' loses the caller.

Tags can backfire. A sigh at the wrong moment sounds sarcastic, and a laugh after "your payment failed" loses the caller. Most support and sales calls need few tags or none. Our post on how to reduce robotic TTS in voice agents covers the text fixes that do more for naturalness than any tag.

How orpheus-3b did in our benchmark

Orpheus reads tricky text well, which matters more on a call than its laugh. In our TTS verbalization benchmark, seven open models read 1,080 sentences full of dates, prices, phone numbers and codes, and two independent speech recognizers transcribed what each said. orpheus-3b scored 0.54, second of the seven, behind kokoro-82m at 0.61.

By type of text, it was best of the seven on ordinals, at 0.97, and on plain numbers, at 0.82. It tied for best on phone numbers at 0.60 and read prices well at 0.88. Like every model in the test, it struggled with dates, at 0.20, and it scored 0.24 on addresses.

The test covered English only, with Orpheus as hosted on Replicate, and it did not use emotion tags. It scores whether the right words come out, not how expressive the voice sounds.

Dograh

Open Source Alternative to Vapi / Retell

Self-hosted voice agent platform — no per-minute fees

dograh-hq/dograh

Star on GitHub

The speed and serving cost of a 3B voice

Orpheus is a 3B language model that speaks, and you pay for that on every sentence. In our benchmark it needed 5.50 seconds of compute per clip, the most of the seven, against 0.31 seconds for kokoro-82m. That is a whole-clip figure on Replicate, not the wait before the first word, so it tells you how heavy Orpheus is to run rather than how long a caller waits.

For first audio, Canopy Labs, the team behind Orpheus, claims about 200 ms when streaming, and about 100 ms with input streaming. Getting there takes serving work. The model writes audio tokens that must be decoded through SNAC, its audio codec, and Trelis Research found that a stock vLLM setup produced wrong audio until it added that step.

How many calls one GPU carries depends on that work too. Baseten reported 7 real-time streams on half an H100 with its first build and 16 after tuning with TensorRT-LLM at FP8 precision.

In an engineering study by Silares, one H100 SXM at full precision served about 24 real-time connections at baseline and 216 after tuning, with a mean time to first byte of 540 ms and a p99 of 630 ms at 216. Both are tuned stacks measured their own way, so they are not comparable with each other or with our compute figure. Plan to measure on your own card.

License, weights and voices

The Orpheus model card lists the license as Apache-2.0 and the base model as Llama 3.2 3B Instruct. The weights are gated, so you accept the conditions on Hugging Face before you can download them. The card also prohibits impersonating someone without their consent.

Orpheus lists zero-shot voice cloning among its features, and the finetuned model's eight voices are English. Smaller sizes of 1B, 400M and 150M parameters are listed on its roadmap, which would cut the serving cost if they arrive.

Join the Dograh Community

Dograh is an OSS alternative to Vapi. Join our Slack community for queries, releases, best practices & community interactions.

Running Orpheus behind Dograh

Dograh orchestrates the call by running its flow, tools and telephony, and you choose the speech and language models as their own layer. A self-hosted voice runs through the Local Models (Speaches) option in the voice settings, which sends text to an OpenAI-compatible /v1/audio/speech endpoint and plays raw 24 kHz PCM.

Orpheus's own example writes 24 kHz audio into a WAV file, so the server in front of it must return the raw samples without the file wrapper. The OpenAI-compatible servers for Orpheus are community projects its maintainers say they cannot verify. Pick or write one that returns raw 24 kHz PCM from that endpoint, then run a test call with your setup before real callers hear it.

Once it runs, call traces show the voice time for each turn, so you can see what Orpheus adds against Kokoro on the same script. Our Kokoro TTS review covers the lighter default.

Lines that need warmth every time, such as a thank-you at the end of a call, are often better as pre-recorded clips of a real person, which skip the voice model and sound the same on every call.

Glossary

Emotion tag
A marker such as <laugh> or <sigh> written into the text that tells Orpheus to make that sound. On a call the language model must write it into its reply, so the prompt decides when tags appear.
SNAC
The audio codec Orpheus uses. The model writes SNAC tokens, which must be decoded into sound, and a serving setup that skips this step produces wrong audio.
Gated
Said of model files you can download only after accepting the publisher's conditions on Hugging Face. Orpheus's weights are gated, though its card lists Apache-2.0.
Compute per clip
In our benchmark, the time Replicate billed, at the median, to make one whole clip. orpheus-3b needed 5.50 seconds and kokoro-82m 0.31, which shows how heavy each is to run, not how long a caller waits.

Frequently Asked Questions

Get started with Dograh

Build, deploy, and scale AI agents with Dograh. Join the community of developers building the future.