Swift package · MIT · macOS 14 and iOS 17

Transcripts with speakers, on‑device.

ScribeKit turns audio files into transcripts that know who said what. NVIDIA Parakeet v3 and speaker diarization run on the Apple Neural Engine: no server, no API key, no Python.

Package.swift

dependencies: [    .package(        url: "https://github.com/pieralukasz/ScribeKit.git",        from: "0.1.0"    ),]

Swift 6. The models (about 460 MB for speech, 20 MB for speakers) download from Hugging Face on first use and are cached on disk.

Transcribe a meeting

import ScribeKitlet transcript = try await Scribe.shared.transcribe(    meetingURL,    options: .init(language: "en"))for segment in transcript.segments {    let name = transcript.speaker(for: segment.speakerID)?.name ?? ""    print("\(name): \(segment.text)")}let srt = try TranscriptRenderer.render(transcript, as: .srt)

What you get

Speech to text with the hard parts done

Parakeet v3 on the Neural Engine

NVIDIA’s TDT 0.6B v3 through FluidAudio’s Core ML port. 25 European languages, fully offline once the model is downloaded.

Speakers, not just words

Offline diarization labels who spoke when. Speakers are numbered in the order they first talk, ready to rename.

Call mode for two tracks

Give it the microphone and the system audio. Everything on the mic is you; only the other side is diarized.

Echo removal

Words your microphone picked up from the speakers are matched against the system track and dropped.

Markdown, SRT, WebVTT, JSON

Front matter for note apps, subtitle cues split at clause boundaries, and a Codable transcript model.

Bring your own recognizer

The segment builder and renderers are plain Swift with no models, so they work with any speech recognizer.

A few lines to a transcript

Add the package, call transcribe, render the result. The guides cover call recordings, output formats and model handling.