What a Week at Speechify
I looked up on Friday and realised we’d shipped about a week’s worth of features in three days. Figured I’d write them down before next week starts and I forget.
Simba 3.0 finally speaks more than English
This one landed Tuesday. Simba 3.0 went from English-only to covering German, Spanish (both Spain and Mexico), French, Italian, and Brazilian Portuguese. Same model, same endpoint, just pass a language field. If you’d been holding off on simba-3.0 because your users don’t all speak English, that constraint is gone.
The Simba 1.6 models got a deprecated flag too. Not going away, nothing to panic about, but it’s the signal to start treating them as the old path.
Streaming TTS with word-level timestamps
Wednesday brought POST /v1/audio/stream/with-timestamps. Same low-latency SSE stream as the regular streaming endpoint, but with word-level speech marks interleaved as the audio arrives. So you can do live captions, text highlighting, or audio-text sync without needing the non-streamed API. I’d been wanting this one for a while.
Voice agents can switch language mid-call
Thursday: additional_languages on voice agents. One agent, one session, and when the caller switches language the agent follows without dropping context. No sibling agents, no transfer that loses the conversation history. It needs a capable model to detect the switch cleanly, so it’s Pro plans and above, but it works.
The rest of the week in Speechify land
The header namespace got cleaned up on Friday. Every public API header now has a canonical un-prefixed name. X-Request-ID became Speechify-Request-Id. Rate limit headers dropped their X- prefix too. The old names still work through July next year, so nothing breaks today.
And somewhere in the middle of all that, Speechify crossed 500,000 five-star ratings on the iOS App Store. Not an API thing, but worth mentioning.
Meanwhile, outside Speechify
Qwen-Audio-3.0-TTS-Plus took the #1 spot on the Artificial Analysis Speech Arena at 1,236 Elo. That’s two points above Simba 3.2 at 1,234, with confidence intervals that overlap almost entirely. It costs $27.60 per million characters against Simba’s $10. Competitive analysis writes itself.
The MCP spec published its biggest revision since launch. The new draft removes the initialize handshake and session IDs entirely. Every request becomes self-contained, no sticky routing needed. It’s a breaking change if you maintain a hand-rolled server, but the direction is clearly right and the migration is straightforward.
And the synthetic voice regulation story got louder. TikTok Shop banned AI voices from live commerce. Japan’s Justice Ministry published draft guidelines saying the voice is a protected personality right. Mexico’s reformed copyright law requires consent and compensation for AI voice use. Three layers of the stack, one direction of travel.
What I’m watching next week
The Vercel AI SDK has a generateSpeech() function with no Speechify provider shipping in the box. I’ve been building one. It’s about a hundred lines and runs against the live API. I’ll have it wrapped up in the next couple of days.
Next week’s also going to be interesting on the open-weight front. Kimi K3’s weights drop on Monday. 2.8 trillion parameters, million-token context, and a week of Washington threatening sanctions and accusing Moonshot of distilling Fable to build it. The model itself is interesting. The geopolitical theatre around its release might be the more important story.
Right. Back to it.