Schůzky a přepis
Control Center umí nahrát hovor a vrátit ti čistý zápis: shrnutí, akční položky a rozhodnutí. Rozpoznávání řeči i oddělení řečníků běží na tvém hardwaru. Je to jako Granola, jen na vlastním serveru a ve stejném pracovním prostoru, ve kterém žijí agenti.
Co je schůzka
Sekce “Co je schůzka”Schůzka je nahraná a přepsaná relace. Není totéž co událost v kalendáři: událost je naplánovaný závazek synchronizovaný z Google, schůzka je to, co se skutečně nahrálo. Obojí jde propojit, protože nahrávání můžeš spustit z události, ale zůstávají to samostatné záznamy.
Každá schůzka patří do pracovního prostoru, jako všechno ostatní v Control Center. Schůzky nahrané v jednom pracovním prostoru se v jiném nikdy neukážou.
Kde práce probíhá
Sekce “Kde práce probíhᔄNa zařízení“ je správný instinkt a špatné slovo. Klient zvuk zachytí
a na stroj, kde běží cc_server, streamuje rámce 16 kHz PCM16.
Hostitel udělá zbytek: WAV po kanálech zapíše do
<dataDir>/meetings/<meetingId>/, přepisuje v izolátu workeru, odfiltruje
ozvěnu a diarizaci spustí až dodatečně. Na samostatném desktopu je hostitel
tentýž stroj. U vzdáleného serveru ne. „Z notebooku nic neodejde“ tedy
platí jen tehdy, když je server tvůj notebook.
Je tu ještě jedna výjimka a právě ta je důležitá.
Všechno před shrnutím běží na serveru a bez síťového volání: záznam, přepis, potlačení ozvěny, diarizace i párování hlasových otisků.
Které modely se dodávají
Sekce “Které modely se dodávají”Modely pro embedding, diarizaci a řeč (ASR) se při prvním startu vynuceně nainstalují (u dema se to přeskočí), takže oddělení řečníků i nahrávání jsou k dispozici bez návštěvy nastavení. ASR pořád vybíráš. Má několik set megabajtů a ve výběru jsou čtyři sestavení. Řeč po tom prvním stažení pořád potřebuje jeden restart, protože přepisovač si model vyřeší dřív, než stahování doběhne.
Čtyři položky ve výběru se liší velikostí, pokrytím jazyků a přesností:
- Parakeet TDT 0.6B v3 — vícejazyčný, doporučený výchozí (~600 MB)
- Parakeet TDT 0.6B v2 — angličtina (~480 MB)
- Whisper large-v3-turbo — vícejazyčný (~626 MB)
- Whisper base.en — jen angličtina, malý historický výchozí (~198 MB)
Modely jsou jediné artefakty, které server za běhu stahuje. Každá nativní knihovna je v balíčku.
Jak záznam funguje
Sekce “Jak záznam funguje”Schůzka nahrává dva zvukové kanály najednou:
- Vy („me“): tvůj mikrofon.
- Ostatní („them“): zvukový výstup schůzky, zachycený loopbackem bez ovladače. Na macOS jsou to tap procesů a zařízení v Core Audio, na Windows WASAPI loopback, na Linuxu monitor PipeWire / PulseAudio.
Protože se kanály berou odděleně, přepis má řečníky od začátku: tvoje
slova nesou značku me, všichni na hovoru značku them.
Vlastní hlas se ze systémového výstupu vrací do mikrofonu a jinak by se přepsal dvakrát. Zastaví to dva filtry. AEC3 na úrovni signálu běží u každého nahrávání na dálku a je povinné. Když nativní knihovna AEC nejde načíst, nahrávání se odmítne spustit, místo aby tiše streamovalo mikrofon plný ozvěny. (Při osobní schůzce chybí vzdálený referenční signál, proti kterému by se ozvěna rušila, takže AEC tam signál jen propustí.) Nad tím na každé platformě běží textový filtr ozvěny na straně hostitele.
Veškeré zpracování mikrofonu v operačním systému je schválně vypnuté. Když na macOS zapneš vlastní potlačení ozvěny nebo automatické zesílení, mikrofon přepne na Voice Processing I/O. V tomhle sestavení to vyřadilo mikrofon i tap systémového zvuku.
Přepis a diarizace
Sekce “Přepis a diarizace”Během nahrávání se zvuk dekóduje v posuvných oknech, ustřižených na krátkém koncovém tichu nebo na maximální délce okna, mimo vlákno UI. Z každého okna vznikne úsek přepisu se značkou řečníka a offsetem v milisekundách.
Okna, která nikdy nepřekročila práh RMS, se přeskočí úplně bez dekódování. Model řeči z ticha vyrábí halucinované tokeny, které nejsou řeč, a dekódování je zbytečné CPU. Prakticky: trvale velmi tichý řečník v přepisu není. Když se někdo vrátí prázdný, nejdřív zkontroluj úroveň vstupu, než to svedeš na model.
Po zastavení běží diarizace offline nad nahrávkou a rozdělí vzdálený
kanál na jednotlivé řečníky (Person 1, Person 2, …), které můžeš
přejmenovat. Počet řečníků se odvodí z prahu shlukování, ne z čísla,
které zadáš. Je to artefakt prahu: tichý nebo překrývající se řečník se
může sloučit se sousedem. Přepis se vykreslí jako řádky
[mm:ss] SPEAKER: text.
Hlasové profily
Sekce “Hlasové profily”Přejmenování řečníka není jen popisek v jednom přepisu. Control Center umí hlasový otisk uložit jako hlasový profil a v dalších schůzkách ho pozná samo. Když diarizovaného řečníka pojmenuješ, zeptá se, jestli otisk uložit. Když ano, přimíchá se do průběžného centroidu toho jména a s novými řečníky se porovná kosinovou podobností. Stejný člověk se příště ukáže pod svým jménem a nemusíš ho znovu přejmenovávat.
Hlasové profily patří do pracovního prostoru a hranici nepřekročí. Spravuješ je v Nastavení → Pracovní prostor → Schůzky. Přejmenování řečníka, který už byl uložený, zruší zápis starého jména a nabídne zapsat nové. Smazání profilu odstraní uložený hlasový otisk. Jména, která už u starších schůzek jsou, zůstanou.
Pipeline shrnutí
Sekce “Pipeline shrnutí”Když nahrávání skončí, server publikuje MeetingRecordingStopped jako
doménovou událost. Vestavěná
šablona pipeline meeting_summary se tou událostí spustí. Nahrávač
na ni nečeká. Schůzka jen projde stavy:
recording → processing → doneAgent pro shrnutí dostane název, tvoje hrubé živé poznámky a přepis a vrátí strukturované JSON. Které oddíly napíše, určuje aktivní šablona poznámek ze schůzky v pracovním prostoru (Nastavení → Pracovní prostor → Schůzky). Aktivní šablona platí pro nová i znovu spuštěná shrnutí. Kroky pipeline, které data ukládají, pak zapíšou to JSON do samostatných řádků:
enhancedNotesasummary→ poznámky schůzky- každá akční položka → řádek
MeetingActionItem(obsah, vlastník, volitelný odkaz na ticket) - každé rozhodnutí → řádek
MeetingDecision
Akční položky a rozhodnutí se nikdy nečtou z volného markdownu, jen
ze strukturovaných polí agenta. Když běh nevrátí strukturovaný výstup,
kroky uložení se přeskočí a jako záloha zůstane surový přepis, takže
o záznam nepřijdeš. Nic v pipeline neoznačí schůzku jako done. To udělá
jeden reconciler z koncové události běhu. Pád sousedního kroku tak
nenechá napůl zapsanou schůzku, která už vypadá jako hotová.
Kde se schůzky ukazují
Sekce “Kde se schůzky ukazují”| Plocha | Co ukazuje |
|---|---|
/meetings |
Seznam schůzek s počty akčních položek a rozhodnutí |
/meetings/record |
HUD živého nahrávání: na jedné straně poznámky, na druhé streamovaný přepis |
/meetings/:meetingId |
Detail schůzky: záložky Poznámky, Přepis, Akční položky a Rozhodnutí |
| Nastavení → Pracovní prostor → Schůzky | Šablony poznámek a uložené hlasové profily pro tento pracovní prostor |
Podpora platforem
Sekce “Podpora platforem”Záznam je na všech třech desktopových platformách bez ovladače (tap Core Audio na macOS, WASAPI na Windows, PipeWire na Linuxu).
Nahrává i webový klient, což rámování zbytku stránky kolem desktopu
snadno schová. Prohlížeč vezme mikrofon přes getUserMedia a zvuk
schůzky přes getDisplayMedia (sdílení obrazovky), převzorkuje ho na
16 kHz PCM16 a streamuje na stejného hostitele. Platí tam tři výhrady:
- Sdílená plocha musí nést zvukovou stopu. Safari, Firefox a sdílení celé obrazovky na macOS žádnou nedají a nahrávání se odmítne spustit.
- Nativní AEC3 tam není. U mikrofonu se požádá o potlačení ozvěny v prohlížeči. Textový filtr ozvěny na hostiteli pořád běží. HUD ukazuje měřič úrovně vstupu z PCM mikrofonu.
- Znovu spustit shrnutí a zrušit zpracování jde jen na desktopu.
Akce kalendáře Spustit nahrávání a propojit je jen na desktopu a na webu to řekne napřímo, i když vlastní nahrávání na obrazovce schůzek tam funguje.
Viz také
Sekce “Viz také”- Kalendář a plánování: nahraj schůzku přímo z události v kalendáři
- Pipelines a automatizace: motor za
meeting_summary - Tickety a delegování: propoj akční položky schůzky s tickety
- Doménové události:
MeetingRecordingStoppedaMeetingStartingSoon - Nahrajte a shrňte schůzku