Kurz gesagt
- JustRec erstellt Untertitel mit Whisper, das über WhisperKit auf dem Mac läuft. Deine Stimme verlässt deinen Computer also nie.
- Wir nutzen einen komprimierten Core-ML-Build von Whisper large-v3 turbo mit etwa 626 MB, einmal heruntergeladen.
- Der erste Ladevorgang dauerte etwa drei Minuten und brauchte viel temporären Speicherplatz, weil Core ML das Modell für deinen Chip spezialisiert. Danach lädt es in Sekunden.
- Die Transkription startet aus der Mikrofonspur, sobald du stoppst, parallel zum Export des Videos.
Du kannst Whisper auf dem Mac komplett lokal betreiben: Die Modellgewichte sind Open Source, und WhisperKit führt sie über Core ML auf Apple Silicon aus. So erstellt JustRec für jede Aufnahme Untertitel, ohne eine Sekunde Ton an irgendwen zu schicken. Unten: wie wir das eingerichtet haben, welches Modell wir gewählt haben und was uns überrascht hat (ein Download von 626 MB, ein erster Ladevorgang von etwa drei Minuten und einmal eine volle Festplatte).
Warum die Untertitel auf dem Mac laufen mussten
Das Versprechen auf unserer Startseite ist einfach: Deine Stimme geht nie an eine externe KI. Unsere Nutzer nehmen Kundenarbeit auf: ein Design-Review mit Namen auf dem Bildschirm, ein Angebot, Zeile für Zeile erklärt, einen Bug im Admin-Bereich eines Kunden. Diesen Ton an eine Transkriptions-API zu schicken hieße: ein Unternehmen mehr, das die Daten ihrer Kunden verarbeitet, eine Zeile mehr in der Datenschutzerklärung und eine Sache mehr, die man einem vorsichtigen Kunden erklären muss. Die Stimme auf dem Mac zu lassen passt zum Rest des Produkts, das local-first gebaut ist und geteilte Kopien in der EU speichert.
Es gab auch praktische Gründe:
- Keine Kosten pro Minute. Eine Cloud-API berechnet jede Minute Ton. Auf dem Mac kostet es den Strom des Nutzers.
- Funktioniert offline. Wenn das Modell einmal heruntergeladen ist, klappen Untertitel auch im Zug.
- Untertitel vor dem Upload. Die Transkription kann starten, sobald du Stopp drückst, während das Video noch exportiert wird.
Einen längeren, nicht technischen Vergleich haben wir in Lokale Transkription oder Cloud geschrieben. Dieser Artikel ist die technische Seite.
WhisperKit und Core ML
Whisper ist das Spracherkennungsmodell von OpenAI, veröffentlicht mit Code und Gewichten unter der MIT-Lizenz. Es beherrscht mehrsprachige Spracherkennung und Spracherkennung im Sinne von „welche Sprache ist das“, und genau das brauchen wir für Untertitel in der Sprache, die du sprichst.
Damit es auf dem Mac gut läuft, brauchst du es im Format Core ML, damit es die Neural Engine und die GPU nutzen kann. Wir nutzen WhisperKit, Teil des Open-Source-Swift-SDK von Argmax (MIT-Lizenz). Es lädt Core-ML-Builds von Whisper von Hugging Face, speichert sie lokal zwischen und gibt dir eine Swift-API für Transkription mit Wort-Zeitstempeln und Sprachaktivitätserkennung. Es braucht macOS 14, liegt also unter unserem eigenen Minimum von macOS 15.
Wir haben uns auch Apples eigenen SpeechAnalyzer angesehen. Er ist vielversprechend, braucht aber macOS 26, und JustRec unterstützt macOS 15. WhisperKit läuft überall, wo unsere App läuft.
Das Modell auswählen
Whisper gibt es in mehreren Größen, und der Kompromiss ist der übliche: Größere Modelle sind genauer und langsamer. Die Tabelle von OpenAI selbst:
| Größe | Parameter | Benötigter Speicher | Relative Geschwindigkeit |
|---|---|---|---|
| tiny | 39 M | etwa 1 GB | etwa 10x |
| base | 74 M | etwa 1 GB | etwa 7x |
| small | 244 M | etwa 2 GB | etwa 4x |
| medium | 769 M | etwa 5 GB | etwa 2x |
| large | 1.550 M | etwa 10 GB | 1x |
| turbo | 809 M | etwa 6 GB | etwa 8x |
Aus der README von openai/whisper, geprüft im November 2026. Die relative Geschwindigkeit vergleicht die Modelle untereinander, nicht mit einem Mac.
Turbo ist die interessante Zeile: nah am großen Modell, mit etwa halb so vielen Parametern und ein Vielfaches schneller. Auf dem Mac lädst du diese PyTorch-Checkpoints aber nicht herunter. Du lädst eine Core-ML-Konvertierung, und Argmax veröffentlicht viele Varianten. Ein paar aus ihrem Repository, mit der Größe des jeweiligen Downloads:
| Variante | Downloadgröße | Hinweise |
|---|---|---|
| small | etwa 216 MB | Schnell und leicht, weniger genau |
| distil-large-v3 | etwa 594 MB | Destilliertes großes Modell |
| large-v3-v20240930 (turbo) | etwa 547 MB oder 626 MB | Zwei komprimierte Builds von large-v3 turbo |
| large-v3 | etwa 947 MB | Das vollständige große Modell |
Größen aus dem Repository argmaxinc/whisperkit-coreml auf Hugging Face, geprüft im November 2026.
Wir nutzen large-v3-v20240930_626MB. Der Name v20240930 steht für die Version, in der OpenAI large-v3 turbo hinzugefügt hat. OpenAI beschreibt es als optimierte Version von large-v3 mit schnellerer Transkription und minimalem Genauigkeitsverlust. Seine Konfiguration bestätigt den Trick: der volle Encoder mit 32 Schichten, aber nur 4 Decoder-Schichten.
Warum dieses? Wir brauchten nicht nur Englisch, sondern auch korrektes Italienisch, und mit diesem Modell war Italienisch in unseren Tests richtig. Auf unserem Entwicklungs-Mac hat es etwa 15 Sekunden Ton in 3 Sekunden transkribiert. Es ist außerdem das Modell, das Argmax in den Beispielen seiner eigenen README nutzt.
Der Preis ist die Größe: 626 MB sind viel für eine App, die sonst klein ist. Wir laden es einmal herunter, in den Ordner Application Support der App, und sagen dem Nutzer, was passiert.
Der erste Ladevorgang: drei Minuten und eine volle Festplatte
Der Download war nicht der langsame Teil. Als wir das Modell zum ersten Mal geladen haben, hat es etwa drei Minuten gedauert, bevor überhaupt etwas transkribiert wurde, und es hat viel temporären Speicherplatz gebraucht. Einmal hat es die Festplatte gefüllt.
Erster Ladevorgang
Etwa drei Minuten bis zum ersten Wort
Dazu viel temporärer Speicherplatz. Einmal hat es die Festplatte gefüllt.
Die Ursache
Spezialisierung durch Core ML
Das Modell wird beim ersten Laden für deinen Chip kompiliert und außerhalb der App zwischengespeichert.
Die Änderung
Beim Einrichten laden
Das Modell wird während des Onboardings heruntergeladen und einmal geladen, die Wartezeit liegt also vor der ersten Aufnahme.
Die Dokumentation von WhisperKit erklärt, warum. Core-ML-Modelle werden in einem geräteunabhängigen Format heruntergeladen und müssen für deinen Chip „spezialisiert“ werden, bevor sie laufen. Core ML macht das beim ersten Laden des Modells und speichert die spezialisierten Dateien auf der Festplatte, außerhalb der App. Apple verwaltet diesen Cache, und er wird nach jedem Betriebssystem-Update geleert oder wenn das Modell lange nicht genutzt wird. Wenn der Cache greift, dauert das Laden Sekunden: bei uns etwa 3 Sekunden.
Was wir geändert haben, nachdem wir das wussten:
- Bereite das Modell bei der Ersteinrichtung vor. Während du Berechtigungen erteilst und einen Kurzbefehl wählst, lädt JustRec das Modell herunter, lädt es einmal und entlädt es dann wieder. Die drei Minuten passieren vor deiner ersten Aufnahme, nicht danach.
- Zeig den Fortschritt. Der Download meldet seinen Fortschritt, damit ein großer erster Download nicht wie eine eingefrorene App aussieht.
- Rechne nach macOS-Updates wieder damit. Weil der Cache geleert werden kann, kann die erste Transkription nach einem Update wieder langsam sein. Das ist normal.
- Lass Platz auf der Festplatte. Wenn dein Mac fast voll ist, merkst du es beim Schritt der Spezialisierung.
Von der Aufnahme zur Untertiteldatei
Die Pipeline ist kurz, und die meiste Arbeit steckt in den Details.
Ton aus der richtigen Spur. Wir nehmen Mikrofon und Systemaudio als getrennte Dateien auf (der Artikel zu ScreenCaptureKit erklärt, warum). Für die Untertitel nutzen wir nur das Mikrofon oder Systemaudio, wenn es kein Mikrofon gibt. Das heißt: keine Mitteilungstöne oder Video-Soundtracks, die das Modell verwirren, und die Transkription kann sofort starten, statt auf die exportierte MP4 zu warten.
16 kHz mono. Whisper erwartet Ton in 16 kHz mono. Wir lesen die Spur mit einem AVAssetReaderAudioMixOutput, der beim Lesen umwandelt. Wenn eine Aufnahme mehrere Mikrofonstücke hat (du hast mittendrin das Mikrofon gewechselt), werden sie an ihren echten Startzeiten platziert und Lücken mit Stille gefüllt, damit die Zeitstempel zum Video passen.
let options = DecodingOptions(
language: code, // nil heißt „erkennen“
detectLanguage: code == nil,
skipSpecialTokens: true,
wordTimestamps: true,
chunkingStrategy: .vad // nach Sprachaktivität aufteilen
)
let results = try await pipe.transcribe(audioArray: samples, decodeOptions: options)
Wort-Zeitstempel zu lesbaren Untertiteln. Die Segmente von Whisper sind für einen Untertitel oft zu lang. Wir fordern Wort-Zeitstempel an und bauen die Einträge selbst neu: höchstens 84 Zeichen und 6 Sekunden pro Eintrag, ein Umbruch nach einem Punkt oder Fragezeichen, sobald eine Zeile eine gewisse Länge hat, und zwei Zeilen, die nach Länge ausbalanciert sind. Überlappende Einträge werden gekürzt, damit nie zwei gleichzeitig erscheinen.
Zwei Dateien neben dem Video. Das Ergebnis wird als SRT und VTT neben der MP4 in deiner Mediathek gesichert. Wenn du teilst, geht die VTT mit dem Video hoch. Wenn die Untertitel nach dem Upload fertig werden, kommen sie zum Link dazu, sobald sie bereit sind. Die ersten Worte werden außerdem zum Titelvorschlag für das Video.
Wenn du dasselbe für deine eigenen Aufnahmen mit irgendeinem Werkzeug machen willst, geht unser Leitfaden, wie du einer Bildschirmaufnahme am Mac Untertitel hinzufügst, die Möglichkeiten durch.
Spracherkennung
In den Einstellungen lassen sich die Untertitel auf automatisch, Italienisch oder Englisch stellen. Bei automatisch erkennt Whisper die Sprache vor dem Transkribieren, und wir protokollieren, was es erkannt hat. Das funktioniert für die Sprachen, die JustRec unterstützt, darunter Englisch, Italienisch, Spanisch, Französisch, Deutsch und Portugiesisch, und das zählt für Agenturen, die über Grenzen hinweg arbeiten.
Die automatische Erkennung hat die üblichen Schwachstellen: sehr kurze Aufnahmen, Aufnahmen, die mit Stille beginnen, oder jemand, der mittendrin die Sprache wechselt. Wenn du immer dieselbe Sprache sprichst, stell sie von Hand ein, und das Raten fällt weg.
Was wir anderen Entwicklern sagen würden
Whisper in einer Mac-App ausliefern
- Wähl das Modell nach den Sprachen deiner Nutzer, nicht nach englischen Benchmarks.
- Plan den ersten Ladevorgang ein: Download, dann Spezialisierung durch Core ML, dann die eigentliche Arbeit.
- Erledige diesen ersten Ladevorgang beim Onboarding, mit sichtbarem Fortschritt.
- Transkribier die sauberste Tonspur, die du hast, nicht die fertige Mischung.
- Bau deine Untertitel selbst aus Wort-Zeitstempeln, rohe Segmente lesen sich schlecht.
- Teste mit wenig Speicherplatz und nach einem macOS-Update.
Wie es weitergeht
Übersetzte Untertitel sind geplant: Die Transkription bleibt auf dem Mac, und die Übersetzung würde es auch. Außerdem behalten wir Apples SpeechAnalyzer im Auge, für den Tag, an dem unser Minimum bei macOS es erlaubt.
Warum Untertitel den Zuschauern so wichtig sind, liest du in Untertitel für Videos: So werden sie auch ohne Ton geschaut. Alles andere, was die App kann, steht gesammelt in der Funktionsübersicht.
Quellen
- OpenAI Whisper auf GitHub: Modellgrößen, Parameter, Speicher und relative Geschwindigkeit, turbo, MIT-Lizenz (auf Englisch), geprüft im November 2026.
- Changelog von OpenAI Whisper: Version v20240930 fügt das Modell large-v3-turbo hinzu (auf Englisch), geprüft im November 2026.
- Argmax OSS Swift (WhisperKit) auf GitHub: Voraussetzungen, Modell-Downloads, MIT-Lizenz (auf Englisch), geprüft im November 2026.
- Konfigurationsquellcode von WhisperKit, Prewarm und Spezialisierung durch Core ML (auf Englisch), geprüft im November 2026.
- Core-ML-Modelle von Argmax WhisperKit auf Hugging Face: Namen und Größen der Varianten, geprüft im November 2026.
- Modellkonfiguration von openai_whisper-large-v3-v20240930_626MB: 32 Encoder-Schichten, 4 Decoder-Schichten, geprüft im November 2026.
- Apple Developer: SpeechAnalyzer (macOS 26.0, auf Englisch), geprüft im November 2026.
Häufige Fragen
Kann man Whisper auf dem Mac ohne Cloud betreiben?
Ja. Die Gewichte von Whisper sind Open Source unter der MIT-Lizenz, und Bibliotheken wie WhisperKit wandeln sie in Core ML um, damit sie lokal auf Apple Silicon laufen. Nachdem das Modell einmal heruntergeladen ist, braucht die Transkription keine Internetverbindung.
Wie groß ist das Whisper-Modell?
Das hängt von der Variante ab. Unter den Core-ML-Builds von Argmax hat small etwa 216 MB und das vollständige large-v3 etwa 947 MB. JustRec nutzt einen komprimierten Build von large-v3 turbo mit etwa 626 MB.
Warum ist der erste Ladevorgang von Whisper auf dem Mac so langsam?
Core ML spezialisiert das Modell beim ersten Laden für deinen konkreten Chip und speichert das Ergebnis auf der Festplatte zwischen. Mit unserem Modell hat das etwa drei Minuten gedauert. Spätere Ladevorgänge nutzen den Cache und dauern ein paar Sekunden, bis ein macOS-Update ihn leert.
Erkennt Whisper die Sprache automatisch?
Ja, Whisper kann die gesprochene Sprache vor dem Transkribieren erkennen. Wenn du immer dieselbe Sprache sprichst, vermeidest du mit einer festen Einstellung gelegentliche Fehlgriffe bei kurzen oder gemischtsprachigen Aufnahmen.
Schickt JustRec meine Stimme an einen KI-Dienst?
Nein. Die Untertitel entstehen auf deinem Mac mit einem Spracherkennungsmodell, das lokal läuft. Nur die Untertiteldatei wird mit dem Video hochgeladen, wenn du es teilst.



