speko.ai

Launch HN: Speko (YC S26) – OpenRouter for Voice AI

abdik · 118 points · 69 comments · 8月17日 · Open original

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/

Comments

5 preview comments · loading full thread
noagogo8月19日

Two things bit me when I was choosing a voice stack, and I don't see either as an axis in your benchmarks. First: whether a model is "suitable for realtime" turned out to be a property of the transport, not of the model. I had written one TTS off as too slow based on the vendor's own guidance, then measured it again over a streaming path and got about 0.9s where the non-streaming call had taken 5s. Same model, same provider. If a benchmark is run over one transport, a model can look disqualified when it's actually fine for the way you'd ship it. Second: non-English breakage doesn't show up in aggregate quality numbers. The speed-optimised tiers - the flash/turbo class - were fine in English and fell apart in Japanese. Not "slightly worse": confidently wrong words that changed what the sentence meant. What made that expensive is that the vendor's own docs said their turbo tier was equivalent to their flash tier. That's true in English and wasn't true in the language I was shipping in, so the documentation actively pointed me the wrong way. Both of those mean the thing I'd actually pay a routing layer for is per-language and per-transport measurements, rather than one quality/latency/cost point per model. "Best TTS under 300ms" has a different answer in English than in Japanese, and I couldn't get that out of any vendor's published numbers. So: are your benchmarks per-language, and do you measure over the transport people actually ship on? If yes, that's a bigger deal than the routing itself for anyone shipping outside English.

hirak108月18日

The piece I'd want to see in the constraint solver is effective cost rather than list price. On the LLM leg alone, current 5.6 pricing splits at 272K input tokens with the long band at exactly 2x, and cached input runs 90% below standard input, so two stacks with identical list prices can differ several-fold depending on how much of the prompt is a stable prefix. Does the optimizer model cache-hit rate and context distribution, or does it score on list rates?

modgate8月20日

Routing makes even more sense for voice than text, but the constraint space is trickier: latency budget (round-trip vs streaming), WER on accented speech, and TTS naturalness all trade off non-linearly. In our voice pipeline, DeepSeek-V4-Pro plus a small dedicated STT beat an end-to-end frontier voice model on cost-per-minute by ~10x while staying inside a 300ms added-latency budget - purely because we could mix and match components. The hard part is honest benchmarking: WER numbers are only comparable within the same eval set, so a "find the optimal combo" service lives or dies by its methodology. Do you expose per-component benchmarks (STT WER, TTS MOS) separately, or only the combined scores?

webo8月17日

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

spmartin8238月17日

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.