sofya.transcription
v0.0.3
Published
a JavaScript library that provides a robust and flexible solution for real-time audio transcription. It is designed to transcribe audio streams and can be easily integrated into web applications.
Downloads
13
Maintainers
Readme
Sofya Transcription
Sofya Transcription is a JavaScript library that provides a robust and flexible solution for real-time audio transcription. It is designed to transcribe audio streams and can be easily integrated into web applications. The library also includes a functionality for capturing audio from media elements.
Features
- Real-Time Transcription: Transcribe audio streams in real time with high accuracy.
- Flexible Integration: Seamlessly integrates with your web applications.
- Media Element Audio Capture: Feature to capture audio from media elements like
<video>
and<audio>
.
Installation
To install Sofya Transcription, you can use npm:
npm install sofya.transcription
Usage
Here's a basic example of how to use Sofya Transcription in your project:
Import the Library:
import { MediaElementAudioCapture, TranscriptionService } from 'sofya.transcription';
Create a Transcription Service Instance:
const transcriptionConfig = {language: 'pt-BR', model: 'YOUR_MODEL_ID', region: 'YOUR_REGION'}
const transcriber = new TranscriptionService('YOUR_API_KEY', transcriptionConfig);
Initialize and Start Transcription:
const mediaStream = await navigator.mediaDevices.getUserMedia();
transcriber.startTranscription(mediaStream);
Handle Transcription Events:
transcriber.on('recognizing', (text) => {
console.log('Recognizing: ' + text); });
transcriber.on('recognized', (text) => {
console.log('Recognized: ' + text);
});
transcriber.on('nomatch', () => {
console.log('No match found.');
});
Stop Transcription:
transcriber.stopTranscription();
API
TranscriptionService
constructor('YOUR_API_KEY', config): Creates a new instance of the transcription service with a given
API KEY
and an config object.startTranscription(): void: Starts the transcription process with a given
MediaStream
.stopTranscription(): void: Stops the transcription process.
on(event: string, callback: Function): void: Registers an event handler for transcription events. Possible events include:
recognizing
: Fired when transcription is in progress.recognized
: Fired when transcription is complete.nomatch
: Fired when no speech is recognized.
React Example
import React from 'react'
import { SofyaTranscriber } from 'sofya.transcription'
export const App = () => {
const transcriber = React.useRef(null)
const [transcription, setTranscription] = React.useState('')
const transcriptionRef = React.useRef('')
const getMediaStream = async () => {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true })
return stream
}
const startTranscription = async () => {
try {
const stream = await getMediaStream()
const transcriber = new SofyaTranscriber(
'your_key',
{
language: 'pt-BR',
model: 'your_model',
region: 'your_region',
}
)
transcriber.startTranscription(stream)
transcriber.on('recognizing', (result: string) => {
console.log({ recognizing: result })
setTranscription(transcriptionRef.current + result)
})
transcriber.on('recognized', (result: string) => {
console.log({ recognized: result })
setTranscription(transcriptionRef.current + result)
transcriptionRef.current = transcriptionRef.current + result
})
transcriber.current = transcriber
} catch (error) {
console.log({ error })
}
}
const stopTranscription = () => {
if (transcriber.current) {
transcriber.current.stopTranscription()
transcriber.current = null
}
}
return (
<div>
<button onClick={startTranscription}>Start Transcription</button>
<button onClick={stopTranscription}>Stop Transcription</button>
<hr />
<p>{transcription}</p>
</div>
)
}
MediaElementAudioCapture
constructor(): Creates a new instance of the media element audio capture.
captureAudio(mediaElement: HTMLMediaElement): MediaStream: Captures the audio stream from a given media element and returns a
MediaStream
.