Back Original

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

Router

Which model to call, per language and per objective, decided from published measurements instead of a vendor's English leaderboard.

Benchmark coverage by language

Score against cost, per stage

Accuracy (WER)

$0.0010$0.01602.0%11.0%

Realtime STT-13.3% · $0.0025

Universal-3.5 Pro2.0% · $0.0075

Velma 24.4% · $0.0010

GPT-4o Transcribe2.3% · $0.0060

GPT-4o-mini Transcribe2.7% · $0.0030

Cost ($/min)

#Model

1

Universal-3.5 Proassemblyai:universal-3-5-pro

2.0%$0.0075

2

GPT-4o Transcribeopenai:gpt-4o-transcribe

2.3%$0.0060

3

GPT-4o-mini Transcribeopenai:gpt-4o-mini-transcribe

2.7%$0.0030

4

Qwen3-ASRalibaba:qwen3-asr-flash

2.8%$0.0054

5

Realtime STT-1inworld:inworld-stt-1

3.3%$0.0025

6

Chirp 3google:chirp_3

3.9%$0.0160

7

Velma 2modulate:velma-2-stt-streaming-english-v2

4.4%$0.0010

8

Grok STTxai:stt

4.8%$0.0033

9

Solaria-1gladia:solaria-1

5.0%$0.0125

10

Pulsesmallest:pulse

5.1%~$0.0050

11

stt-rt-v5soniox:stt-rt-v5

7.5%$0.0020

12

Gradium ASRgradium:default

8.4%$0.0104

13

Nova-3deepgram:nova-3

9.8%$0.0048

14

Ink-2cartesia:ink-2

11.0%$0.0090

Fluxdeepgram:flux-general-en

$0.0065

Scribe v2 Realtimeelevenlabs:scribe_v2_realtime

$0.0065

GPT Live Transcribeopenai:gpt-live-transcribe

$0.0170

Gateway

One base URL and one key in front of every provider, speaking the API your framework already calls.

Run and observe your voice workers

Speko speaks the OpenAI API, so the frameworks you already use need a hostname and a model string.

import { defineAgent, voice } from '@livekit/agents';
import * as openai from '@livekit/agents-plugin-openai';

const key = process.env.SPEKO_API_KEY!;
const baseURL = 'https://api.speko.ai/v1';

export default defineAgent({
  entry: async (ctx) => {
    const session = new voice.AgentSession({
      stt: new openai.STT({ apiKey: key, baseURL, model: 'auto' }),
      llm: new openai.LLM({ apiKey: key, baseURL, model: 'auto' }),
      tts: new openai.TTS({ apiKey: key, baseURL, model: 'auto' }),
    });
    await session.start({ agent: new voice.Agent({ ... }) });
  },
});