Capacitor community plugin for speech recognition.
| Maintainer | GitHub | Social |
|---|---|---|
| Priyank Patel | priyankpat | @priyankpat_ |
| Matteo Padovano | mrbatista | @mrba7ista |
Maintenance Status: Actively Maintained
To use npm
npm install @capacitor-community/speech-recognitionTo use yarn
yarn add @capacitor-community/speech-recognitionSync native files
npx cap synciOS 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)
No further action required.
available()start(...)stop()getSupportedLanguages()isListening()checkPermissions()requestPermissions()addListener('endOfSegmentedSession', ...)addListener('segmentResults', ...)addListener('partialResults', ...)addListener('listeningState', ...)removeAllListeners()- Interfaces
- Type Aliases
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() => Promise<{ available: boolean; }>This method will check if speech recognition feature is available on the device.
Returns: Promise<{ available: boolean; }>
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() => Promise<void>This method will stop listening for utterance
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() => Promise<{ listening: boolean; }>This method will check if speech recognition is listening.
Returns: Promise<{ listening: boolean; }>
Since: 5.1.0
checkPermissions() => Promise<PermissionStatus>Check the speech recognition permission.
Returns: Promise<PermissionStatus>
Since: 5.0.0
requestPermissions() => Promise<PermissionStatus>Request the speech recognition permission.
Returns: Promise<PermissionStatus>
Since: 5.0.0
addListener(eventName: 'endOfSegmentedSession', listenerFunc: () => void) => Promise<PluginListenerHandle>Called when allowForSilence set to > 0 and segmented session has ended. (Android only)
On Android it doesn't work if popup is true.
| Param | Type |
|---|---|
eventName |
'endOfSegmentedSession' |
listenerFunc |
() => void |
Returns: Promise<PluginListenerHandle>
Since: 6.0.2
addListener(eventName: 'segmentResults', listenerFunc: (data: { matches: string[]; }) => void) => Promise<PluginListenerHandle>Called when allowForSilence set to > 0 and segment result received. (Android only)
On Android it doesn't work if popup is true.
Provides segment result.
| Param | Type |
|---|---|
eventName |
'segmentResults' |
listenerFunc |
(data: { matches: string[]; }) => void |
Returns: Promise<PluginListenerHandle>
Since: 6.0.2
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(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() => Promise<void>Remove all the listeners that are attached to this plugin.
Since: 4.0.0
| 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 |
allowForSilence |
number |
allows milliseconds of silence during recording. Needs number over 0 (Android only) You need to listen to segmentResults to receive the data. On Android it doesn't work if popup is true. |
| 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 |
| Prop | Type |
|---|---|
remove |
() => Promise<void> |
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'