Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/capacitor-community/speech-recognition


https://github.com/capacitor-community/speech-recognition

Last synced: 3 months ago
JSON representation

Awesome Lists containing this project

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'