Rapat dan transkripsi
Control Center dapat merekam panggilan dan mengembalikan tulisan yang bersih kepada Anda — ringkasan, item tindakan dan keputusan — dengan pengenalan ucapan dan pemisahan pembicara berjalan di perangkat keras Anda sendiri. Bayangkan Granola, tetapi dihosting sendiri dan terhubung ke ruang kerja yang sama tempat agen Anda berada.
Apa itu rapat
Bagian berjudul “Apa itu rapat”Rapat adalah sesi yang direkam dan ditranskripsi. Rapat bukan hal yang sama dengan acara kalender: acara adalah komitmen terjadwal yang disinkronkan dari Google, sedangkan rapat adalah sesuatu yang benar-benar Anda rekam. Keduanya dapat ditautkan, karena Anda dapat memulai rekaman dari sebuah acara, tetapi keduanya tetap merupakan catatan yang berbeda.
Setiap rapat dibatasi pada ruang kerja, seperti semua hal lain di Control Center. Rapat yang direkam di satu ruang kerja tidak pernah muncul di ruang kerja lain.
Di mana pekerjaan berlangsung
Bagian berjudul “Di mana pekerjaan berlangsung”“Di perangkat” adalah insting yang benar, tetapi kata bendanya salah. Klien
menangkap audio dan mengalirkan frame PCM16 16 kHz ke mesin yang menjalankan
cc_server. Host itu melakukan semua hal lainnya: ia menulis WAV per kanal di
bawah <dataDir>/meetings/<meetingId>/, mentranskripsi di isolate pekerja,
memfilter gema dan melakukan diarisasi setelah rekaman selesai. Pada desktop
mandiri, host itu adalah mesin yang sama. Saat diarahkan ke server jarak jauh,
tidak demikian — jadi “tidak ada yang meninggalkan laptop saya” hanya benar bila
servernya adalah laptop Anda.
Ada satu pengecualian lain dan itulah yang penting.
Semua yang sebelum ringkasan — penangkapan, transkripsi, pembatalan gema, diarisasi, pencocokan sidik suara — berjalan di server tanpa panggilan jaringan.
Model apa yang disertakan
Bagian berjudul “Model apa yang disertakan”Model embedding, diarisasi dan ucapan (ASR) dipasang paksa saat boot pertama (dilewati dalam demo), sehingga pemisahan pembicara dan perekaman tersedia tanpa perlu membuka pengaturan. ASR tetap dapat dipilih — ukurannya beberapa ratus megabita, dan empat build tersedia di pemilih. Model ucapan tetap memerlukan satu kali mulai ulang setelah unduhan pertama itu, karena pentranskripsi menyelesaikan modelnya sebelum pengambilan selesai.
Keempat entri pemilih, yang berbeda dalam ukuran, cakupan bahasa dan akurasi:
- Parakeet TDT 0.6B v3 — multibahasa, default yang direkomendasikan (~600 MB)
- Parakeet TDT 0.6B v2 — bahasa Inggris (~480 MB)
- Whisper large-v3-turbo — multibahasa (~626 MB)
- Whisper base.en — hanya bahasa Inggris, default historis yang kecil (~198 MB)
Model adalah satu-satunya artefak yang diambil server saat runtime; setiap pustaka native disertakan dalam bundel.
Cara penangkapan bekerja
Bagian berjudul “Cara penangkapan bekerja”Sebuah rapat merekam dua kanal audio sekaligus:
- Anda (“me”): mikrofon Anda.
- Mereka (“them”): keluaran audio rapat, ditangkap oleh loopback tanpa driver — tap proses/perangkat Core Audio di macOS, loopback WASAPI di Windows, monitor PipeWire / PulseAudio di Linux.
Karena kedua kanal ditangkap secara terpisah, transkrip sudah diatribusikan ke
pembicara sejak awal: kata-kata Anda diberi tag me, semua orang dalam
panggilan diberi tag them.
Suara Anda sendiri merembes dari keluaran sistem kembali ke mikrofon dan jika tidak ditangani akan ditranskripsi dua kali. Dua filter menghentikannya. AEC3 tingkat sinyal berjalan pada setiap perekaman mode jarak jauh dan wajib ada — jika pustaka AEC native gagal dimuat, perekaman menolak dimulai alih-alih secara diam-diam mengalirkan mikrofon yang tercemar gema. (Mode tatap muka tidak memiliki referensi ujung jauh untuk dibatalkan, jadi AEC di sana hanya meneruskan sinyal apa adanya.) Di atasnya, filter gema tingkat teks di sisi host berjalan di setiap platform.
Semua pemrosesan mikrofon tingkat OS sengaja dinonaktifkan. Mengaktifkan pembatalan gema atau penguatan otomatis milik platform di macOS mengalihkan mikrofon ke Voice Processing I/O, yang pada build ini mematikan mikrofon dan tap audio sistem.
Transkripsi dan diarisasi
Bagian berjudul “Transkripsi dan diarisasi”Saat Anda merekam, audio didekode dalam jendela bergulir — dipotong pada keheningan pendek di akhir, atau pada panjang jendela maksimum — di luar thread UI. Setiap jendela menjadi segmen transkrip bertag pembicara dengan offset milidetik.
Jendela yang tidak pernah melewati ambang RMS akan dilewati tanpa didekode sama sekali, karena model ucapan merender keheningan sebagai token non-ucapan hasil halusinasi dan pendekodeannya hanya membuang CPU. Konsekuensi praktisnya: pembicara yang terus-menerus sangat pelan tidak menghasilkan transkrip. Jika seseorang tidak menghasilkan apa pun, periksa level masukannya sebelum menyalahkan model.
Setelah Anda berhenti, diarisasi berjalan offline atas rekaman dan memecah
kanal jarak jauh menjadi pembicara individual (Person 1, Person 2, …) yang
dapat Anda ganti namanya. Jumlah pembicara disimpulkan dari ambang pengelompokan,
bukan dari jumlah yang Anda tetapkan — jadi ini artefak ambang dan pembicara yang
pelan atau tumpang tindih dapat digabungkan ke pembicara tetangganya. Transkrip
dirender sebagai baris [mm:ss] SPEAKER: text.
Profil suara
Bagian berjudul “Profil suara”Mengganti nama pembicara lebih dari sekadar memberi label pada satu transkrip. Control Center dapat menyimpan sidik suara pembicara sebagai profil suara, sehingga mengenali mereka secara otomatis di rapat mendatang. Saat Anda memberi nama pembicara hasil diarisasi, Anda ditanya apakah ingin menyimpan sidik suaranya; jika ya, sidik itu digabungkan ke centroid berjalan untuk nama tersebut dan dicocokkan dengan pembicara baru melalui kemiripan kosinus, sehingga orang yang sama muncul dengan namanya lain kali tanpa Anda melabelinya ulang.
Profil suara dibatasi per ruang kerja dan tidak pernah melewati batasnya. Kelola profil ini di Pengaturan → Ruang kerja → Rapat. Mengganti nama pembicara yang sebelumnya tersimpan akan membatalkan pendaftaran nama lama dan menawarkan mendaftarkan nama baru; menghapus profil menghapus sidik suara yang tersimpan tetapi membiarkan nama apa pun yang sudah diterapkan pada rapat sebelumnya tetap utuh.
Pipeline ringkasan
Bagian berjudul “Pipeline ringkasan”Saat perekaman berhenti, server menerbitkan
peristiwa domain
MeetingRecordingStopped. Templat pipeline meeting_summary bawaan dipicu
oleh peristiwa itu. Perekam tidak menunggunya; rapat hanya bertransisi melalui
siklus hidup statusnya:
recording → processing → doneAgen ringkasan menerima judul, catatan langsung kasar Anda dan transkrip, lalu mengembalikan JSON terstruktur. Bagian yang ditulisnya ditentukan oleh templat catatan rapat aktif ruang kerja (Pengaturan → Ruang kerja → Rapat); templat aktif berlaku untuk ringkasan baru dan yang dijalankan ulang. Langkah persist pipeline kemudian menulis JSON itu ke baris terpisah:
enhancedNotesdansummary→ catatan rapat- setiap item tindakan → baris
MeetingActionItem(konten, pemilik, tautan tiket opsional) - setiap keputusan → baris
MeetingDecision
Item tindakan dan keputusan tidak pernah diurai dari markdown bebas, hanya
dari larik terstruktur agen. Jika suatu eksekusi tidak menghasilkan keluaran
terstruktur, langkah persist dilewati dan transkrip mentah disimpan sebagai
cadangan, sehingga Anda tidak pernah kehilangan catatannya. Tidak ada apa pun di
pipeline yang menandai rapat done — satu reconciler yang melakukannya dari
peristiwa terminal eksekusi, sehingga kegagalan langkah saudaranya tidak dapat
meninggalkan rapat yang setengah tertulis tetapi sudah terlihat selesai.
Di mana rapat muncul
Bagian berjudul “Di mana rapat muncul”| Permukaan | Isinya |
|---|---|
/meetings |
Daftar rapat, dengan jumlah item tindakan dan keputusan |
/meetings/record |
HUD perekaman langsung: catatan Anda di satu sisi, transkrip yang mengalir di sisi lain |
/meetings/:meetingId |
Detail rapat: tab Catatan, Transkrip, Item tindakan dan Keputusan |
| Pengaturan → Ruang kerja → Rapat | Templat catatan dan profil suara tersimpan untuk ruang kerja ini |
Dukungan platform
Bagian berjudul “Dukungan platform”Penangkapan tidak memerlukan driver di ketiga platform desktop (tap Core Audio di macOS, WASAPI di Windows, PipeWire di Linux).
Klien web juga merekam, yang bisa tersembunyi oleh kerangka desktop di sisa
halaman ini: peramban mengambil mikrofon Anda melalui getUserMedia dan audio
rapat melalui getDisplayMedia (berbagi layar), menurunkan sampelnya ke
PCM16 16 kHz dan mengalirkannya ke host yang sama. Ada tiga catatan di sana:
- Permukaan yang dibagikan harus membawa trek audio. Berbagi layar penuh di Safari, Firefox dan macOS tidak menghasilkan trek itu dan perekaman menolak dimulai.
- Tidak ada AEC3 native. Pembatalan gema milik peramban diminta pada mikrofon; filter gema teks di sisi host tetap berjalan. HUD menampilkan pengukur level masukan yang digerakkan oleh PCM mikrofon.
- Jalankan ulang ringkasan dan batalkan pemrosesan hanya tersedia di desktop.
Tindakan Mulai rekaman & tautkan di kalender hanya tersedia di desktop dan melaporkan hal itu secara terang-terangan di web, meskipun alur perekaman di layar rapat sendiri berfungsi di sana.
Lihat juga
Bagian berjudul “Lihat juga”- Kalender dan penjadwalan: rekam rapat langsung dari acara kalender
- Pipeline dan otomatisasi: mesin di balik
meeting_summary - Tiket dan delegasi: tautkan item tindakan rapat ke tiket
- Peristiwa domain:
MeetingRecordingStoppeddanMeetingStartingSoon - Rekam dan ringkas rapat