Megbeszélések és átírás
A Control Center fel tud venni egy hívást, és cserébe rendezett leiratot ad vissza — összefoglalót, teendőket és döntéseket —, miközben a beszédfelismerés és a beszélőszétválasztás az Ön saját hardverén fut. Képzelje el a Granolát, csak saját üzemeltetésben, és bekötve ugyanabba a munkaterületbe, amelyben az ügynökei élnek.
Mi a megbeszélés
Szekció neve “Mi a megbeszélés”A megbeszélés egy rögzített, átírt munkamenet. Nem ugyanaz, mint egy naptáresemény: az esemény egy Google-ból szinkronizált, ütemezett kötelezettség, a megbeszélés pedig valami, amit ténylegesen felvett. A kettő összekapcsolható, hiszen egy eseményből is indíthat felvételt, de külön rekordok maradnak.
Minden megbeszélés munkaterület-hatókörű, mint a Control Centerben minden más. Az egyik munkaterületen rögzített megbeszélések soha nem bukkannak fel egy másikban.
Hol történik a munka
Szekció neve “Hol történik a munka”Az „eszközön” jó megérzés, de rossz főnév. A kliens rögzíti a hangot, és 16 kHz-es
PCM16-kereteket streamel a cc_server-t futtató gépre. A többit mindent az a
gazdagép végez: a csatornánkénti WAV-fájlokat a
<dataDir>/meetings/<meetingId>/ alá írja, egy worker-izolátumban átír,
visszhangot szűr, és utólag diarizál. Önálló asztali telepítésen ez a gazdagép
ugyanaz a gép. Távoli szerverre mutatva viszont nem — így a „semmi sem hagyja el
a laptopomat” csak akkor igaz, ha a szerver az Ön laptopja.
Van még egy kivétel, és épp ez a fontos.
Az összefoglaló előtti minden lépés — rögzítés, átírás, visszhangszűrés, diarizálás, hanglenyomat-egyeztetés — hálózati hívás nélkül, a szerveren fut.
Milyen modelleket szállít
Szekció neve “Milyen modelleket szállít”Az embedding-, a diarizációs és a beszéd- (ASR-) modellek az első indításkor erőltetetten telepítődnek (demóban kimaradnak), így a beszélőszétválasztás és a felvétel a beállítások megnyitása nélkül is elérhető. Az ASR továbbra is választható — több száz megabájt, és négy build van a választóban. A beszédhez az első letöltés után még egy újraindítás kell, mert az átíró a letöltés befejeződése előtt feloldja a modelljét.
A választó négy eleme méretben, nyelvi lefedettségben és pontosságban tér el:
- Parakeet TDT 0.6B v3 — többnyelvű, az ajánlott alapértelmezés (~600 MB)
- Parakeet TDT 0.6B v2 — angol (~480 MB)
- Whisper large-v3-turbo — többnyelvű (~626 MB)
- Whisper base.en — csak angol, a kicsi, történelmi alapértelmezés (~198 MB)
A szerver futásidőben kizárólag modelleket tölt le; minden natív könyvtár a csomagban érkezik.
Hogyan működik a rögzítés
Szekció neve “Hogyan működik a rögzítés”Egy megbeszélés egyszerre két hangcsatornát rögzít:
- Ön („me”): az Ön mikrofonja.
- A többiek („them”): a megbeszélés hangkimenete, amelyet illesztőprogram nélküli loopback rögzít — macOS-en Core Audio folyamat- és eszköztapok, Windows alatt WASAPI loopback, Linuxon PipeWire / PulseAudio monitor.
Mivel a két csatorna külön rögzül, az átirat már az elejétől beszélőhöz
rendelt: az Ön szavai a me, a hívásban mindenki más a them címkét kapja.
Az Ön saját hangja a rendszerkimenetből visszaszivárog a mikrofonba, és enélkül kétszer átíródna. Két szűrő akadályozza ezt meg. A jel szintjén az AEC3 minden távoli módú felvételen fut, és kötelező — ha a natív AEC-könyvtár nem tölthető be, a felvétel nem indul el, ahelyett hogy csendben visszhangtól szennyezett mikrofont streamelne. (A személyes jelenléti módban nincs távoli végponti referencia, amelyhez képest törölni lehetne, így ott az AEC azonosságként engedi át a jelet.) Ezen felül minden platformon fut egy gazdagépoldali, szövegszintű visszhangszűrő.
Minden operációsrendszer-szintű mikrofonfeldolgozás szándékosan le van tiltva. Ha macOS-en bekapcsolja a platform saját visszhangszűrését vagy automatikus erősítését, a mikrofon Voice Processing I/O módra vált, ami ebben a buildben mind a mikrofont, mind a rendszerhang rögzítését tönkretette.
Átírás és diarizálás
Szekció neve “Átírás és diarizálás”Felvétel közben a hang gördülő ablakokban dekódolódik — rövid záró csendnél vagy egy maximális ablakhossznál elvágva —, a felületi száltól függetlenül. Minden ablak egy beszélővel címkézett átiratszegmens lesz, ezredmásodperces eltolásokkal.
Azok az ablakok, amelyek soha nem emelkedtek egy RMS-küszöb fölé, dekódolás nélkül kimaradnak, mert a beszédmodell a csendet hallucinált, nem beszédhangú tokenekként jeleníti meg, a dekódolás pedig elpazarolt CPU. Ennek gyakorlati következménye: egy tartósan nagyon halk beszélőnek nem lesz átirata. Ha valaki üresen jön vissza, előbb a bemeneti szintjét ellenőrizze, mielőtt a modellt hibáztatná.
Miután leállítja, a diarizálás offline fut a felvételen, és a távoli
csatornát külön beszélőkre bontja (Person 1, Person 2, …), akiket
átnevezhet. A beszélők számát egy klaszterezési küszöb alapján becsüli, nem az
Ön által beállított darabszámból — így ez küszöbhatás, és egy halk vagy átfedő
beszélő beleolvadhat a szomszédjába. Az átirat [mm:ss] SPEAKER: text
sorokként jelenik meg.
Hangprofilok
Szekció neve “Hangprofilok”Egy beszélő átnevezése többet tesz, mint hogy megcímkéz egy átiratot. A Control Center a beszélő hanglenyomatát hangprofilként mentheti, így a jövőbeli megbeszéléseken automatikusan felismeri őt. Amikor elnevez egy diarizált beszélőt, a program megkérdezi, mentse-e a hanglenyomatot; ha igen, az beleolvad az adott névhez tartozó futó centroidba, és az új beszélőket koszinusz-hasonlósággal veti össze velük, így ugyanaz a személy a következő alkalommal a nevével jelenik meg, anélkül hogy Önnek újra címkéznie kellene.
A hangprofilok munkaterület-hatókörűek, és soha nem lépik át a határt. A Beállítások → Munkaterület → Megbeszélések helyen kezelheti őket. Egy korábban mentett beszélő átnevezése kiveszi a regisztrációból a régi nevet, és felajánlja az új beregisztrálását; egy profil törlése eltávolítja a tárolt hanglenyomatot, de a korábbi megbeszéléseken már alkalmazott neveket érintetlenül hagyja.
Az összefoglaló pipeline
Szekció neve “Az összefoglaló pipeline”Amikor egy felvétel leáll, a szerver közzétesz egy MeetingRecordingStopped
domaineseményt. A beépített
meeting_summary pipeline-sablont ez az esemény indítja el. A felvevő nem
vár rá; a megbeszélés egyszerűen végighalad az állapotai életciklusán:
recording → processing → doneAz összegző ügynök megkapja a címet, az élőben készített nyers jegyzeteit és az átiratot, és strukturált JSON-t ad vissza. Hogy mely szakaszokat írja meg, azt a munkaterület aktív megbeszélésjegyzet-sablonja alakítja (Beállítások → Munkaterület → Megbeszélések); az aktív sablon az új és az újrafuttatott összefoglalókra érvényes. A pipeline mentési lépései ezután ezt a JSON-t különálló sorokba írják:
enhancedNoteséssummary→ a megbeszélés jegyzetei- minden teendő → egy
MeetingActionItemsor (tartalom, felelős, opcionális jegylink) - minden döntés → egy
MeetingDecisionsor
A teendőket és a döntéseket soha nem szabad formátumú markdownból bontja ki,
hanem kizárólag az ügynök strukturált tömbjeiből. Ha egy futtatás nem ad
strukturált kimenetet, a mentési lépések kimaradnak, és a nyers átirat marad meg
tartalékként, így soha nem veszíti el a feljegyzést. A pipeline-ban semmi nem
jelöli done állapotúra a megbeszélést — ezt egyetlen reconciler teszi meg a
futtatás lezáró eseményéből, így egy testvérlépés hibája nem hagyhat félig
megírt, de már késznek látszó megbeszélést.
Hol jelennek meg a megbeszélések
Szekció neve “Hol jelennek meg a megbeszélések”| Felület | Mit mutat |
|---|---|
/meetings |
A megbeszélések listája, teendő- és döntésszámmal |
/meetings/record |
Az élő felvétel HUD-ja: az egyik oldalon a jegyzetei, a másikon a folyamatosan érkező átirat |
/meetings/:meetingId |
Egy megbeszélés részletei: Jegyzetek, Átirat, Teendők és Döntések fülek |
| Beállítások → Munkaterület → Megbeszélések | Jegyzetsablonok és mentett hangprofilok ehhez a munkaterülethez |
Platformtámogatás
Szekció neve “Platformtámogatás”A rögzítés mindhárom asztali platformon illesztőprogram nélküli (Core Audio tapok macOS-en, WASAPI Windows alatt, PipeWire Linuxon).
A webes kliens is rögzít, amit az oldal többi, asztali szemléletű része
elfedhet: a böngésző a getUserMedia-mel veszi át a mikrofont, a megbeszélés
hangját pedig a getDisplayMedia-vel (képernyőmegosztás), 16 kHz-es PCM16-ra
mintavételezi le, és ugyanarra a gazdagépre streamel. Ott három megkötés
érvényes:
- A megosztott felületnek feltétlenül tartalmaznia kell hangsávot. A Safari, a Firefox és a macOS teljes képernyős megosztása nem ad ilyet, és a felvétel nem indul el.
- Nincs natív AEC3. A böngésző saját visszhangszűrését kéri a program a mikrofonra; a gazdagépoldali szöveges visszhangszűrő továbbra is fut. A HUD egy, a mikrofon PCM-jéből vezérelt bemenetszint-mérőt mutat.
- Az összefoglaló újrafuttatása és a feldolgozás leállítása csak asztali gépen érhető el.
A naptár Felvétel indítása és összekapcsolás művelete csak asztali gépen érhető el, és a weben ezt egyértelműen jelzi is, pedig a megbeszélések képernyő saját rögzítési folyamata ott is működik.
Lásd még
Szekció neve “Lásd még”- Naptár és ütemezés: megbeszélés rögzítése egyenesen naptáreseményből
- Pipeline-ok és automatizálás: a
meeting_summarymögötti motor - Jegyek és delegálás: a megbeszélés teendőinek összekapcsolása jegyekkel
- Domainesemények:
MeetingRecordingStoppedésMeetingStartingSoon - Megbeszélés rögzítése és összefoglalása