Hacker News 熱門精选64

Launch HN:Speko (YC S26) – 面向语音 AI 的 OpenRouter

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

· 57天前
跳到正文

精选理由

帮助读者快速选出更准、更快、更省的语音模型组合。

AI 摘要

HN 大家好!我是 Bek,Speko 的创始人。Speko 是一个平台,会在我们所有公开基准测试过的选项中,根据你的约束条件,找出 speech-to-text、LLM 和 text-to-speech 模型的最优组合,并告诉你原因。 演示: https://youtu.be/no2LY2gRh-c 链接: https://speko.ai/?utm_source=hn 典型的生产级语音代理是三个模型的组合:STT、一个 LLM 和 TTS。 这些层中的每一层都有十来家可信的供应商,而且每个月市场上都会出现新模型。几乎所有人都是评估一次,选定一套自己偏好的技术栈,然后再也不复查,因为从一家供应商切换到另一家供应商又意味着一次新的集成,以及关于数字的争论。 结果就是,你在使用运行着上个季度模型的语音代理,而更好、更便宜的选择其实已经可用。 在创立 Speko 之前,我曾用四年时间作为联合创始人兼 CTO,为亚洲各地的企业构建支持 10 多种语言的语音代理。每当一个新的语音模型出现时,我们都会重复同样的流程:雇用母语评测员,将其与我们现有的技术栈做基准测试,如果有所提升就更新生产环境。Speko 将这个流程变成了一个 API。一个每天处理数千通电话的团队告诉我们:“我们真的可以直接去这个仪表盘,切换模型,它就会替我们完成。” 工作原理:你发送一个带有优化标准(准确率、延迟、成本或均衡)、语言和地区的请求。路由器会筛选出我们针对给定约束组合测量过的模型,对它们进行基准测试,选出胜者,并返回一个响应,其 headers 中包含供应商、模型名称和分数。网关会预取已签名的会话计划,因此新会话会直接从内存拨通供应商;呼叫者等待时不会发生控制平面的往返。 故障转移只发生在连接建立阶段:如果供应商拒绝连接尝试,我们就开始连接排名靠后的候选者。 一些客户案例:有一位创始人来找我们时完全不知道该选什么;他把自己的用例给了我们,现在所有流量都通过这个平台路由。一个物业管理 AI 使用 Python 运行 LiveKit,自上线以来从未更新过 STT 或 TTS:他们不知道自己的 STT 在通话中的错误率很高,也不知道已有更好的选择,而且替换看起来总像是一个 R&D 项目。一个团队不知道该为西班牙语选择哪些模型。一个医疗团队不知道哪个 STT 最擅长处理医学词汇。每种情况下,我们都帮助他们从基准测试中找到合适的技术栈,现在他们都通过我们路由。 测量部分是公开的:我们在一个地区、不同日期的运行中,把相同输入传给每个模型,并发布排行榜,包括那些我们的选择表现不如替代方案的榜单。发布演示会回答哪个 30 秒片段听起来更好;生产环境关心的是哪个模型能撑到第八分钟,所以我们测试自发语音、金额和日期、十分钟片段,而排名会发生变化。我们基于盲测一对一听感投票,训练了一个用于 TTS 自然度的自动评分器;对于它从未见过投票的供应商,它选出的胜者与我们的评测员所选一致的频率,大约和评测员之间彼此一致的频率相当。 我们自己不训练或销售模型,这正是我们保持排名公正的方式。 我们还开源了网关,面向那些希望避免音频路径上额外网络跳转、且不想与我们的云共享密钥的团队( https://github.com/SpekoAI/gateway ,MIT):一个 Go 二进制文件,作为 sidecar 运行在你的代理容器中,通过 Unix socket 使用一种本地协议,固定供应商主机并附加你的密钥。在 BYOK 模式下,它完全不会与我们通信。 请注意,匿名且不含内容的遥测默认启用,一个环境变量即可禁用。 成本:网关和 BYOK 设置将永久免费,我们对托管路由器和托管密钥以及合并计费收费。自从我们在 6 月下旬开始这一批次以来,外部使用量平均每周增长约 25%,增长主要集中在发布前几周。 我很想听听社区的反馈:你们现在如何选择语音模型?什么会让你们信任第三方基准测试? 评论 URL: https://news.ycombinator.com/item?id=49332751 点数:22 评论数:7

正文

Backed by Y CombinatorBacked by Y CombinatorBacked by Y Combinator→

The Router for Voice AI

Every speech model, benchmarked language by language, wired into one API.

Get API keyCompare models

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

Speech-to-textSpeech-to-text
Text-to-speechText-to-speech
ModelENARFRDEHINBESTATE
Nova-3
stt-rt-v5
GPT-4o Transcribe
GPT-4o-mini Transcribe
Qwen3-ASR
Chirp 3
Ink-Whisper
Pulse Pro
Whisper-1
Nova-2
Gradium ASR
Grok STT
Ink-2
Pulse
Realtime STT-1bench
Scribe v2 Realtime
Solaria-1
Universal-3.5 Pro
Velma 2
Flux
GPT Live Transcribe
Show all 21 models↓

Score against cost, per stage

Speech-to-textSpeech-to-text
LLMLLM
Text-to-speechText-to-speech
Speech-to-speechSpeech-to-speech
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)
#ModelWER▲batchCost▼/ min
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
Show all 17 models↓

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.

  • LiveKitTypeScriptPoint the OpenAI plugin at the gateway. The agent code is unchanged.
  • PipecatPython
  • Claude / CursorMCP
copy
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({ ... }) });
  },
});

Point your agent at Speko

MCPMCPcurlcurl
$claude mcp add --transport http speko https://mcp.speko.ai/mcp
查看原文(Hacker News 熱門)