Transcribe speech on the glasses

Updated: Sep 18, 2026

Overview

The Speech capability runs automatic speech recognition (ASR) on the glasses and delivers the recognized text to your app.
Beta: Speech ships in the development and beta release channels only. Do not depend on it in a production build.
Each recognition event arrives as a TranscriptionResult:
FieldTypeMeaning
text
String
The recognized text, either partial or final.
isFinal
Boolean
true when no further updates will arrive for the current utterance.
confidence
Float
Confidence in the inclusive range [0.0, 1.0], or -1.0 if unavailable.
Partial results arrive while the wearer is still speaking and are replaced by later results for the same utterance. Append text to your UI only when isFinal is true, and treat a confidence of -1.0 as “no score reported” rather than as low confidence.

Use this page with AI

Copy this prompt into your AI coding tool to add or debug on-device speech recognition:
Use https://wearables.developer.meta.com/docs/develop/dat/speech/, then use the Wearables MCP endpoint https://mcp.developer.meta.com/wearables to call search_dat_docs for current Device Access Toolkit Speech guidance. Inspect my session code first, then add the smallest change that attaches Speech to a started device session, requests the microphone permission before starting, and handles partial versus final transcriptions. Handle every SpeechState and SpeechError value, do not assume audio is available to the app, and run the relevant local checks.

Prerequisites

  • A working integration for Android or iOS.
  • A device session in the STARTED state.
  • The MICROPHONE device permission, granted by the wearer.
Speech does require a user-facing permission request. Request MICROPHONE through the Meta AI app flow described in Permissions and registration before calling start().

Capability lifecycle

The Speech capability is attached to a session. You can start and stop it to listen for transcriptions, and can listen for SpeechState and SpeechError to properly handle changes in the capability. The events you will get from speech will contain the text, a confidence level and a flag indicating whether the transcription has completed.
Run Speech only while your feature needs transcriptions to limit battery use. Observe SpeechState because the capability can stop after inactivity, a timeout, or another performance constraint. Observe SpeechError separately to distinguish failures from a normal stop.

Error handling

The capability reports failures as SpeechError. Handle every value, and observe SpeechState as well: the capability can also stop without an error, for example after a period of inactivity or a timeout.
For the values on each platform, see the Speech API reference for Android and iOS.

Android

Step 1: Add the dependency

Add the speech artifact alongside the core artifact in your version catalog, using the same version reference as the rest of the SDK.
[libraries]
mwdat-core = { group = "com.meta.wearable", name = "mwdat-core", version.ref = "mwdat" }
mwdat-speech = { group = "com.meta.wearable", name = "mwdat-speech", version.ref = "mwdat" }
dependencies {
    implementation(libs.mwdat.core)
    implementation(libs.mwdat.speech)
}
For the full API surface, see the Speech API reference.

Test without hardware

Drive Speech from Mock Device Kit through MockGlasses.services.speech. See Android testing for how to create a mock device.

iOS

Step 1: Import the module

The Speech functionality is provided by the MWDATSpeech module.
import MWDATCore
import MWDATSpeech
For the full API surface, see the Speech API reference.

Test without hardware

Drive Speech from Mock Device Kit through MockGlasses.services.speech. See iOS testing for how to create a mock device.

Next steps