The RealtimeTranscriber provides enhanced realtime transcription using VAD, auto-slicing, and memory management. It requires an audio stream adapter and a filesystem module.
Dependencies:
@fugood/react-native-audio-pcm-stream (for AudioPcmStreamAdapter)- A compatible filesystem module (e.g.,
react-native-fs)
import { RealtimeTranscriber } from 'whisper.rn/realtime-transcription'
import { AudioPcmStreamAdapter } from 'whisper.rn/realtime-transcription/adapters'
import RNFS from 'react-native-fs'
const whisperContext = await initWhisper({ /* ... */ })
const vadContext = await initWhisperVad({ /* ... */ })
const audioStream = new AudioPcmStreamAdapter()
const transcriber = new RealtimeTranscriber(
{ whisperContext, vadContext, audioStream, fs: RNFS },
{
audioSliceSec: 30,
vadPreset: 'default',
autoSliceOnSpeechEnd: true,
transcribeOptions: { language: 'en' },
},
{
onTranscribe: (event) => console.log('Transcription:', event.data?.result),
onVad: (event) => console.log('VAD:', event.type, event.confidence),
onStatusChange: (isActive) => console.log('Status:', isActive),
onError: (error) => console.error('Error:', error),
},
)
await transcriber.start()
await transcriber.stop()
Using Parakeet for Realtime:
Provide parakeetContext instead of whisperContext. Note that initialPrompt and promptPreviousSlices are Whisper-only and will be ignored. Parakeet audio must be mono, 16 kHz, signed 16-bit PCM.
import { RealtimeTranscriber } from 'whisper.rn/realtime-transcription'
import { AudioPcmStreamAdapter } from 'whisper.rn/realtime-transcription/adapters'
import RNFS from 'react-native-fs'
const transcriber = new RealtimeTranscriber(
{ whisperContext, vadContext, audioStream, fs: RNFS },
{
audioSliceSec: 30,
vadPreset: 'default',
autoSliceOnSpeechEnd: true,
transcribeOptions: { language: 'en' },
},
{
onTranscribe: (event) => console.log('Transcription:', event.data?.result),
onVad: (event) => console.log('VAD:', event.type, event.confidence),
onStatusChange: (isActive) => console.log('Status:', isActive),
onError: (error) => console.error('Error:', error),
},
)
await transcriber.start()
await transcriber.stop()