Skip to content

transcribe_cpp

Offline speech-to-text for Flutter. The user talks, your app gets text, and the audio never leaves the phone.

Private by design

Everything runs on the device. No server, no account, no API key, and no audio sent anywhere.

Hands-free

Built-in voice detection decides when each sentence ends. There is no button to hold down.

Live text

Words appear while the user is still speaking, and they settle in place instead of flickering.

Fast

A sentence is transcribed in a fraction of a second, about 40 times faster than real time on a mid-range phone.

Your audio or ours

Use the built-in microphone handling, or feed in audio your app already records, at any sample rate.

Many models

Download the model you want at runtime: a 50 MB one for small apps, or bigger ones for more accuracy and languages.

final models = await ModelManager.open();
final model = await models.ensure(const ModelId('parakeet-tdt_ctc-110m-Q4_K_M'));
final session = await TranscribeSession.open(model);
session.text.addListener(() => print(session.text.value.full));
await session.start(); // asks for the microphone, then listens
// ...the user speaks...
await session.stop();

Set it up in your app →

The speech recognition itself is transcribe.cpp, a fast C/C++ engine for many speech models. transcribe_cpp brings it to Flutter and adds what an app needs around it: microphone capture that survives calls and route changes, voice detection, sentence splitting, live text, and model downloads. See the acknowledgements for everyone whose work this builds on.