Besprechungen und Transkription
Control Center kann ein Gespräch aufzeichnen und dir ein aufgeräumtes Ergebnis zurückgeben: eine Zusammenfassung, Aufgaben und Entscheidungen. Spracherkennung und Sprechertrennung laufen auf deiner eigenen Hardware. Denk an Granola, nur selbst gehostet und an denselben Arbeitsbereich angeschlossen, in dem deine Agenten leben.
Was eine Besprechung ist
Abschnitt betitelt „Was eine Besprechung ist“Eine Besprechung ist eine aufgezeichnete, transkribierte Sitzung. Sie ist nicht dasselbe wie ein Kalendertermin: Ein Termin ist eine geplante Verpflichtung, die von Google synchronisiert wird, eine Besprechung etwas, das du tatsächlich aufgezeichnet hast. Beides lässt sich verknüpfen, weil du eine Aufnahme aus einem Termin starten kannst, bleibt aber ein eigener Datensatz.
Jede Besprechung ist an den Arbeitsbereich gebunden, wie alles andere in Control Center. Besprechungen, die in einem Arbeitsbereich aufgezeichnet wurden, tauchen in einem anderen nie auf.
Wo die Arbeit stattfindet
Abschnitt betitelt „Wo die Arbeit stattfindet“„On-device“ trifft die Intuition, nicht die Bezeichnung. Der Client nimmt das
Audio auf und streamt Frames mit 16 kHz PCM16 an die Maschine, auf der
cc_server läuft. Dieser Host erledigt alles Weitere: Er schreibt die WAVs
je Kanal unter <dataDir>/meetings/<meetingId>/, transkribiert in einem
Worker-Isolate, filtert das Echo und diarisiert im Nachgang. Auf einem
eigenständigen Desktop ist dieser Host dieselbe Maschine. Zeigt der Client auf
einen entfernten Server, ist er es nicht. „Nichts verlässt mein Laptop“ gilt
also nur, wenn der Server dein Laptop ist.
Es gibt eine weitere Ausnahme, und sie ist die entscheidende.
Alles vor der Zusammenfassung (Aufnahme, Transkription, Echounterdrückung, Diarisierung, Abgleich der Stimmabdrücke) läuft auf dem Server, ohne Netzwerkaufruf.
Welche Modelle mitgeliefert werden
Abschnitt betitelt „Welche Modelle mitgeliefert werden“Die Modelle für Embeddings, Diarisierung und Sprache (ASR) werden beim ersten Start zwingend installiert (in einer Demo übersprungen). Sprechertrennung und Aufnahme stehen damit ohne Besuch der Einstellungen bereit. ASR bleibt wählbar. Es sind mehrere hundert Megabyte, und in der Auswahl liegen vier Builds. Sprache braucht nach diesem ersten Download trotzdem einen Neustart, weil der Transkribierer sein Modell auflöst, bevor der Abruf fertig sein kann.
Die vier Einträge der Auswahl, unterschiedlich in Größe, Sprachabdeckung und Genauigkeit:
- Parakeet TDT 0.6B v3: mehrsprachig, der empfohlene Standard (~600 MB)
- Parakeet TDT 0.6B v2: Englisch (~480 MB)
- Whisper large-v3-turbo: mehrsprachig (~626 MB)
- Whisper base.en: nur Englisch, der kleine historische Standard (~198 MB)
Modelle sind die einzigen Artefakte, die der Server zur Laufzeit abruft. Jede native Bibliothek liegt im Bundle.
Wie die Aufnahme funktioniert
Abschnitt betitelt „Wie die Aufnahme funktioniert“Eine Besprechung nimmt zwei Audiokanäle gleichzeitig auf:
- Du („me“): dein Mikrofon.
- Die anderen („them“): die Audioausgabe der Besprechung, aufgenommen über eine treiberlose Loopback-Strecke. Core-Audio-Taps auf Prozess und Gerät unter macOS, WASAPI-Loopback unter Windows, ein Monitor von PipeWire oder PulseAudio unter Linux.
Weil die beiden Kanäle getrennt aufgenommen werden, ist das Transkript von
Anfang an Sprechern zugeordnet: Deine Wörter sind mit me markiert, alle
anderen im Gespräch mit them.
Deine eigene Stimme läuft von der Systemausgabe ins Mikrofon zurück und würde sonst zweimal transkribiert. Zwei Filter verhindern das. AEC3 auf Signalebene läuft bei jeder Aufnahme im Remote-Modus und ist dort Pflicht. Lädt die native AEC-Bibliothek nicht, verweigert die Aufnahme den Start, statt still ein echoverschmutztes Mikrofon zu streamen. (Im Vor-Ort-Modus gibt es kein Referenzsignal der Gegenseite, gegen das sich etwas auslöschen ließe. AEC ist dort eine reine Durchleitung.) Darüber läuft auf jeder Plattform ein Echo-Filter auf Textebene auf dem Host.
Jegliche Mikrofonverarbeitung des Betriebssystems ist absichtlich abgeschaltet. Schaltest du unter macOS die eigene Echounterdrückung oder die automatische Verstärkung der Plattform ein, wechselt das Mikrofon auf Voice Processing I/O. In diesem Build hat das sowohl das Mikrofon als auch den Systemaudio-Tap lahmgelegt.
Transkription und Diarisierung
Abschnitt betitelt „Transkription und Diarisierung“Während der Aufnahme wird das Audio in gleitenden Fenstern dekodiert, abseits des UI-Threads. Ein Fenster endet bei einer kurzen nachlaufenden Stille oder bei einer maximalen Fensterlänge. Jedes Fenster wird ein Transkriptsegment mit Sprecher-Tag und Offsets in Millisekunden.
Fenster, die nie über eine RMS-Schwelle gestiegen sind, werden ganz ohne Dekodierung übersprungen. Ein Sprachmodell gibt Stille als halluzinierte Token ohne Sprachinhalt aus, und die Dekodierung wäre verschwendete CPU. Die praktische Folge: Ein durchgehend sehr leiser Sprecher erzeugt kein Transkript. Kommt jemand leer zurück, prüfe den Eingangspegel, bevor du dem Modell die Schuld gibst.
Nach dem Stopp läuft die Diarisierung offline über die Aufnahme und teilt
den entfernten Kanal in einzelne Sprecher (Person 1, Person 2, …), die du
umbenennen kannst. Die Sprecherzahl kommt aus einer Clustering-Schwelle, nicht
aus einer Zahl, die du setzt. Sie ist ein Artefakt dieser Schwelle, und ein
leiser oder überlappender Sprecher kann mit einem Nachbarn zusammenfallen. Das
Transkript erscheint als Zeilen der Form [mm:ss] SPEAKER: text.
Stimmprofile
Abschnitt betitelt „Stimmprofile“Einen Sprecher umzubenennen beschriftet mehr als ein einziges Transkript. Control Center kann den Stimmabdruck als Stimmprofil speichern und die Person in späteren Besprechungen automatisch wiedererkennen. Benennst du einen diarisierten Sprecher, wirst du gefragt, ob der Stimmabdruck gespeichert werden soll. Tust du das, wird er in einen laufenden Zentroiden für diesen Namen eingemischt und neue Sprecher per Kosinusähnlichkeit dagegen abgeglichen. Dieselbe Person erscheint beim nächsten Mal unter ihrem Namen, ohne dass du sie erneut zuordnest.
Stimmprofile gehören zum Arbeitsbereich und überschreiten diese Grenze nie. Verwalten kannst du sie unter Einstellungen → Arbeitsbereich → Besprechungen. Benennst du einen zuvor gespeicherten Sprecher um, wird der alte Name ausgetragen und der neue zur Einschreibung angeboten. Löschst du ein Profil, verschwindet der gespeicherte Stimmabdruck. Namen, die schon auf frühere Besprechungen angewendet wurden, bleiben stehen.
Die Zusammenfassungs-Pipeline
Abschnitt betitelt „Die Zusammenfassungs-Pipeline“Stoppt eine Aufnahme, veröffentlicht der Server ein MeetingRecordingStopped-
Domain-Ereignis. Die eingebaute
Pipeline-Vorlage meeting_summary wird von diesem Ereignis ausgelöst. Der
Recorder wartet nicht darauf. Die Besprechung durchläuft einfach ihren
Statuslebenszyklus:
recording → processing → doneDer Zusammenfassungsagent bekommt den Titel, deine groben Live-Notizen und das Transkript und gibt strukturiertes JSON zurück. Welche Abschnitte er schreibt, bestimmt die aktive Vorlage für Besprechungsnotizen des Arbeitsbereichs (Einstellungen → Arbeitsbereich → Besprechungen). Die aktive Vorlage gilt für neue Zusammenfassungen und für Läufe, die du neu anstößt. Die Persistenzschritte der Pipeline schreiben dieses JSON danach in einzelne Zeilen:
enhancedNotesundsummary→ die Notizen der Besprechung- jede Aufgabe → eine Zeile
MeetingActionItem(Inhalt, Verantwortliche, optionaler Ticket-Link) - jede Entscheidung → eine Zeile
MeetingDecision
Aufgaben und Entscheidungen werden nie aus freiem Markdown gelesen, nur aus
den strukturierten Arrays des Agenten. Liefert ein Lauf keine strukturierte
Ausgabe, werden die Persistenzschritte übersprungen und das rohe Transkript
bleibt als Rückfall, damit der Datensatz nicht verloren geht. Nichts in der
Pipeline setzt die Besprechung auf done. Das übernimmt ein einzelner
Reconciler aus dem Abschlussereignis des Laufs. So kann ein fehlgeschlagener
Geschwisterschritt eine halb geschriebene Besprechung nicht in einem Zustand
stehen lassen, der schon fertig aussieht.
Wo Besprechungen auftauchen
Abschnitt betitelt „Wo Besprechungen auftauchen“| Oberfläche | Was sie zeigt |
|---|---|
/meetings |
Die Liste der Besprechungen, mit Anzahl der Aufgaben und Entscheidungen |
/meetings/record |
Das HUD der laufenden Aufnahme: deine Notizen auf der einen Seite, das streamende Transkript auf der anderen |
/meetings/:meetingId |
Die Einzelansicht einer Besprechung: die Tabs Notizen, Transkript, Aufgaben und Entscheidungen |
| Einstellungen → Arbeitsbereich → Besprechungen | Notizvorlagen und gespeicherte Stimmprofile für diesen Arbeitsbereich |
Plattformunterstützung
Abschnitt betitelt „Plattformunterstützung“Die Aufnahme kommt auf allen drei Desktop-Plattformen ohne Treiber aus (Core-Audio-Taps unter macOS, WASAPI unter Windows, PipeWire unter Linux).
Auch der Web-Client nimmt auf. Die Desktop-Rahmung des übrigen Texts
verdeckt das leicht: Der Browser holt dein Mikrofon über getUserMedia und das
Audio der Besprechung über getDisplayMedia (Bildschirmfreigabe), rechnet auf
16 kHz PCM16 herunter und streamt an denselben Host. Dort gelten drei
Einschränkungen:
- Die freigegebene Fläche muss eine Audiospur tragen. Safari, Firefox und die Vollbildfreigabe unter macOS liefern keine, und die Aufnahme verweigert den Start.
- Es gibt kein natives AEC3. Für das Mikrofon wird die eigene Echounterdrückung des Browsers angefordert. Der Echo-Filter auf Textebene auf dem Host läuft trotzdem. Das HUD zeigt eine Eingangspegelanzeige, gespeist aus dem PCM des Mikrofons.
- „Zusammenfassung neu erstellen“ und das Abbrechen der Verarbeitung gibt es nur auf dem Desktop.
Die Kalenderaktion Aufnehmen und verknüpfen gibt es nur auf dem Desktop und meldet das im Web ausdrücklich, obwohl der Aufnahmeablauf des Besprechungsbildschirms selbst dort funktioniert.
Siehe auch
Abschnitt betitelt „Siehe auch“- Kalender und Terminplanung: eine Besprechung direkt aus einem Kalendertermin aufzeichnen
- Pipelines und Automatisierung: die Engine hinter
meeting_summary - Tickets und Delegation: Aufgaben einer Besprechung mit Tickets verknüpfen
- Domain-Ereignisse:
MeetingRecordingStoppedundMeetingStartingSoon - Eine Besprechung aufzeichnen und zusammenfassen