@raghavendra_kj/stt-js
Version:
A wrapper around the Web Speech API for speech-to-text functionality.
138 lines (89 loc) • 3.52 kB
Markdown
# Speech-to-Text (STT) Library
## Live Demo
You can view a live demo of the example [here](https://raghavendra-k-j.github.io/stt-js/example/).
## Introduction
The Speech-to-Text (STT) library provides a clean interface for integrating browser-based speech recognition into your web applications using the Web Speech API. It supports real-time transcription, interim results, and continuous listening.
## Installation
```bash
npm install @raghavendra_kj/stt-js
```
## Usage
### Import the Library
```javascript
import { STT } from "@raghavendra_kj/stt-js";
```
### Create an Instance
```javascript
const stt = new STT();
```
### Start Recognition
```javascript
await stt.start();
```
You can also pass options:
```javascript
await stt.start({
lang: "en-IN",
continuous: false,
interimResults: false
});
```
### Stop or Abort Recognition
```javascript
stt.stop(); // Gracefully ends recognition
stt.abort(); // Forcibly ends recognition
```
### Add Event Listeners
```javascript
stt.onResult((text) => {
console.log("Final result:", text);
});
stt.onPartialResult((text) => {
console.log("Interim result:", text);
});
stt.onError((error) => {
console.error("Error occurred:", error);
});
```
### Remove Event Listeners
```javascript
stt.offResult(handler); // Remove a specific listener
stt.removeAllListeners(); // Remove all listeners
```
## API Reference
### `STT.start(options?)`
Starts speech recognition.
**Parameters:**
- `lang` (string): Language code (default: `"en-US"`)
- `continuous` (boolean): If recognition should continue after pauses (default: `true`)
- `interimResults` (boolean): Whether to include interim results (default: `true`)
**Returns:** `Promise<void>`
### `STT.stop()`
Stops the recognition session gracefully.
### `STT.abort()`
Forcibly aborts the recognition session.
### `STT.isRecognizing()`
Returns a boolean indicating whether recognition is currently active.
### `STT.dispose()`
Stops recognition and removes all listeners. Use for cleanup.
### Event Listeners
#### Add Listeners
- `stt.onStart(handler: () => void)`: Triggered when recognition starts.
- `stt.onEnd(handler: () => void)`: Triggered when recognition ends.
- `stt.onResult(handler: (text: string) => void)`: Triggered when a final transcript is available.
- `stt.onPartialResult(handler: (text: string) => void)`: Triggered for interim transcript updates.
- `stt.onError(handler: (error: STTError) => void)`: Triggered when an error occurs.
#### Remove Listeners
- `stt.offStart(handler: () => void)`: Removes a specific "start" listener.
- `stt.offEnd(handler: () => void)`: Removes a specific "end" listener.
- `stt.offResult(handler: (text: string) => void)`: Removes a specific "result" listener.
- `stt.offPartialResult(handler: (text: string) => void)`: Removes a specific "partialResult" listener.
- `stt.offError(handler: (error: STTError) => void)`: Removes a specific "error" listener.
- `stt.removeAllListeners(event?)`: Removes all listeners for a specific event or all events.
## Permissions
If supported, the library uses the Permissions API to check for microphone access.
Errors are reported through the `"error"` events.
## Browser Support
Ensure the target browser supports the Web Speech API (e.g., latest versions of Chrome, Edge).
## Example
A complete working example is available in `example/index.html`.