https://github.com/capacitor-community/speech-recognition
https://github.com/capacitor-community/speech-recognition
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/capacitor-community/speech-recognition
- Owner: capacitor-community
- License: mit
- Created: 2020-06-24T23:07:24.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-03-25T16:58:01.000Z (12 months ago)
- Last Synced: 2025-05-02T09:03:05.077Z (11 months ago)
- Language: Java
- Size: 563 KB
- Stars: 106
- Watchers: 13
- Forks: 57
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-capacitorjs - @capacitor-community/speech-recognition - Capacitor community plugin for speech recognition. (Plugins / Community Plugins)
- awesome-capacitor - Speech recognition - A native plugin for speech recognition. (Community plugins)
README
# Capacitor Speech Recognition Plugin
Capacitor community plugin for speech recognition.
## Maintainers
| Maintainer | GitHub | Social |
| --------------- | ------------------------------------------- | ------------------------------------------------ |
| Priyank Patel | [priyankpat](https://github.com/priyankpat) | [@priyankpat\_](https://twitter.com/priyankpat_) |
| Matteo Padovano | [mrbatista](https://github.com/mrbatista) | [@mrba7ista](https://twitter.com/mrba7ista) |
Maintenance Status: Actively Maintained
## Installation
To use npm
```bash
npm install @capacitor-community/speech-recognition
```
To use yarn
```bash
yarn add @capacitor-community/speech-recognition
```
Sync native files
```bash
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
* [`available()`](#available)
* [`start(...)`](#start)
* [`stop()`](#stop)
* [`getSupportedLanguages()`](#getsupportedlanguages)
* [`isListening()`](#islistening)
* [`checkPermissions()`](#checkpermissions)
* [`requestPermissions()`](#requestpermissions)
* [`addListener('partialResults', ...)`](#addlistenerpartialresults-)
* [`addListener('listeningState', ...)`](#addlistenerlisteningstate-)
* [`removeAllListeners()`](#removealllisteners)
* [Interfaces](#interfaces)
* [Type Aliases](#type-aliases)
## Example
```typescript
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()
```typescript
available() => Promise<{ available: boolean; }>
```
This method will check if speech recognition feature is available on the device.
**Returns:** Promise<{ available: boolean; }>
--------------------
### start(...)
```typescript
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()
```typescript
stop() => Promise
```
This method will stop listening for utterance
--------------------
### getSupportedLanguages()
```typescript
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()
```typescript
isListening() => Promise<{ listening: boolean; }>
```
This method will check if speech recognition is listening.
**Returns:** Promise<{ listening: boolean; }>
**Since:** 5.1.0
--------------------
### checkPermissions()
```typescript
checkPermissions() => Promise
```
Check the speech recognition permission.
**Returns:** Promise<PermissionStatus>
**Since:** 5.0.0
--------------------
### requestPermissions()
```typescript
requestPermissions() => Promise
```
Request the speech recognition permission.
**Returns:** Promise<PermissionStatus>
**Since:** 5.0.0
--------------------
### addListener('partialResults', ...)
```typescript
addListener(eventName: 'partialResults', listenerFunc: (data: { matches: string[]; }) => void) => Promise
```
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', ...)
```typescript
addListener(eventName: 'listeningState', listenerFunc: (data: { status: 'started' | 'stopped'; }) => void) => Promise
```
Called when listening state changed.
| Param | Type |
| ------------------ | ------------------------------------------------------------------- |
| **`eventName`** | 'listeningState' |
| **`listenerFunc`** | (data: { status: 'started' \| 'stopped'; }) => void |
**Returns:** Promise<PluginListenerHandle>
**Since:** 5.1.0
--------------------
### removeAllListeners()
```typescript
removeAllListeners() => Promise
```
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'