Erste Schritte
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses Plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-speech-recognition`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/speech-recognition/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installieren
Abschnitt „Installation“Du kannst unser KI-gestütztes Setup nutzen, um das Plugin zu installieren. Füge die Capgo Skills mit dem folgenden Befehl deinem KI-Tool hinzu:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsNutze dann diesen Prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-speech-recognition` plugin in my project.Wenn du ein manuelles Setup bevorzugst, installiere das Plugin mit den folgenden Befehlen und befolge die plattformspezifischen Anweisungen unten:
npm install @capgo/capacitor-speech-recognitionnpx cap syncImportieren
Abschnitt mit dem Titel „Import“import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';Quickstart
Abschnitt „Quick start“Mikrofonzugriff anfordern, ein partialResults listener, dann eine Session mit Streaming-Updates starten.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
await SpeechRecognition.requestPermissions();
const partialListener = await SpeechRecognition.addListener('partialResults', ({ matches }) => { setTranscript(matches?.[0] ?? '');});
await SpeechRecognition.start({ language: 'en-US', partialResults: true });
// When leaving the screen:await SpeechRecognition.stop();await partialListener.remove();Häufige Stolperfallen
Abschnitt „Häufige Fallstricke“- Aufräumen: Listener entfernen, wenn der Screen verlassen wird.
- Sprachen: Verwende BCP 47 Tags, die zu deiner UI passen.
- Web: nicht unterstützt; nutze separat eine Browser-Spracherkennung API, falls du Diktat nur im Web brauchst.
API Übersicht
Abschnitt „API Übersicht“available
Abschnitt mit dem Titel „verfügbar“Prüft, ob der native Speech-Recognition-Service auf dem aktuellen Gerät verfügbar ist.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.available();console.log(result);isOnDeviceRecognitionAvailable
Abschnitt mit dem Titel „isOnDeviceRecognitionAvailable“Prüft, ob der neuere On-Device-Erkennungspfad der Plattform für die gewählte Locale verfügbar ist.
Dies ist der Capability-Check, den du vor dem Aktivieren verwenden solltest useOnDeviceRecognition.
A true result bedeutet, dass das aktuelle Gerät, die OS-Version und die Locale den neueren On-Device-Pfad für diese Plattform nutzen können.
Rückgabewert false wenn das Gerät nur den Legacy-Recognizer-Pfad unterstützt.
Plattform SDK Doku: iOS: Speech Android: SpeechRecognizer
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.isOnDeviceRecognitionAvailable();console.log(result);start
Abschnitt „Start“Startet die Audioaufnahme und die Transkription der Sprache.
Wenn partialResults ist true, das zurückgegebene Promise wird sofort aufgelöst und Updates werden über den partialResults Listener gestreamt, bis die Sitzung endet.
Der Standardpfad behält das Verhalten des Legacy-Recognizers bei, um die Abwärtskompatibilität zu gewährleisten.
Übergeben Sie useOnDeviceRecognition: true nur nach Überprüfung von
.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.start();console.log(result);Beendet das Zuhören und gibt native Ressourcen frei.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
await SpeechRecognition.stop();forceStop
Abschnitt mit dem Titel „forceStop“Erzwingt das Beenden der aktuellen Session.
Unter Android wird zuerst ein normaler Stopp versucht, anschließend wird auf Destroy/Recreate zurückgegriffen. timeout.
Unter iOS wird die aktuelle Session sofort gestoppt.
Wenn ein partielles Transkript gecacht ist, wird es über den partialResults Listener mit forced: true.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
await SpeechRecognition.forceStop();getLastPartialResult
Abschnitt mit dem Titel „getLastPartialResult“Gibt das zuletzt gecachte partielle Transkriptionsergebnis zurück.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.getLastPartialResult();console.log(result);setPTTState
Abschnitt „setPTTState“Aktualisiert den aktuellen Zustand der Push-to-Talk-Taste.
Verwenden Sie dies zusammen mit continuousPTT oder mit einem eigenen Hold-to-Talk-Flow.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
await SpeechRecognition.setPTTState({ held: true });getSupportedLanguages
Abschnitt „getSupportedLanguages“Gibt die vom zugrunde liegenden Recognizer unterstützten Locales zurück.
Android 13+ Geräte stellen diese Liste nicht mehr bereit; in diesem Fall languages ist sie leer.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.getSupportedLanguages();console.log(result);isListening
Abschnitt „isListening“Gibt zurück, ob das Plugin aktiv auf Sprache hört.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.isListening();console.log(result);checkPermissions
Abschnitt „checkPermissions“Ruft den aktuellen Berechtigungsstatus ab.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.checkPermissions();console.log(result);requestPermissions
Abschnitt „requestPermissions“Fordert die Berechtigungen für Mikrofon + Spracherkennung an.
import { SpeechRecognition } from '@capgo/capacitor-speech-recognition';
const result = await SpeechRecognition.requestPermissions();console.log(result);Typreferenz
Abschnitt mit dem Titel „Typreferenz“SpeechRecognitionAvailability
Abschnitt mit dem Titel „SpeechRecognitionAvailability“export interface SpeechRecognitionAvailability { available: boolean;}SpeechRecognitionStartOptions
Abschnitt mit dem Titel „SpeechRecognitionStartOptions“Konfiguriere das Verhalten des Recognizers beim Aufruf von .
export interface SpeechRecognitionStartOptions { /** * Locale identifier such as `en-US`. When omitted the device language is used. */ language?: string; /** * Maximum number of final matches returned by native APIs. Defaults to `5`. */ maxResults?: number; /** * Prompt message shown inside the Android system dialog (ignored on iOS). */ prompt?: string; /** * When `true`, Android shows the OS speech dialog instead of running inline recognition. * Defaults to `false`. */ popup?: boolean; /** * Emits partial transcription updates through the `partialResults` listener while audio is captured. */ partialResults?: boolean; /** * Enables native punctuation handling where supported (iOS 16+). */ addPunctuation?: boolean; /** * Opt in to the platform's newer on-device recognition path when available. * * On iOS 26+, this uses Apple's `SpeechAnalyzer` / `SpeechTranscriber` pipeline. * On recent Android versions, this uses the on-device `SpeechRecognizer` path. * * It is intentionally opt-in so existing apps keep the legacy flow unless they choose * to roll out the new behavior. * * Use {@link SpeechRecognitionPlugin.isOnDeviceRecognitionAvailable} before enabling it in production. * * Platform SDK docs: * iOS: [Speech](https://developer.apple.com/documentation/speech), * [SpeechAnalyzer](https://developer.apple.com/documentation/speech/speechanalyzer), * [SpeechTranscriber](https://developer.apple.com/documentation/speech/speechtranscriber) * Android: [SpeechRecognizer](https://developer.android.com/reference/android/speech/SpeechRecognizer) * * Defaults to `false`. */ useOnDeviceRecognition?: boolean; /** * Allow a number of milliseconds of silence before splitting the recognition session into segments. * Required to be greater than zero and currently supported on Android only. */ allowForSilence?: number; /** * EXPERIMENTAL: Keep a PTT session alive across silence by restarting recognition while the button stays held. * * This restart behavior is implemented for Android inline recognition and iOS native recognition. */ continuousPTT?: boolean;}SpeechRecognitionMatches
Abschnitt mit dem Titel „SpeechRecognitionMatches“export interface SpeechRecognitionMatches { matches?: string[];}ForceStopOptions
Abschnitt mit dem Titel „ForceStopOptions“Optionen für .
export interface ForceStopOptions { /** * Android only: timeout in milliseconds before forcing stop via destroy/recreate. * * On iOS, the current session is stopped immediately and this value is ignored. * * Defaults to `1500`. */ timeout?: number;}LastPartialResult
Abschnitt mit dem Titel „LastPartialResult“Ergebnis von .
export interface LastPartialResult { /** * Whether a partial result is currently cached. */ available: boolean; /** * The most recent transcript text known to the native recognizer. */ text: string; /** * All current match alternatives when available. */ matches?: string[];}PTTStateOptions
Abschnitt mit dem Titel „PTTStateOptions“Optionen für .
export interface PTTStateOptions { /** * Whether the PTT button is currently held. */ held: boolean;}SpeechRecognitionLanguages
Abschnitt „SpeechRecognitionLanguages“export interface SpeechRecognitionLanguages { languages: string[];}SpeechRecognitionListening
Abschnitt „SpeechRecognitionListening“export interface SpeechRecognitionListening { listening: boolean;}SpeechRecognitionPermissionStatus
Abschnitt „SpeechRecognitionPermissionStatus“Berechtigungsmappe, die von checkPermissions und requestPermissions.
export interface SpeechRecognitionPermissionStatus { speechRecognition: PermissionState;}SpeechRecognitionSegmentResultEvent
Abschnitt „SpeechRecognitionSegmentResultEvent“Wird ausgelöst, sobald ein segmentiertes Ergebnis vorliegt (nur Android).
export interface SpeechRecognitionSegmentResultEvent { matches: string[];}SpeechRecognitionPartialResultEvent
Abschnitt mit dem Titel „SpeechRecognitionPartialResultEvent“Wird ausgelöst, sobald eine partielle Transkription erstellt wird.
export interface SpeechRecognitionPartialResultEvent { /** * Current recognition matches when the native recognizer reports them. * * This can be omitted for forced or accumulated-only payloads. */ matches?: string[]; /** * Accumulated transcription from earlier continuous PTT cycles. */ accumulated?: string; /** * Final accumulated text including the current result. */ accumulatedText?: string; /** * `true` when the plugin is restarting recognition inside a continuous PTT session. */ isRestarting?: boolean; /** * `true` when the payload was emitted by `forceStop()`. */ forced?: boolean;}SpeechRecognitionListeningEvent
Abschnitt mit dem Titel „SpeechRecognitionListeningEvent“Wird ausgelöst, wenn sich der Zuhörzustand ändert.
export interface SpeechRecognitionListeningEvent { /** * Finite state of the recognition session. */ state?: ListeningFiniteState; /** * Unique identifier for the current listening session. */ sessionId?: number; /** * Why this state transition occurred. */ reason?: ListeningReason; /** * Error code when the transition is caused by an error. */ errorCode?: string; /** * Backward-compatible binary state used by earlier releases. */ status?: 'started' | 'stopped';}Source of Truth
Abschnitt mit dem Titel „Source of Truth“Diese Seite wird aus dem Plugin generiert src/definitions.ts. Führe den Sync erneut aus, wenn sich das öffentliche API upstream ändert.
Weiter geht's nach Getting Started
Abschnitt: „Weiter geht’s mit Getting Started“Wenn du es nutzt Erste Schritte um Dashboard- und API-Operationen zu planen, verbinde es mit @capgo/capacitor-speech-recognition verwenden für die native Funktion bei der Nutzung von @capgo/capacitor-speech-recognition, API Übersicht für Details zur Implementierung im API Overview, Einführung für die Implementierungsdetails in der Einleitung, API Schlüssel für das Implementierungsdetail in API Keys und Geräte für das Implementierungsdetail in Devices.