{"slug": "announcing-speech-to-text-text-to-speech", "title": "Announcing Speech To Text & Text To Speech", "summary": "NobodyWho announced speech support in its on-device inference engine, adding Text to Speech (TTS) via Kokoro, Pocket TTS, and Supertonic, and Speech to Text (STT) via Whisper, all running on ONNX Runtime. The company chose ONNX over llama.cpp and candle due to accelerator coverage and backend support, though it noted ONNX Runtime lacks a direct Metal backend and requires compiling from scratch for Android. The release, published Aug 5, 2026, aims to expand speech capabilities and invites user feedback.", "body_md": "# Announcing Speech To Text & Text To Speech\n\nRecently, we shipped speech support in NobodyWho! 🔊\n\nWe support both Text to Speech (TTS) and Speech to Text (STT), running through the same on-device inference engine you already use for language models.\nOn the TTS side, we support [Kokoro](https://kokorottsai.com/), [Pocket TTS](https://github.com/kyutai-labs/pocket-tts) and [Supertonic](https://github.com/supertone-inc/supertonic).\nOn the STT side, we support Whisper. All three run on top of ONNX Runtime, sharing the same accelerator and backend logic.\n\n**Why not llama.cpp?**\n\nllama.cpp is built to support a wide range of autoregressive language model architectures. Speech (notably TTS) has a different landscape with a mix of architectures that llama.cpp doesn't support. Getting them supported isn't a matter of filing feature requests upstream either, since it would mean asking a project scoped around language models to take on an entirely different class of them. If we wanted first-class speech support, we had to build the inference layer ourselves.\n\n**Why ONNX**\n\nWe considered three approaches. We could wrap existing per-model implementations behind a common interface, we could use a Rust-native tensor library such as candle and implement each model's forward pass ourselves, or we could build on ONNX and let it handle inference and backend support for us.\n\nWe like [candle](https://github.com/huggingface/candle), and pure Rust is where we'd prefer to land.\nBut candle's accelerator coverage isn't yet where we need it to be, and backend support was the deciding factor.\nONNX, via the [ort](https://github.com/pykeio/ort) crate, gave us a Rust interface to a runtime that already covers most of the accelerators we rely on elsewhere in NobodyWho for text generation.\n\nBackend support aside, wrapping per-model implementations directly would have left us dependent on upstream authors, or the community, to support new models as they're released. Each project also makes its own dependency choices, which often mean pulling in various C or C++ libraries, which is something we prefer to avoid, since it complicates our build pipelines.\n\nBuilding on a single runtime also lets us stay closer to actual upstream model behavior. It enables us to write custom code, such as translating phonemes between the eSpeak and Misaki phoneme sets for Kokoro, where needed, in order to match the original implementation.\n\n### The good\n\nOutside of the ONNX runtime itself, our stack here is pure Rust: `misaki-rs`\n\nand `espeak-ng-rs`\n\nfor phonemization, `hound`\n\nfor audio I/O.\n\nAdding a new architecture is also largely straightforward. The ONNX file already describes the model, so most of the remaining work is accounting for whatever pre-processing the upstream implementation does.\n\n### The bad\n\nONNX Runtime has no direct Metal backend. Apple Silicon acceleration is only available through the CoreML execution provider. That's a step down from the Metal support we already offer for text generation elsewhere in NobodyWho. Also, ONNX does not ship binaries for Android, we need to compile them from scratch in our build pipelines, which slows it down a bit.\n\n**What's next**\n\nThis is the first release of speech support in NobodyWho, and we intend to keep building on it. If you run into issues, have feedback, or there is a specific model you would like to be supported, open an issue on GitHub. If you're already building with NobodyWho, we'd love to see what you make with speech!\n\nPublished Aug 5, 2026", "url": "https://wpnews.pro/news/announcing-speech-to-text-text-to-speech", "canonical_source": "https://www.nobodywho.ai/posts/announcing-stt-tts/", "published_at": "2026-08-05 00:00:00+00:00", "updated_at": "2026-08-05 10:30:57.618879+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-products", "ai-infrastructure", "natural-language-processing"], "entities": ["NobodyWho", "Kokoro", "Pocket TTS", "Supertonic", "Whisper", "ONNX Runtime", "candle", "llama.cpp"], "alternates": {"html": "https://wpnews.pro/news/announcing-speech-to-text-text-to-speech", "markdown": "https://wpnews.pro/news/announcing-speech-to-text-text-to-speech.md", "text": "https://wpnews.pro/news/announcing-speech-to-text-text-to-speech.txt", "jsonld": "https://wpnews.pro/news/announcing-speech-to-text-text-to-speech.jsonld"}}