Întâlniri și transcriere
Control Center poate înregistra un apel și îți poate returna o sinteză curată — un rezumat, elemente de acțiune și decizii — cu recunoașterea vorbirii și separarea vorbitorilor rulând pe propriul tău hardware. Gândește-te la Granola, dar auto-găzduit și legat la același spațiu de lucru în care trăiesc agenții tăi.
Ce este o întâlnire
Secțiune intitulată „Ce este o întâlnire”O întâlnire este o sesiune înregistrată și transcrisă. Nu este același lucru ca un eveniment de calendar: un eveniment este un angajament programat, sincronizat din Google, în timp ce o întâlnire este ceva ce ai înregistrat efectiv. Cele două pot fi legate, pentru că poți porni o înregistrare dintr-un eveniment, dar rămân înregistrări distincte.
Fiecare întâlnire este delimitată de spațiul de lucru, ca tot restul din Control Center. Întâlnirile înregistrate într-un spațiu de lucru nu apar niciodată în altul.
Unde se desfășoară munca
Secțiune intitulată „Unde se desfășoară munca”„Pe dispozitiv” este instinctul corect, dar substantivul greșit. Clientul
captează audio și transmite cadre PCM16 la 16 kHz către mașina care rulează
cc_server. Acea gazdă face tot restul: scrie fișierele WAV pe canal în
<dataDir>/meetings/<meetingId>/, transcrie într-un izolat de worker, filtrează
ecoul și diarizează ulterior. Pe un desktop autonom, acea gazdă este aceeași
mașină. Îndreptat către un server remote, nu mai este — așa că „nimic nu
părăsește laptopul meu” este adevărat doar când serverul este laptopul tău.
Există o excepție suplimentară și este cea importantă.
Tot ce se întâmplă înainte de rezumat — captare, transcriere, anulare a ecoului, diarizare, potrivirea amprentelor vocale — rulează pe server fără niciun apel de rețea.
Ce modele sunt incluse
Secțiune intitulată „Ce modele sunt incluse”Modelele de embedding, diarizare și vorbire (ASR) sunt instalate forțat la prima pornire (omise într-o demonstrație), așa că separarea vorbitorilor și înregistrarea există fără să treci pe la setări. ASR rămâne totuși selectabil — are câteva sute de megabaiți, iar în selector sunt incluse patru variante. Vorbirea are nevoie totuși de o repornire după acea primă descărcare, pentru că transcriitorul își rezolvă modelul înainte ca descărcarea să se poată termina.
Cele patru intrări din selector, care diferă prin dimensiune, acoperire lingvistică și precizie:
- Parakeet TDT 0.6B v3 — multilingv, implicitul recomandat (~600 MB)
- Parakeet TDT 0.6B v2 — engleză (~480 MB)
- Whisper large-v3-turbo — multilingv (~626 MB)
- Whisper base.en — doar engleză, micul implicit istoric (~198 MB)
Modelele sunt singurele artefacte pe care serverul le descarcă la rulare; fiecare bibliotecă nativă este inclusă în pachet.
Cum funcționează captarea
Secțiune intitulată „Cum funcționează captarea”O întâlnire înregistrează două canale audio simultan:
- Tu („eu”): microfonul tău.
- Ceilalți („ei”): ieșirea audio a întâlnirii, captată printr-un loopback fără driver — capturi de proces/dispozitiv Core Audio pe macOS, loopback WASAPI pe Windows, un monitor PipeWire / PulseAudio pe Linux.
Pentru că cele două canale sunt captate separat, transcrierea este atribuită
vorbitorilor de la început: cuvintele tale sunt etichetate me, iar toți cei
din apel sunt etichetați them.
Vocea ta se scurge din ieșirea sistemului înapoi în microfon și, altfel, ar fi transcrisă de două ori. Două filtre împiedică asta. AEC3 la nivel de semnal rulează la fiecare înregistrare în mod remote și este obligatoriu — dacă biblioteca AEC nativă nu se poate încărca, înregistrarea refuză să pornească în loc să transmită în silență un microfon poluat de ecou. (Modul în persoană nu are o referință de capăt îndepărtat față de care să anuleze, așa că AEC este acolo o trecere identică.) Deasupra acestuia, un filtru text de ecou, pe partea gazdei, rulează pe fiecare platformă.
Toată procesarea microfonului la nivel de sistem de operare este dezactivată deliberat. Activarea anulării de ecou sau a câștigului automat proprii platformei pe macOS comută microfonul la Voice Processing I/O, ceea ce, în această versiune, a scos din funcțiune atât microfonul, cât și captura audio a sistemului.
Transcriere și diarizare
Secțiune intitulată „Transcriere și diarizare”În timp ce înregistrezi, audio-ul este decodat în ferestre glisante — tăiate pe o scurtă tăcere finală sau la o lungime maximă de fereastră — în afara firului de execuție al interfeței. Fiecare fereastră devine un segment de transcriere etichetat cu vorbitor, cu decalaje în milisecunde.
Ferestrele care nu au trecut niciodată de un prag RMS sunt omise fără să fie decodate deloc, pentru că un model de vorbire redă tăcerea ca tokenuri non-vorbire halucinate, iar decodarea consumă CPU degeaba. Consecința practică: un vorbitor constant foarte tăcut nu produce nicio transcriere. Dacă cineva revine fără transcriere, verifică-i nivelul de intrare înainte să dai vina pe model.
După ce oprești, diarizarea rulează offline pe înregistrare și împarte
canalul remote în vorbitori individuali (Person 1, Person 2, …) pe care îi
poți redenumi. Numărul de vorbitori este dedus dintr-un prag de grupare, nu
dintr-o cifră pe care o stabilești tu — așa că este un artefact al pragului, iar
un vorbitor tăcut sau care se suprapune poate fi fuzionat cu un vecin.
Transcrierea este redată ca linii [mm:ss] SPEAKER: text.
Profiluri vocale
Secțiune intitulată „Profiluri vocale”Redenumirea unui vorbitor face mai mult decât să eticheteze o transcriere. Control Center poate salva amprenta vocală a vorbitorului ca profil vocal, ca să îl recunoască automat în întâlnirile viitoare. Când numești un vorbitor diarizat, ești întrebat dacă vrei să salvezi amprenta vocală; dacă o faci, aceasta este combinată într-un centroid curent pentru acel nume și comparată cu vorbitorii noi prin similaritate cosinus, așa că aceeași persoană apare cu numele ei data viitoare fără să o reetichetezi.
Profilurile vocale sunt delimitate de spațiul de lucru și nu trec niciodată granița. Gestionează-le în Setări → Spațiu de lucru → Întâlniri. Redenumirea unui vorbitor care fusese deja salvat dezînscrie numele vechi și oferă să îl înscrie pe cel nou; ștergerea unui profil elimină amprenta vocală stocată, dar lasă intacte numele deja aplicate întâlnirilor trecute.
Pipeline-ul de rezumare
Secțiune intitulată „Pipeline-ul de rezumare”Când o înregistrare se oprește, serverul publică un MeetingRecordingStopped
eveniment de domeniu. Șablonul
de pipeline încorporat meeting_summary este declanșat de acel eveniment.
Înregistratorul nu îl așteaptă; întâlnirea își parcurge pur și simplu ciclul de
viață al stării:
recording → processing → doneAgentul de rezumare primește titlul, notele tale brute luate în direct și transcrierea și returnează JSON structurat. Ce secțiuni scrie este modelat de șablonul activ de note pentru întâlniri al spațiului de lucru (Setări → Spațiu de lucru → Întâlniri); șablonul activ se aplică rezumatelor noi și celor reluate. Pașii de persistare din pipeline scriu apoi acel JSON în rânduri distincte:
enhancedNotesșisummary→ notele întâlnirii- fiecare element de acțiune → un rând
MeetingActionItem(conținut, proprietar, link opțional către un tichet) - fiecare decizie → un rând
MeetingDecision
Elementele de acțiune și deciziile nu sunt niciodată extrase din markdown
liber, ci doar din tablourile structurate ale agentului. Dacă o rulare nu
produce nicio ieșire structurată, pașii de persistare sunt omiși, iar
transcrierea brută este păstrată ca soluție de rezervă, așa că nu pierzi
niciodată înregistrarea. Nimic din pipeline nu marchează întâlnirea ca done —
un singur reconcilizator face asta pe baza evenimentului terminal al rulării,
așa că un pas frate care eșuează nu poate lăsa în urmă o întâlnire pe jumătate
scrisă care pare deja terminată.
Unde apar întâlnirile
Secțiune intitulată „Unde apar întâlnirile”| Suprafață | Ce afișează |
|---|---|
/meetings |
Lista întâlnirilor, cu numărul de elemente de acțiune și de decizii |
/meetings/record |
Interfața de înregistrare live: notele tale pe o parte, transcrierea în flux pe cealaltă |
/meetings/:meetingId |
Detaliile unei întâlniri: filele Note, Transcriere, Elemente de acțiune și Decizii |
| Setări → Spațiu de lucru → Întâlniri | Șabloane de note și profiluri vocale salvate pentru acest spațiu de lucru |
Suport pentru platforme
Secțiune intitulată „Suport pentru platforme”Captarea este fără driver pe toate cele trei platforme desktop (capturi Core Audio pe macOS, WASAPI pe Windows, PipeWire pe Linux).
Și clientul web înregistrează, ceea ce restul acestei pagini, centrate pe
desktop, poate ascunde: browserul preia microfonul prin getUserMedia și
audio-ul întâlnirii prin getDisplayMedia (partajare de ecran), reduce la
16 kHz PCM16 și transmite către aceeași gazdă. Aici se aplică trei rezerve:
- Suprafața partajată trebuie să conțină o pistă audio. Partajarea pe ecran complet din Safari, Firefox și macOS nu oferă niciuna, iar înregistrarea refuză să pornească.
- Nu există AEC3 nativ. Anularea de ecou proprie browserului este cerută pe microfon; filtrul text de ecou de pe partea gazdei rulează în continuare. Interfața de înregistrare afișează un indicator al nivelului de intrare alimentat din PCM-ul microfonului.
- Reluarea rezumatului și anularea procesării sunt disponibile doar pe desktop.
Acțiunea Pornește înregistrarea și leagă din calendar este disponibilă doar pe desktop și o spune clar pe web, chiar dacă fluxul de înregistrare propriu ecranului de întâlniri funcționează acolo.
- Calendar și programare: înregistrează o întâlnire direct dintr-un eveniment de calendar
- Pipeline-uri și automatizare: motorul din spatele
meeting_summary - Tichete și delegare: leagă elementele de acțiune ale unei întâlniri de tichete
- Evenimente de domeniu:
MeetingRecordingStoppedșiMeetingStartingSoon - Înregistrează și rezumă o întâlnire