← Projects

Beseda

Status: in progress

Beseda transcribes a conversation between two people in real time and labels who said what — all on your device. Speech recognition and speaker separation run offline using on-device models, so your conversations stay private. Transcripts are stored locally and can be exported or deleted at any time. The audio itself is never saved or uploaded.

Beseda home screen listing saved transcripts with dates, durations and line counts
Your transcripts
Beseda recording screen with a live audio level meter and a Record button
Live capture
A saved transcript with each line labelled Speaker 1 or Speaker 2
Speaker-labelled transcript
Language & models screen showing on-device Russian and English models and their sizes
On-device models

What it is

A private, on-device conversation transcriber for iOS. Point it at a two-person conversation and it produces a live, speaker-labelled transcript — no cloud, no account, no audio leaving your phone. Free and built for privacy first.

How it works

  • Speech recognition runs offline with sherpa-onnx: a streaming T-one CTC model for Russian and a streaming zipformer transducer for English. Language models are downloaded on demand.
  • Speaker separation (diarization) works in two passes — a draft during recording (speaker embeddings + online clustering into two voices), then an offline refinement when the transcript is saved (segmentation + clustering over the whole session, re-labelling each segment).
  • Storage is local via SwiftData. Transcripts persist on device; audio is discarded once transcribed.

Tech

Native SwiftUI, SwiftData for persistence, and sherpa-onnx xcframeworks for on-device ASR and diarization. Requires iOS 17+.