CactusCactus

Transcription

Audio transcription with streaming support

Basic Transcription

final result = model.transcribe('/path/to/audio.wav');
print(result.text);
// 16kHz mono PCM
final pcmData = Uint8List.fromList([...]);
final result = model.transcribePcm(pcmData);
print(result.text);
val result = model.transcribe("/path/to/audio.wav")
println(result.text)
val pcmData: ByteArray = ... // 16kHz mono PCM
val result = model.transcribe(pcmData)
println(result.text)
# Transcribe an audio file
cactus transcribe openai/whisper-small --file recording.mp3

# Live microphone transcription
cactus transcribe UsefulSensors/moonshine-base

Streaming Transcription

Real-time transcription with incremental results.

final stream = model.createStreamTranscriber();
stream.insert(audioChunk1);
stream.insert(audioChunk2);

final partial = stream.process();
print('Partial: ${partial.text}');

final finalResult = stream.finalize();
print('Final: ${finalResult.text}');

stream.dispose();
model.createStreamTranscriber().use { stream ->
    stream.insert(audioChunk1)
    stream.insert(audioChunk2)

    val partial = stream.process()
    println("Partial: ${partial.text}")

    val final = stream.finalize()
    println("Final: ${final.text}")
}

Supported Models

  • Whisper Small/Medium - OpenAI Whisper with Apple NPU support
  • Moonshine-Base - Lightweight transcription model

Performance Tips

  • NPU Acceleration - Whisper models support Apple NPU for significantly faster transcription
  • Model Selection - Whisper Small is faster, Whisper Medium is more accurate
  • Streaming - Use streaming transcription for real-time applications
  • Memory - Always call dispose() / close() when done to free resources