Capacitor Speech Recognition Plugin

Capacitor community plugin for speech recognition.

Maintainers

Maintainer GitHub Social
Priyank Patel priyankpat @priyankpat_
Matteo Padovano mrbatista @mrba7ista

Maintenance Status: Actively Maintained

Installation

To use npm

npm install @capacitor-community/speech-recognition

To use yarn

yarn add @capacitor-community/speech-recognition

Sync native files

npx cap sync

iOS

iOS requires the following usage descriptions be added and filled out for your app in Info.plist:

  • NSSpeechRecognitionUsageDescription (Privacy - Speech Recognition Usage Description)
  • NSMicrophoneUsageDescription (Privacy - Microphone Usage Description)

Android

No further action required.

Supported methods

Example

import { SpeechRecognition } from "@capacitor-community/speech-recognition";

SpeechRecognition.available();

SpeechRecognition.start({
  language: "en-US",
  maxResults: 2,
  prompt: "Say something",
  partialResults: true,
  popup: true,
});
// listen to partial results
SpeechRecognition.addListener("partialResults", (data: any) => {
  console.log("partialResults was fired", data.matches);
});

// stop listening partial results
SpeechRecognition.removeAllListeners();

SpeechRecognition.stop();

SpeechRecognition.getSupportedLanguages();

SpeechRecognition.checkPermissions();

SpeechRecognition.requestPermissions();

SpeechRecognition.hasPermission();

SpeechRecognition.requestPermission();

available()

available() => Promise<{ available: boolean; }>

This method will check if speech recognition feature is available on the device.

Returns: Promise<{ available: boolean; }>


start(...)

start(options?: UtteranceOptions | undefined) => Promise<{ matches?: string[]; }>

This method will start to listen for utterance.

if partialResults is true, the function respond directly without result and event partialResults will be emit for each partial result, until stopped.

Param Type
options UtteranceOptions

Returns: Promise<{ matches?: string[]; }>


stop()

stop() => Promise<void>

This method will stop listening for utterance


getSupportedLanguages()

getSupportedLanguages() => Promise<{ languages: any[]; }>

This method will return list of languages supported by the speech recognizer.

It's not available on Android 13 and newer.

Returns: Promise<{ languages: any[]; }>


isListening()

isListening() => Promise<{ listening: boolean; }>

This method will check if speech recognition is listening.

Returns: Promise<{ listening: boolean; }>

Since: 5.1.0


checkPermissions()

checkPermissions() => Promise<PermissionStatus>

Check the speech recognition permission.

Returns: Promise<PermissionStatus>

Since: 5.0.0


requestPermissions()

requestPermissions() => Promise<PermissionStatus>

Request the speech recognition permission.

Returns: Promise<PermissionStatus>

Since: 5.0.0


addListener('partialResults', ...)

addListener(eventName: 'partialResults', listenerFunc: (data: { matches: string[]; }) => void) => Promise<PluginListenerHandle>

Called when partialResults set to true and result received.

On Android it doesn't work if popup is true.

Provides partial result.

Param Type
eventName 'partialResults'
listenerFunc (data: { matches: string[]; }) => void

Returns: Promise<PluginListenerHandle>

Since: 2.0.2


addListener('listeningState', ...)

addListener(eventName: 'listeningState', listenerFunc: (data: { status: 'started' | 'stopped'; }) => void) => Promise<PluginListenerHandle>

Called when listening state changed.

Param Type
eventName 'listeningState'
listenerFunc (data: { status: 'started' | 'stopped'; }) => void

Returns: Promise<PluginListenerHandle>

Since: 5.1.0


removeAllListeners()

removeAllListeners() => Promise<void>

Remove all the listeners that are attached to this plugin.

Since: 4.0.0


Interfaces

UtteranceOptions

Prop Type Description
language string key returned from getSupportedLanguages()
maxResults number maximum number of results to return (5 is max)
prompt string prompt message to display on popup (Android only)
popup boolean display popup window when listening for utterance (Android only)
partialResults boolean return partial results if found

PermissionStatus

Prop Type Description Since
speechRecognition PermissionState Permission state for speechRecognition alias. On Android it requests/checks RECORD_AUDIO permission On iOS it requests/checks the speech recognition and microphone permissions. 5.0.0

PluginListenerHandle

Prop Type
remove () => Promise<void>

Type Aliases

PermissionState

'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'