Awesome
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
<docgen-index>available()
start(...)
stop()
getSupportedLanguages()
isListening()
checkPermissions()
requestPermissions()
addListener('partialResults', ...)
addListener('listeningState', ...)
removeAllListeners()
- Interfaces
- Type Aliases
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();
<docgen-api>
<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->
available()
available() => Promise<{ available: boolean; }>
This method will check if speech recognition feature is available on the device.
Returns: <code>Promise<{ available: boolean; }></code>
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 | <code><a href="#utteranceoptions">UtteranceOptions</a></code> |
Returns: <code>Promise<{ matches?: string[]; }></code>
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: <code>Promise<{ languages: any[]; }></code>
isListening()
isListening() => Promise<{ listening: boolean; }>
This method will check if speech recognition is listening.
Returns: <code>Promise<{ listening: boolean; }></code>
Since: 5.1.0
checkPermissions()
checkPermissions() => Promise<PermissionStatus>
Check the speech recognition permission.
Returns: <code>Promise<<a href="#permissionstatus">PermissionStatus</a>></code>
Since: 5.0.0
requestPermissions()
requestPermissions() => Promise<PermissionStatus>
Request the speech recognition permission.
Returns: <code>Promise<<a href="#permissionstatus">PermissionStatus</a>></code>
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 | <code>'partialResults'</code> |
listenerFunc | <code>(data: { matches: string[]; }) => void</code> |
Returns: <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>></code>
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 | <code>'listeningState'</code> |
listenerFunc | <code>(data: { status: 'started' | 'stopped'; }) => void</code> |
Returns: <code>Promise<<a href="#pluginlistenerhandle">PluginListenerHandle</a>></code>
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 | <code>string</code> | key returned from getSupportedLanguages() |
maxResults | <code>number</code> | maximum number of results to return (5 is max) |
prompt | <code>string</code> | prompt message to display on popup (Android only) |
popup | <code>boolean</code> | display popup window when listening for utterance (Android only) |
partialResults | <code>boolean</code> | return partial results if found |
PermissionStatus
Prop | Type | Description | Since |
---|---|---|---|
speechRecognition | <code><a href="#permissionstate">PermissionState</a></code> | 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 | <code>() => Promise<void></code> |
Type Aliases
PermissionState
<code>'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'</code>
</docgen-api>