Introduction

Google now has an official on-device voice stack. On November 10, 2026, the Google AI Edge and Android ML teams announced on-device speech recognition (ASR) and text-to-speech (TTS) in the Google AI Edge Gallery app, plus the developer APIs behind it. It comes in two layers. ML Kit GenAI Speech Recognition and Text-to-Speech are closed system models built into Android. The OS manages them through AICore, so they add 0 MB to your APK. MediaPipe Tasks + LiteRT run open-weight models packaged as single .litertlm files: Parakeet-TDT 0.6B v3 for ASR, and Kokoro-82M, PocketTTS 100M and Phonon 31M for TTS. Those run on web, iOS, macOS, Windows, Linux and Android. You can try both today in the Gallery app (Android and iOS) or in MediaPipe's browser demos.

Sources: the Google Developers Blog announcement, the ML Kit speech recognition and text-to-speech docs, the MediaPipe Audio Transcriber and Text-to-Speech task docs, and the LiteRT Community model repos on Hugging Face.

What Shipped

ML Kit GenAI Speech Recognition (Android, alpha)

  • Artifact: com.google.mlkit:genai-speech-recognition:1.0.0-alpha2.
  • Streams partial and final transcripts from the mic or from an external stream, such as smart glasses.
  • Google claims 8.0–9.0% WER on FLEURS across "100+ languages", at about 10x real time (~300 ms per 3 s of speech). It also says speech translation waits drop by 35–44%.
  • Advanced mode (the GenAI model) requires a Pixel 10 or 11, or a Gemini Nano device on Snapdragon SM8750/SM8845/SM8850/SM8950/SM8975, Dimensity MT6991/6993/6995 or Exynos 2600. Basic mode works on API 31+.
  • The docs list 21 Advanced locales, several of them beta, and note that "additional locales are available." The 100+ figure comes from the blog, not from the locale table.

ML Kit GenAI Text-to-Speech (Android, alpha)

  • Artifact: com.google.mlkit:genai-text-to-speech:1.0.0-alpha1.
  • A few-step diffusion model accelerated on the NPU. Google says it starts speaking in ~100 ms, outputs 24 kHz audio at up to 50x real time, and renders a 27-second paragraph in ~500 ms, with "over 50%" less active power than autoregressive TTS.
  • 8 voices (star02 … star16) across 21 locales, including en-US/GB, ja-JP, ko-KR, hi-IN, ar-XA, pt-BR and ru-RU.
  • Supported devices: Pixel 8–11, Galaxy S25/S26, Z Fold8/Fold8 Ultra and Z Flip8. It also needs the current Speech Recognition & Synthesis app and minSdk 26.

MediaPipe Tasks + LiteRT (open weights, cross-platform)

  • ASR: parakeet-tdt-0.6b-v3 (CC-BY-4.0, NVIDIA base). The int8 stateful .litertlm is about 615 MB, and there are per-SoC builds for Tensor G5/G6, Snapdragon and Dimensity. It supports streaming, batch and hybrid modes, with VAD built in.
  • TTS: Kokoro-82M (Apache-2.0, ~295 MB int8/fp16, multilingual), PocketTTS (CC-BY-4.0, Kyutai base, ~125–163 MB per-language int8 bundles or a 760 MB all-in-one) and Phonon 31M (Apache-2.0, English, ~87 MB, Google claims sub-100 ms time-to-first-audio on most devices).
  • Output is 24 kHz mono float32 PCM. There are full-clip calls and clause-by-clause streaming, and openStream() → pushText() lets you pipe LLM tokens straight into speech.

The apps. The Gallery's XR Language Teacher chains on-device ASR, then Gemini Nano (Android) or Gemma 4, then bilingual TTS that switches voice mid-sentence for foreign phrases. AI Chat gets voice dictation and read-aloud with sentence highlighting. The reference code is in google-ai-edge/gallery.

Try It in the Browser

The MediaPipe web demos run in WebAssembly and cache weights after the first load: TTS demo (88 MB) and ASR demo (591 MB). To wire TTS into your own page, npm install @mediapipe/tasks-audio and use this (adapted from Google's docs):

import { FilesetResolver, TextToSpeech } from "@mediapipe/tasks-audio";

const audio = await FilesetResolver.forAudioTasks(
  "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-audio@latest/wasm"
);

// phonon_int8.litertlm (~87 MB, CPU) from huggingface.co/litert-community/phonon-31m-en
// or kokoro_int8_gpu_fp16.litertlm with delegate: "GPU" and defaultVoiceId: "af_heart"
const tts = await TextToSpeech.createFromOptions(audio, {
  baseOptions: { modelAssetPath: "phonon_int8.litertlm" },
});

const ctx = new AudioContext({ sampleRate: 24000 });
const stream = await tts.synthesizeStream(
  "First sentence plays right away. The second one renders while the first is playing."
);
let t = ctx.currentTime;
for await (const chunk of stream) {
  const buf = ctx.createBuffer(1, chunk.samples.length, chunk.sampleRateHz);
  buf.copyToChannel(chunk.samples, 0);
  const src = ctx.createBufferSource();
  src.buffer = buf; src.connect(ctx.destination);
  src.start(t); t += buf.duration;
}

For ASR, use the same package with AudioTranscriber.createFromOptions(...) and parakeet_tdt_0.6b_v3_5s_i8_stateful.litertlm, then call transcribeStream(pcmChunk) and finishStream() on 16 kHz mono audio.

The Catches

  • Every accuracy, latency and power number above is Google's own. There's no independent benchmark yet.
  • Both ML Kit speech APIs are alpha, with no SLA and possible breaking changes. The "0 MB" claim only holds on Android, where the OS hosts the models. On web, desktop and iOS you ship the .litertlm files yourself, and those are 87 MB to over 600 MB.
  • The ML Kit device lists are flagship-only, and the GenAI APIs don't run on devices with an unlocked bootloader.
  • The ML Kit models are closed. Only the MediaPipe/LiteRT path runs open weights, so check each model's license (Parakeet and PocketTTS are CC-BY-4.0, which requires attribution).
  • The Gallery app first shipped ASR/TTS in v1.0.21 on October 28, and the ML Kit artifacts are dated October 26. The new part is the official announcement and the full developer stack.

Where It Fits

This lands one day after Firefox 160 shipped local Web Speech recognition on Parakeet, and it uses the same small TTS models we've been tracking, including Phonon behind Ollama's speech endpoint. The pattern is clear: platform owners are packaging open ASR and TTS checkpoints as default local plumbing. For voice-agent builders, the full listen → think → speak loop with Gemma 4 or Gemini Nano now has an official, offline Google path.

Conclusion

Google AI Edge's speech release gives you two paths. One is closed but OS-integrated ML Kit models for flagship Android. The other is open-weight Parakeet, Kokoro, PocketTTS and Phonon via MediaPipe on every other platform. The browser demos are the fastest way to hear it, and the Gallery app shows the full offline voice loop. Treat the numbers as launch-day claims until the community benchmarks them.

—Anabel ♡