SuperAPI AI Directory

speech

Agents & models

View repository

Updated 11-08 17:06

About this skill

Speech (Android)

Speech is an experimental on-device recognition capability. Enable it for the app in Wearables Developer Center and obtain Permission.MICROPHONE before starting it.

Permission flow

Check permission before attaching Speech. Launch Wearables.RequestPermissionContract only from a user-initiated action; it opens the Meta AI app. Android RECORD_AUDIO is not required for real-glasses recognition. It is needed only when a MockDevice test deliberately uses live phone recognition.

Attach, collect, and start

Call addSpeech after DeviceSessionState.STARTED. Launch collectors before start().

session.addSpeech().fold(
    onSuccess = { speech ->
        transcriptionJob = lifecycleScope.launch {
            speech.transcriptions.collect { result ->
                result ?: return@collect
                if (result.isFinal) commitTranscript(result.text)
                else showPartialTranscript(result.text)
            }
        }
        speech.start().onFailure { error, _ -> showError(error.description) }
    },
    onFailure = { error, _ -> showError(error.description) },
)

Retain the transcription job while Speech is attached. Collect state, locale, and errors when the app needs lifecycle, locale, or failure updates.

confidence is between 0 and 1, or -1 when unavailable. errorDetails is diagnostic text and should not be displayed directly to end users.

Stop and remove

speech.stop() is reusable; removal is terminal. Cancel all collection jobs before session.removeSpeech().

Test with MockDeviceKit

After Speech is listening, inject results with calls such as glasses.services.speech.simulateTranscription("turn left", isFinal = true, confidence = 0.9f). The service can also inject locale changes, partial text, completion, and terminal errors. The live-device source and host RECORD_AUDIO permission are only for manual MockDevice testing.

Availability

Speech is experimental. Apps can use it for development and beta testing, but cannot publish it to production release channels yet.