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
Synthetic sample — names and numbers are invented.
Audio goes in; a speaker-attributed, de-identified transcript comes out. Every stage runs in-process on the device — there is no server half.
Whisper-class multilingual models run in-process — nothing streams to a cloud ASR. Voice-activity detection trims silence before it costs you compute.
Speaker embeddings segment the conversation into turns — who said what, computed locally, with no voiceprint ever transmitted.
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.
Synthetic example — names and numbers are invented.
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.
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)
}
}
val session = SyntonySession(
languages = listOf(Language.FR, Language.EN),
redaction = Redaction.StructuralAndNames,
)
session.transcribe(Microphone.DEFAULT).collect { event ->
when (event) {
is Partial -> render(event.segment) // on device only
is Final -> store(event.segment.deidentified)
}
}
import { SyntonySession } from "@syntony/sdk";
const session = await SyntonySession.create({
languages: ["fr", "en"],
redaction: "structural+names",
});
for await (const event of session.transcribe(stream)) {
if (event.type === "final") {
store(event.segment.deidentified); // audio never left the tab
}
}
The pipeline ships as a single compiled unit per platform — not three parallel implementations drifting apart. A fix lands everywhere at once.
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.
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.
Built for teams answering to Loi 25, GDPR or HIPAA — where the cheapest byte to protect is the one that was never collected.
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.
Opens your mail client with a short template — answered by email. Private beta · no newsletter, one reply.