Od zaustavljanja do gotovog sažetka: faze, bilješke i što može poći po zlu.
Zaustavljanje završava snimanje i pokreće sve ostalo. Zvuk se šalje na poslužitelje aplikacije Chui, transkribira se i sažima. Na telefonu je snimka sigurno spremljena na uređaju i prije svega toga: ako nema veze, čeka i šalje se kad veza bude. Ništa se ne gubi zbog loše mreže i ništa ne treba pritiskati.
Na Macu ili Windowsu snimka se ne gubi ako se Chui zatvorio dok se još zaustavljala: kad se Chui sljedeći put otvori, pronađe tu snimku i pošalje je u sastanak koji si započeo, zajedno s bilješkama (od builda 236).
Sastanak prolazi kroz njih, a aplikacija pokazuje u kojoj je:
Obavijest javlja kad su tekst i sažetak sastanka spremni. Ne sadrži ni naslov ni sadržaj.
Chui nije proizvod za transkripte. Zamisao je da tijekom sastanka zapišeš dva retka (ime, broj, svoje obećanje) i pustiš da ih Chui spoji s onim što je stvarno rečeno. Sažetak nastaje iz obojega. Upisani retci ga usmjeravaju, a ne pojavljuju se u njemu doslovno. Bilješke se mogu napisati ili ispraviti i nakon sastanka.
list_meetings() daje popis: ID, naslov, datum, trajanje, status i ništa više. get_meeting() daje sažetak jednog sastanka, njegove bilješke, trajanje i broj prepoznatih govornika. Obično je tu pravo mjesto za stati. Transkript je zasebno, mnogo skuplje čitanje: vidi Kako pronaći ono što je rečeno.
Sastanak na kojem upravo jesi također je na tom popisu, označen kao in_progress, pa asistent kojeg pitaju „usred čega sam?“ može odgovoriti. Transkripta ni sažetka nema dok snimka ne stigne, jer Chui transkribira sastanak nakon što završi. Nema ni konačne duljine. Umjesto toga vraća se koliko dugo sastanak traje, kad je Chui zadnji put čuo zvuk s uređaja i bilješke koje se u njega upisuju, onako kako se upisuju. Asistent može pročitati te bilješke, dodati im nešto i reći da sastanak nije završen. Ne bi ga trebao prijaviti kao prazan ili neuspio sastanak, iako izvana upravo tako izgledaju dijelovi koji nedostaju.
To znači „nije završen“, a ne „događa se sada“, i tu razliku vrijedi znati. Chui saznaje da je snimka završila kad mu to uređaj javi, a tri sasvim različite stvari poslužitelju izgledaju jednako: razgovor koji upravo traje; razgovor koji je stao prije minutu, a zvuk mu se još šalje; i telefon koji se ugasio usred sastanka i nikad više ništa neće javiti. Zato je asistentu rečeno da ne tvrdi da je mikrofon uključen.
Umjesto toga dobiva samo jedan ograničen podatak. Dok se sastanak snima, telefon svakih devedeset sekundi šalje komad zvuka, pa Chui zna prije koliko je vremena stigao najnoviji komad te snimke, i ništa više od toga. Dug razmak znači da za nju nije stigao nov zvuk: snimanje je možda pauzirano, telefon je možda izvan mreže ili je sastanak možda završio, a da Chui to nije saznao. Ni kratak razmak ne dokazuje da je sastanak uživo, jer telefon koji preko nove veze nadoknađuje stariju snimku izgleda jednako svježe. Chui predaje broj umjesto da imenuje uzrok, a gdje uopće nije mogao provjeriti, ne kaže ništa umjesto da nagađa.
Chui sam daje naslov sastanku, obično iz pozivnice u kalendaru ili iz onoga što je rečeno, pa je naziv često nagađanje. Može se ispraviti u aplikaciji ili tako da to kažeš asistentu: rename_meeting(). I bilješke upisane tijekom sastanka asistent može ispraviti, a za to najprije pita, jer novi tekst zamjenjuje sve bilješke odjednom, a stare se nigdje ne čuvaju. prepare_update_meeting() pročita bilješke kakve jesu i kakve bi bile, i u tom trenutku još se ništa nije dogodilo. Tek kad kažeš da, update_meeting() ih zapisuje, i to točno tekst koji ti je prikazan. Asistent treba poslati cijeli tekst s izmjenom, inače ostatak nestaje. Ako su se bilješke u međuvremenu promijenile, recimo na drugom uređaju, ništa se ne zapisuje i mora pitati ponovno.
Sažetak se može ispraviti na isti način: pogrešno ime, pogrešan broj, odluka zapisana naopako. prepare_update_summary() pročita sažetak kakav jest i kakav bi bio, i u tom trenutku još se ništa nije dogodilo. Tek kad kažeš da, update_summary() zapisuje točno tekst koji ti je prikazan i zamjenjuje cijeli sažetak. Transkript se ne može uređivati, ni preko asistenta ni u aplikaciji. On je ono što je rečeno.
Ručno ispravljen sažetak poslije je običan sažetak i ništa ga ne štiti. Imenovanje govornika, izmjena bilježaka, spajanje ili razdvajanje osobe na sastanku, preimenovanje neke od njih ili traženje novog sažetka znači da Chui sažetak piše iznova iz transkripta i bilježaka, a ispravak se zamjenjuje. Zato, kad je pogreška u tome tko je govorio ili što je pisalo u bilješci, ispravi baš to. Sažetak sam slijedi minutu-dvije kasnije.
Tjedni stand-up jedan je sastanak koji se ponavlja, a Chui zna koje su snimke njegova ponavljanja. To zna iz serije u kalendaru kojoj pripadaju, a ta je serija spremljena uz snimku, ne traži se naknadno. get_series() daje ranija ponavljanja jednog sastanka, od najnovijeg. Tako su „što smo dogovorili prošli tjedan?“ i „što je ostalo otvoreno od onog prije?“ jedan poziv i zatim get_meeting(), a ne pretraživanje naslova koji možda nimalo ne nalikuju jedan drugome. Sastanak snimljen bez unosa u kalendaru ne pripada nijednoj seriji, i odgovor to kaže umjesto da se vrati prazan.
Sastanak se može vratiti označen kao prekinut (cut short) ili djelomičan (partial). Time Chui kaže da snimka ne obuhvaća cijeli razgovor: aplikacija je bila suspendirana ili je snimka obnovljena nakon rušenja, a njezin kraj nikad nije stigao na disk. Sažmi ono što postoji kao ulomak. Ne opisuj to kao cijeli sastanak. Sastanak nema takvu oznaku kad ništa nije pošlo po zlu, a uvezena datoteka nikad je nema, jer nema sata sastanka s kojim bi se usporedila.
get_coverage() to pita izravno i odgovara jednom rečenicom: obuhvaća li snimka sastanak, koliko je datoteka duga, koliko je sastanak trajao i koliki je dio sastanka dospio u snimku. Ništa u transkriptu to ne pokazuje. Dvadeset minuta devedesetominutnog sastanka čita se točno kao cijeli dvadesetominutni sastanak, pa vrijedi pitati prije nego što nekome kažeš što je dogovoreno. Također razlikuje „to nitko nije izmjerio“ od „sve je u redu“, a to nije isti odgovor.
Sažetak su te bilješke utkane u ono što je rečeno, pa kad se promijeni jedno ili drugo, Chui ga sam napiše iznova minutu-dvije kasnije. Imenovanje govornika ili ispravak bilješke obično je sve što treba. U aplikaciji „Napiši sažetak ponovno“ (Write the summary again) prikazuje tihi redak dok ga piše iznova (od builda 248). Asistent to može i izravno zatražiti, i to je jedina stvar koju ovdje može učiniti koja stoji pravi novac pri svakom pozivu: prolaz jezičnog modela kroz cijeli sastanak, a za sastanak koji nikad nije transkribiran i prolaz transkripcije kroz zvuk. Usto odbacuje postojeći sažetak. Zato se najprije pita. prepare_resummarise_meeting() pročita sažetak koji bi nestao i kaže koji bi od ta dva postupka potvrda pokrenula i naplatila, i ništa se ne troši. Tek kad kažeš da, resummarise_meeting() pokreće prolaz. Ako je Chui u međuvremenu već sam napisao sažetak iznova, kaže to i ništa ne plaća. Sastanak na kojem Chui nije čuo nijednu riječ ne može se ponovno sažeti. Chui to kaže umjesto da dvaput plati slušanje tišine.
Kratka bilješka, za jedan glas (od builda 235). Snimka na kojoj se čuje samo jedan glas, primjerice misao koju izgovoriš sebi, može se umjesto toga vratiti kao kratka bilješka: sama misao, dotjerana, bez naslova i imena govornika, a na popisu sastanaka označena je žaruljom. Od builda 236 to vrijedi i za dugu snimku, koja traje satima, a koja se prije mogla pročitati kao dva glasa i obraditi kao sastanak.
Vlastiti oblik, naučen jednom. Ako vaš sastanak ima svoje naslove — tjedni pregled uvijek je brojke, rizici, molbe — recite to asistentu jednom i Chui ga od tada piše tako. Ponavljajućem sastanku oblik se uči s set_series_shape() (s bilo kojeg njegovog sastanka; get_series() ga čita), a oznaci sa summary_shape u update_label() (list_labels() ga prikazuje). Chui i dalje počinje kratkim «ukratko» i završava sljedećim koracima i otvorenim pitanjima. Oblik ponavljajućeg sastanka ima prednost pred oznakom; dvije oznake s različitim oblicima prepuštaju izbor Chuiju. Prazan oblik vraća izbor Chuiju. Dio je plaćenog plana i traži se riječima — u aplikaciji nema gumba za to.
Transkript stiže kao speaker_0, speaker_1 … jer sustav razlikuje glasove, ali ih ne zna imenovati. Imenovanje jednoga u aplikaciji ili preko asistenta s name_speaker() stavlja ime umjesto oznake svugdje gdje se taj sastanak čita. Osobu dodaje na popis kako bi je sljedeći sastanak ponudio i ponovno piše sažetak s tim imenom.
Kad imenuješ glas u aplikaciji, popis počinje s «Ja» (Me), uz ime tvog računa: jednim dodirom tvoje ime stavlja se na taj glas točno onako kako je napisano na računu (od builda 249).
Prepoznavanje glasa s jednog sastanka na drugi događa se samo za osobe koje su same za sebe uključile „Prepoznavanje vlastitog glasa“ (Own-voice recognition) (Postavke koje se mijenjaju na zahtjev). Njihov glas stiže već imenovan na njihovim vlastitim sastancima i na sastancima njihove tvrtke na koje su bile pozvane. Svaki drugi glas počinje kao speaker_0, speaker_1 … i imenuje se ručno. Ime koje je Chui dao glasu mijenja se jednim dodirom, kao i svako drugo.
Ime koje je Chui zaključio iz razgovora, a koje još nitko nije potvrdio, prikazuje se kao obično ime, ali je samo pretpostavka. Dodir na njega nudi „Da, to je …“ (Yes, this is …), što ga čini trajnim, i „Nije …“ (Not …), što ga uklanja. Preko asistenta get_meeting() navodi takva imena pod tentative_speaker_names. Imenovanje glasa istim imenom potvrđuje ga, a prepare_reject_speaker_name() pa reject_speaker_name() ga uklanja.
Svaka pogreška kaže koja je i što se može učiniti: datoteka je prekinuta prije nego što je spremljena; zvuk nikad nije stigao; format se ne može pročitati; transkripciji je isteklo vrijeme (snimka je sigurna, pokušaj ponovno kasnije); sažetak nije napisan, ali transkript postoji. Većina nudi ponovni pokušaj.
Kad se sažetak ne može napisati zbog kvara na strani aplikacije Chui, Chui sam pokušava ponovno svakih sat vremena, otprilike jedan dan (od verzije 230). Tako problem tijekom noći ne ostavlja sastanak da čeka na „Napiši sažetak ponovno“ (Write the summary again).
Brisanje sastanka uništava snimku, transkript, sažetak i bilješke, svugdje gdje postoje, zauvijek. S njima nestaje i sve što je Chui iz tog razgovora saznao o ljudima koji su u njemu sudjelovali. Svaki javni link na sastanak prestaje raditi. Chui pamti da je sastanak izbrisan, pa ga telefon koji još ima zvuk odbacuje umjesto da ga kasnije ponovno pošalje. Ništa od toga ne može se vratiti.
U aplikaciji je to Izbriši sastanak (Delete meeting) na dnu sastanka ili povlačenje retka. U oba slučaja Chui najprije pita u prozoru koji navodi naziv sastanka.
Asistent to također može, i pita na isti način, u dva koraka, jer je to jedna od stvari koje se ne mogu poništiti. prepare_delete_meeting() pročita o kojem je sastanku riječ: kako se zove, kada je bio, koliko je trajao, jesu li na njemu upisane bilješke i čita li ga netko izvan aplikacije Chui preko linka. U tom trenutku još se ništa nije dogodilo. Tek kad kažeš da, delete_meeting() ga uništava. Ne prima ništa osim odgovora na to pitanje, pa ga se ne može usmjeriti na sastanak koji ti upravo nije prikazan. Kolega koji može otvoriti sastanak koji je netko podijelio s timom ne može ga izbrisati. To može samo osoba koja ga je snimila.
Snimanje je zaustavljeno u pauzi i ponovno pokrenuto nakon nje, ili se snimka prekinula pa je Chui ostatak sastanka spremio zasebno. U svakom slučaju jedan razgovor stoji na tvom popisu kao dva retka, s dva sažetka i dva skupa govornika.
Zamoli asistenta da ih spoji. prepare_merge_meetings() pročita oba: koji ostaje, koliko je svaki dug, kolika je bila stanka među njima i koliko bi duga bila spojena snimka. U tom trenutku još se ništa nije dogodilo. Tek kad kažeš da, merge_meetings() to izvršava, i ne prima ništa osim odgovora na to pitanje.
Što radi: dvije snimke slažu se jedna iza druge, redom kojim su nastale, u raniji sastanak, koji zadržava svoj ID i datum. Kasniji sastanak zatim se briše. Chui ponovno čita spojenu snimku od početka, pa sastanak na kraju ima jedan transkript, jedan sažetak i jedan skup govornika za cijeli razgovor. To traje nekoliko minuta. Bilješke upisane na bilo kojem od sastanaka zadržavaju se, redom, a one iz druge polovice pomiču se odgovarajuće po vremenskoj crti.
Time se nikad ne gubi zvuk. Svaka sekunda obiju snimki nalazi se u sastanku koji ostaje, izmjerena, prije nego što se drugi redak dira. Ono što se ne vraća su riječi: oba sažetka i oba transkripta zamjenjuju se, uključujući ručne ispravke u bilo kojem od njih, i ništa ne vraća dva retka. Nema poništavanja.
Još dvije stvari vrijedi znati prije nego što to zatražiš. Ako dvije polovice vide različite osobe (jedna je podijeljena s tvrtkom, druga zadržana samo za tebe), spojeni sastanak vide oni koji su mogli vidjeti privatniju od njih. Tako spajanjem ništa što je bilo samo tvoje ne dolazi pred tuđe oči. A ako je bilo koja polovica bila povezana s unosom u kalendaru, spojeni sastanak zadržava tu vezu, pa ostaje u svojoj seriji.
Tri stvari Chui odbija, i to kaže prije nego što odlučiš, a ne poslije.
Neće spojiti dvije snimke koje ne može pošteno sastaviti, na primjer dvije polovice snimljene s različitim postavkama ili jednu snimljenu na telefonu, a drugu na Macu. Radije odbija nego da napravi datoteku koja se reproducira kao pogrešan sastanak. Neće spojiti ni dva retka koja su počela u istom trenutku i trajala jednako dugo. To je jedan razgovor koji je Chui primio dvaput, a ne dvije polovice jednog, i spajanjem bi nastao sastanak koji sve kaže dvaput. Umjesto toga izbriši jedan od njih.
I još ne može spojiti ništa što je snimljeno u kartici preglednika. Snimka napravljena u pregledniku zapisuje svoj indeks usput, a ne na jednom mjestu na kraju, i Chui ne može sastaviti dvije takve snimke. Same snimke su u redu i normalno se reproduciraju. Chui ih samo ne može spojiti. Dvije polovice sastanka koje želiš spojiti moraju biti snimljene na telefonu, Macu ili računalu sa sustavom Windows.
Na besplatnom računu postoji još jedan slučaj. Ako sastanak koji bi ostao još nije pročitan (recimo onaj kod kojeg je nešto pošlo po zlu), a deset sastanaka ovog mjeseca već je iskorišteno, Chui odbija. Čitanje spojene snimke bilo bi prvo čitanje, računalo bi se za taj mjesec, a obje polovice bile bi zaključane odjednom. Plaćeni račun nema takvo ograničenje, a inače se sastanci mogu spojiti sljedeći mjesec. Koliko košta račun objašnjava ograničenja besplatnog računa.
Nigdje u aplikaciji Chui nema gumba za to. To je popravak koji primijetiš dok čitaš oba sastanka, i upravo ga tamo treba zatražiti.
Obrnuto: telefon je ostao na stolu ili prijenosno računalo otvoreno, i tri su razgovora završila u jednoj snimci. Chui je spremio jedan sastanak s jednim sažetkom, koji je o svima njima, a time ni o jednom.
U buildovima 238 i 239 snimka na telefonu već se tijekom snimanja sama dijelila na zasebne sastanke na svakoj dugoj tišini; od builda 240 «Nova snimka» na telefonu ponovno stvara jednu snimku koja traje do «Zaustavi» (Snimanje sastanka).
Chui to obično sam primijeti. Nakon što pročita snimku od pola sata ili dulju, Chui provjerava je li to zapravo nekoliko sastanaka. Gleda uglavnom tko govori: gdje jedni zauvijek utihnu, a drugi počnu, tamo završava jedan sastanak. Svako takvo mjesto uspoređuje s temom razgovora, tvojim kalendarom i eventualnom stankom. Tek kad se to slaže, na zaslonu sastanka pojavljuje se kartica „Izgleda kao 3 zasebna sastanka“ (Looks like 3 separate meetings), sa svakim dijelom, njegovim vremenom, naslovom i ljudima u njemu. Odznači dio da ostane spojen sa susjednim. „Podijeli na N“ (Split into N) dijeli snimku, a „To je jedan sastanak“ (It’s one meeting) trajno uklanja karticu.
Ili pitaj gdje se lomi. find_split_points() odgovara prijedlogom koji je dao sam Chui, s istim dijelovima koje pokazuje kartica i s imenima. Navodi i duge tišine: koliko je svaka udaljena od početka snimke, koliko je tišina trajala, što je posljednje rečeno prije nje i što prvo poslije. Ne mijenja ništa što se vidi. Ako kažeš da je to jedan sastanak, keep_as_one_meeting() je „To je jedan sastanak“ izrečeno riječima.
Zatim zatraži rez. prepare_split_meeting() navodi svaki dio koji bi nastao: kada počinje, koliko je dug i što se prvo u njemu kaže. U tom trenutku još se ništa nije dogodilo. Tek kad kažeš da, split_meeting() to izvršava, i ne prima ništa osim odgovora na to pitanje.
Što radi: zvuk se dijeli točno ondje gdje je zadano, i svaki dio postaje zaseban sastanak. Prvi dio zadržava ID ovog sastanka, njegov datum, naslov i objavljeni link. Ostali su novi sastanci, koji počinju u trenucima u kojima su stvarno snimljeni. Ništa se ne snima ponovno i ništa se ne transkribira ponovno. Chui zna u kojoj je sekundi izgovorena svaka riječ, pa riječi iz prvog sata jednostavno ostaju s prvim satom, a imena pridružena glasovima ostaju točno kakva jesu. Tvoje bilješke idu s dijelom tijekom kojeg su upisane. Chui zatim piše nov sažetak za svaki dio, što traje manje od minute.
Ne troši ništa od deset sastanaka mjesečno na besplatnom računu. Ništa se ne šalje na ponovnu transkripciju, pa se nema što naplatiti: ako je prije reza bilo iskorišteno devet sastanaka, i nakon njega je devet.
Gubiš sažetak cijele snimke, a s njim i ono što je taj sažetak upisao u podatke o ljudima u njoj. Te podatke Chui ponovno zapisuje iz novih sažetaka. Ne gubi se ni zvuk ni riječi. Nema poništavanja: ponovno spajanje dijelova s merge_meetings() bi uspjelo, ali ono ponovno čita spojenu snimku od nule i traje nekoliko minuta.
Chui odbija rez u četiri slučaja, i to prije nego što te išta pita:
Sastanak koji je Chui sastavio nakon što je uređaj za snimanje prestao slati može se odmah podijeliti ili spojiti s drugim sastankom (od builda 247). Ako taj uređaj kasnije pošalje ostatak svoje snimke, dio koji Chui nije imao stiže kao zaseban sastanak.
Jedini gumb za to nalazi se na kartici koju Chui pokazuje kad sumnja da je snimka zapravo nekoliko sastanaka. Rez bilo gdje drugdje traži se riječima.