Speech in.
Nothing out.

Syntony SDK runs multilingual transcription, speaker diarization and de-identification in one pass, entirely on device — iOS, Android and web. Raw audio never leaves the process; your app receives the transcript already de-identified.

closed beta · one shared core · zero audio egress

syntony-sdk · on-device session
network: 0 B out
syntony run --local --lang auto
ASR · speaker embeddings · de-id core loaded
● capturing — fr-CA detected
S1Bonjour madame [NOM_1], qu’est-ce qui vous amène aujourd’hui ?
S2J’ai des étourdissements depuis mardi matin.
S1Votre numéro au dossier, c’est toujours le [TEL_1] ?
S2Oui. Et ma carte RAMQ, c’est [RAMQ_1].
→ handed to host app: 4 segments · 2 speakers · de-identified

Synthetic sample — names and numbers are invented.

iOS — C FFI Android — JNI Web — WebAssembly French · English first Runs offline after model download

One pass, three stages

Audio goes in; a speaker-attributed, de-identified transcript comes out. Every stage runs in-process on the device — there is no server half.

Transcribe

Whisper-class multilingual models run in-process — nothing streams to a cloud ASR. Voice-activity detection trims silence before it costs you compute.

IN   waveform · 16 kHz mono PCM
OUT  « Bonjour madame Tremblay, qu’est-ce qui vous amène… »
OUT  “Good morning Mrs. Tremblay, what brings you in…”

Diarize

Speaker embeddings segment the conversation into turns — who said what, computed locally, with no voiceprint ever transmitted.

OUT  S1 « Bonjour madame Tremblay… »
     S2 « J’ai des étourdissements… »
OUT  S1 “Good morning Mrs. Tremblay…”
     S2 “I’ve been having dizzy spells…”

De-identify

A deterministic engine tokenizes structural identifiers — phone, date of birth, health-insurance number, address — every time. On-device NER catches spoken names. Your app receives stable tokens in their place.

OUT  S1 « Bonjour madame [NOM_1]… le [TEL_1] ? »
     S2 « …ma carte RAMQ, c’est [RAMQ_1]. »
OUT  S1 “Good morning Mrs. [NAME_1]… still [PHONE_1]?”
     S2 “…my health-insurance card is [RAMQ_1].”

Synthetic example — names and numbers are invented.

An SDK, not a service

Drop the pipeline into your app. Sessions are local objects, events are typed, and the de-identified transcript is the only thing that crosses into your code.

  • One session API on every platform — same stages, same token vocabulary.
  • Partial results stream to your UI; raw text never leaves the process.
  • No endpoints to secure, no audio buckets to audit, no DPA for transcription.

API preview — shapes may change before release.

import SyntonySDK

let session = try SyntonySession(
  languages: [.french, .english],
  redaction: .structuralAndNames
)

for await event in session.transcribe(mic: .default) {
  switch event {
  case .partial(let seg): render(seg)  // on device only
  case .final(let seg):   store(seg.deidentified)
  }
}
Syntony core asr · diarization · de-id c ffi jni wasm iOS swift package Android aar / maven Web npm · wasm bundle same code · same redaction behavior · every platform

One core. Three runtimes.

One compiled pipeline

The pipeline ships as a single compiled unit per platform — not three parallel implementations drifting apart. A fix lands everywhere at once.

Thin native adapters

C FFI on iOS, JNI on Android, WebAssembly in the browser. Each adapter is a binding layer, not a rewrite — platform-native packaging on top.

Deterministic tokens

De-identification is one shared Rust core: the same utterance produces the same tokens on every platform, so transcripts stay consistent across your mobile and web clients.

What never leaves the device can never leak.

Built for teams answering to Loi 25, GDPR or HIPAA — where the cheapest byte to protect is the one that was never collected.

raw audio
Processed in memory, on device. Never uploaded, never written to a server.
raw transcript
Exists only inside the SDK process. Your application receives de-identified text.
identifiers
Phone, date of birth, RAMQ and addresses are tokenized deterministically — [TEL_1] [RAMQ_1] — and spoken names are caught by on-device NER — [NOM_1].
network
A one-time model download. Inference runs offline; the SDK sends no audio and no transcript anywhere.

Request access

Syntony SDK is in closed development. Request access by email and we’ll be in touch as the private beta opens.

From the team behind MedicalScribe — Syntony’s clinical dictation product for Québec physicians, built on this pipeline.

Request access

Opens your mail client with a short template — answered by email. Private beta · no newsletter, one reply.