Remix.run Logo
Launch HN: Speko (YC S26) – OpenRouter for Voice AI(speko.ai)
80 points by abdik 6 hours ago | 50 comments

Hi HN! I'm Bek, founder of Speko, a platform that finds an optimal combination of speech-to-text, LLM, and text-to-speech models, given your constraints, among all our public benchmarked options, and tells you why.

Demo: https://www.youtube.com/watch?v=no2LY2gRh-c

Typical production voice agent is an ensemble of three models: STT, an LLM, and TTS.

Each of those layers offers a dozen credible vendors, and each month there are new models on the market. Almost everyone evaluates once, picks a stack of their choice, and never rechecks because switching from a vendor to another involves yet another integration and arguments about the numbers.

The result is that you use voice agents running last quarter's models while better and cheaper options are available.

Before founding Speko, I spent four years as cofounder and CTO building voice agents for enterprises across Asia in 10+ languages. Each time a new speech model would arrive, we repeated the same ritual: hire native-speaking raters, benchmark it against our existing stack, and update production if it improved. Speko turns this process into an API. A team running thousands of calls a day told us: "we can literally go to this dashboard, switch the model, and it will do it for us."

How it works: you send a request with your optimization criteria (accuracy, latency, cost or balanced), language and region. The router filters to models which we measured for the given combination of constraints, benchmarks them, selects the winner, and returns a response with headers containing provider, model names, and the scores. The gateway prefetches signed session plans, so a new session dials the provider straight from memory; no control-plane round trip while a caller waits.

Failover happens only during connection setup stage: if the provider refuses the connection attempt, we start connecting to the runners-up.

Some of the customer stories: one founder came to us not knowing what to pick at all: he gave us his use case and now routes everything through the platform. A property management AI runs LiveKit in Python and had not updated STT or TTS since launch: they did not know their STT had high error rates on their calls, better options existed, and swapping always looked like an R&D project. One team did not know which models to pick for Spanish. A medical team did not know which STT handles medical vocabulary best. In every case we helped find the right stack from the benchmarks, and now they route through us.

The measuring part is public: we pass the same inputs to every model in one region in different dated runs and we publish the boards, including those where our selections perform worse than alternatives. A launch demo answers which 30-second clip sounds better; production asks which model survives minute eight, so we test spontaneous speech, money and dates, ten-minute takes, and the rankings change. We trained an automatic scorer for TTS naturalness on our blind head-to-head listening votes; on providers it has never seen a vote for, it picks the same winner our raters do about as often as raters agree with each other.

We don't train or sell models ourselves, that's precisely how we keep our rankings impartial.

We also open sourced the gateway for teams who want to avoid an extra network hop on the audio path and don't want to share keys with our cloud (https://github.com/SpekoAI/gateway, MIT): one Go binary, which is running as a sidecar in your agent's container, speaks one local protocol over Unix socket, pins provider hosts and attaches your keys. In BYOK mode it doesn't communicate with us at all.

Notice that the anonymous, content-free telemetry is enabled by default, and one env var disables it.

Cost: the gateway and BYOK setup will be free forever, we charge for the hosted router and managed keys with consolidated billing. Since we started the batch in late June, external usage has grown about 25 percent per week on average, front-loaded toward the launch weeks.

I would love feedback from the community: how do you pick speech models now, and what makes you trust the third-party benchmark?

https://speko.ai/

MikhailTal 6 hours ago | parent | next [-]

What is the difference with Livekit Gateway? https://livekit.com/blog/introducing-livekit-inference

Or even something more managed like Vapi?

abdik 5 hours ago | parent [-]

The main difference from gateway is we help with picking the right voice stack, which seems to be a big problem for users: we benchmark the models continuously and route based on those measurements for your language and constraints, and the boards are public at https://benchmarks.speko.ai/

Second difference is where it runs. Our gateway is open source and runs in your own container, including with self-hosted livekit/pipecat. You get a temporary token before the session starts, and then your orchestration connects directly to the provider.

Vapi is a managed platform: you use their infra to use the voice AI stack. In our case you can have your own infra and switch between models, so you are not locked into a vendor. A lot of teams we talk to build their own infra as they mature, and that is where the router comes handy.

aleksiy123 an hour ago | parent | prev | next [-]

Is this only for realtime tts use cases?

Wondering if you also support some non realtime models.

abdik 12 minutes ago | parent [-]

yes, it does support, when you are creating an api key, you can point out narration or transcription use case, then you will be able to see. let me know how it goes or what use cases are thinking of for non-realtime models?

webo 5 hours ago | parent | prev | next [-]

The benchmarks page seems interesting and something I can use to help make an informed decision. Can you talk about how you're measuring some of these? I imagine it needs to involve some human input.

https://benchmarks.speko.ai/turntaking

abdik 2 hours ago | parent [-]

Turn-taking specifically does not need a listening panel, but it is measured mechanically. 200+ real human clips, and we score end-vs-wait decisions: did the model decide the caller finished speaking, or just paused mid-thought. The best detector gets 94.0% of those right; a plain VAD silence timer gets 46.9%. Results are published here: https://benchmarks.speko.ai/turntaking

You are right about human input for naturalness, that one we did not automate away with yet. We run blind A/B listening rounds with native speakers.

spmartin823 5 hours ago | parent | prev | next [-]

Does this include a turn taking API? It'd be great to have one API that could do "Conversation in a box". One of the biggest annoyances is daisy chaining many models together for turn taking, dumb models for immediate responses, with smarter models returning and taking over after.

abdik 3 hours ago | parent [-]

Yes, on the hosted side (agents platform): full sessions come with VAD and turn-taking handled - we set them up and tune them for your use case, so that is the closest thing to conversation in a box. If you run your own orchestration, the gateway is just the routing layer and turn-taking stays in your framework - in our own stack we run Pipecat's Smart Turn in-process and tune the commit threshold on real calls. We also share our benchmarks here: https://benchmarks.speko.ai/turntaking

On fast dumb models answering while a smarter one takes over: we are experimenting with exactly that split - a small fast model holds the conversation while a larger one works behind it. Today it runs as two pinned routes, not one packaged API. Most turns in a phone call do not need a frontier model, and the fastest models on our LLM board are all small, so this is where routing earns its keep. We publish benchmarks on LLMs here: https://benchmarks.speko.ai/llm

maho 4 hours ago | parent | prev | next [-]

Which model best allows me to transcribe speech that uses a lot of domain-specific terms? For example, when I say "Claude Code", it often gets transcribed as "Cloud Code", and I have to go back and edit or do a second pass with a traditional LLM (which can introduce additional errors).

jeffrwells 4 hours ago | parent | next [-]

I’ve had a lot of success in the past with fine tuning STT using synthetic data.

I was doing it for Veterinary (ambient recording -> SOAP notes) which has tons of complex domain-specific language AND it is critically important to get right.

“CPR” transcribing as “see pee are” just doesn’t cut it in that industry.

abdik 2 hours ago | parent | next [-]

Synthetic-data fine-tuning is the other credible answer to domain vocabulary. Curious whether you re-benchmark the fine-tune when new base models ship?

cootsnuck 3 hours ago | parent | prev [-]

Which open source STT models have you had success with for fine tuning?

abdik 2 hours ago | parent | prev | next [-]

agree with omneity here. Whisper's initial-prompt trick is exactly that, and several hosted vendors have equivalents (custom vocabulary / keyword prompting). Domain vocabulary is where STT models separate the most in our runs. for example, on medical terms the field spreads from about 8% to 19% WER across models: https://benchmarks.speko.ai/blog/what-a-voice-agent-hears.

We often find that models that wins on clean speech are often not the one that wins on your terms, so test with your own vocabulary rather than a headline number.

omneity 4 hours ago | parent | prev | next [-]

Good old Whisper allows you to enter a prompt with domain specific terms and it will use them for transcription.

k9294 3 hours ago | parent | prev [-]

Gemini 3 flash series is quite good, also elevenlabs scribe v2

bewareofscams 5 hours ago | parent | prev | next [-]

Seems to be useless, the state of art for all categories is local on-device, voice model vendors are just rent seekers for those who know no better.

robbomacrae 2 hours ago | parent | next [-]

Open weight models are getting really good. Specko appears to be focussing on paid services which has its role to play but I have a benchmark in development for Open Weight models here if that is helpful: https://orcabot.com/benchmarks/open-weight-tts.

Still shoring up the details but you can try a sample of all the options and see how they compare in terms of model size, peak RSS, real time factor etc.

echelon 4 hours ago | parent | prev | next [-]

You're not the customer. This is for people building products that support thousands of users.

Linux on desktop is great for you, but this is a tool for people delivering solutions.

owebmaster 4 hours ago | parent | next [-]

> You're not the customer. This is for people building products that support thousands of users.

That's their dream. Your dream. The AI dream. Many would say it's AI psychosis.

bewareofscams 4 hours ago | parent | prev [-]

1) what if I told you I can leverage local models and serve thousands of users?

2) you know nothing about me

3) of course I am not! I do know better

sparkling 5 hours ago | parent | prev [-]

Just canceled my WisprFlow subscription a few days ago to switch to a open source, free, local alternative. In my case handy.computer with the Cohere model.

alabhyajindal 5 hours ago | parent [-]

You mean handy.computer?

sparkling 3 hours ago | parent [-]

Yup, my bad, fixed.

cjjuice 4 hours ago | parent | prev | next [-]

I made a completely free 100% on device translation app https://apps.apple.com/us/app/arda-translate/id6778970560 and hard to image a world where TTS and STT will not be done locally in the future

abdik 2 hours ago | parent [-]

cool app, and agreed that on-device keeps eating the single-user cases, we are seeing dictation and translation are exactly where local models shine. We benchmark the open models on the same boards as the hosted ones, but there are still a few: https://benchmarks.speko.ai/open.

production phone agents are a different shape today: the call terminates server-side, three models plus turn-taking under one latency budget, and per-language quality still swings a lot from our tests

Tepix 4 hours ago | parent | prev | next [-]

Ever since OpenAI launched their improved voice mode, I've been looking for a capable LLM with builtin voice-in and -out. Llama 4 was supposed to be it but turned out to be a dud. I haven't followed the topic closely lately, did I miss anything? Are there capable (!) open weights omni models that allow low latency voice chat? If so, what software do you use them with? Can you use a PWA on your phone? WebRTC? WebTransport?

abdik 2 hours ago | parent | next [-]

Actually, we measured exactly this recently. The strongest open-weights speech-to-speech model we have run is NVIDIA's NemotronLabs VoiceChat 11B - no provider serves it, so we hosted it ourselves and ran the same scripted call every model on our board gets. Remarkably stable, 40+ sessions with zero errors - but by turn thirteen it was answering nine tries in ten without saying a word. Stable engine, but degrades on long calls.

Wider picture: we rebuilt the speech-to-speech test around a hard 20-turn concierge call, and today only the closed models finish it cleanly. Board: https://benchmarks.speko.ai/s2s

shared some write-up: https://benchmarks.speko.ai/blog/can-s2s-replace-the-cascade

And jakswa's Gemma datapoint matches what we measure, the fastest rows on our LLM board are the small models like Gemma 4 is performing incredibly well for voice agents

mlhpdx 3 hours ago | parent | prev | next [-]

FWIW, I have seen a couple phone apps using react native and sending directly to backends using a socket. Seems to avoid some overhead but I don’t have first hand experience with the client side.

jakswa 3 hours ago | parent | prev [-]

Gemma 4 (both E4B + 12B) performed really well as ears+brains. I mostly comment because I too am always scouting for a nice local all-in-one model.

cnqso 4 hours ago | parent | prev | next [-]

What does WER/CER stand for? I see it as some kind of key metric under each model but not clear what it's measuring

purrcat259 3 hours ago | parent | next [-]

Word Error Rate and Character Error Rate.

Common metrics to track how coarsely or finely accurate voice AI is

abdik 2 hours ago | parent | prev [-]

What purrcat259 said, and I think that the page should explain it, we will add a tooltip.

for some languages CER is more relevant than WER. Thai and Mandarin have no word boundaries, so we score them by character, and Japanese gets a reading-based CER.

dayvough 5 hours ago | parent | prev | next [-]

Looks awesome, can't wait to try it for some Filipino workflows when it's available!

abdik 5 hours ago | parent [-]

thanks! actually, we have the filipino already, can you check out and share your feedback?

dhruv3006 6 hours ago | parent | prev | next [-]

the concept is interesting I must say - good luck !

abdik 6 hours ago | parent [-]

Thank you!

IgorBlink 4 hours ago | parent | prev | next [-]

any progress with on-device models??

robbomacrae 2 hours ago | parent | next [-]

Most of the open weight models are can be used on device: https://orcabot.com/benchmarks/open-weight-tts

abdik 3 hours ago | parent | prev [-]

there is a good progress on on-devise models, but not ready for production yet to fit in devices. But as soon as there is are some good results, we are going to benchmark them and put in https://benchmarks.speko.ai/

IgorBlink 2 hours ago | parent [-]

cool!

narrationbox 5 hours ago | parent | prev | next [-]

> Typical production voice agent is an ensemble of three models: STT, an LLM, and TTS.

To use a claudism, I would like to push back on this. The industry is very much moving towards one-model-does-all end to end trained similar to LLMs and VLMs. Mostly for latency reasons and partially because the results for the end to end trained models are just so much better than those using three pieces architectures.

I think most of the value prop is in automatic evals, not routing specifically. A better pitch for you would be "the LM Arena of voice models" rather than comparing yourself to openrouter because the value add is rather questionable. For TTS specifically, the current SOTA for production systems are all using prompt based voice gen i.e. instead of having 10 different Tacotron models trained on 10 different models, these days it's all a single large model and the "style" is a prompt in the system prompt. The input is usually something like

  <System prompt>
  Speak in a deep smooth voice similar to a documentary narrator
  </System prompt>
  <Text to Narrate>
  Speko is the ultimate evaluation platform for voice agents. We do automatic  evals.
  </Text to Narrate>
It's the same for voice cloning too, you just pass the reference speech as an input file for all generations. A lot of systems don't have any separate style vector extraction step or model-specific fine-tuning anymore.

So something like OpenRouter for voices offer questionable value given that stakeholders usually make this sort of decisions once at the start of the project. On the other hand if you can offer automatic evals and figure out which prompts give the most similar results across different voice providers, that would offer a lot more value. It would be nice to be able to switch from e.g. Grok voice agents to ChatGPT voice agents knowing that the output style won't change too much. There are many companies now with evals as a core business model: LM Arena, Artificial Analysis, Prompt foo (before they got acquired and pivoted to security only) so many take a look at them.

Source: we have been building TTS systems for over a decade too https://narrationbox.com

abdik 5 hours ago | parent | next [-]

Fair pushback. On end to end: we measure those too, same methodology: https://benchmarks.speko.ai/s2s. If the single models win, we route to them the same way, so we do not care which architecture (s2s or cascaded) wins. For now, what we see in production so far is that most teams still want to control each piece: swap the STT for medical vocabulary, keep the LLM, keep the voice.

On "promptfoo of voice models": that is closer to how it started. At my last company we ran these evals manually, we would even hire native-speaking raters, benchmark, switch if it wins. The evals are the value, agreed. The routing is what makes them actionable: teams told us swapping always looked like an R&D project, so scores alone did not change what ran in production.

On prompt-based voice gen and reference-audio cloning: agreed, that is what we see too. It makes continuous measurement more important: the same style prompt behaves differently per language and per content type, so we rank the voices themselves, tagged by use case: https://benchmarks.speko.ai/tts-voices

cootsnuck 3 hours ago | parent | prev | next [-]

> The industry is very much moving towards one-model-does-all end to end trained

I've worked with hundreds of enterprises on voice AI and voice agent solutions. In my experience, this isn't true. Or rather I should say, the people actually paying for voice agents (i.e enterprises) are not moving towards STS solutions in a meaningful way. The composability, observability, and reliability profile of STS systems is not amenable to enterprise criteria. Not to mention costs.

abdik 2 hours ago | parent [-]

exactly, we see the same thing, around 95% cases are still cascaded, even tho STS has been improving a lot

vdev123 5 hours ago | parent | prev [-]

totally agree with this

greyb 6 hours ago | parent | prev | next [-]

The link, since it seems to be missing?

https://speko.ai/

abdik 6 hours ago | parent [-]

Yes, i added it. that's the right link.

greyb 5 hours ago | parent [-]

Awesome. Thanks for sharing!

yujonglee 2 hours ago | parent | prev [-]

cool! we have something similar implemented: https://github.com/fastrepl/anarlog/tree/main/crates/owhispe...

abdik 2 hours ago | parent [-]

looks cool, checking it out!