Od zaustavljanja do gotovog sažetka: faze, bilješke i šta može poći po zlu.
Zaustavljanje završava snimanje i pokreće sve ostalo. Zvuk se otprema na Chui-jeve servere, od njega nastaje transkript, a zatim sažetak. Na telefonu je snimak već siguran na disku prije svega toga: ako nema veze, čeka i otprema se kad se veza pojavi. Ništa se ne gubi zbog loše mreže i ništa ne moraš dodirivati.
Na Macu ili Windowsu snimak se ne gubi ako se Chui zatvorio dok se snimanje još zaustavljalo: kad se Chui sljedeći put otvori, pronađe taj snimak i otpremi ga u sastanak koji si započeo, zajedno s bilješkama (od verzije 236).
Sastanak prolazi kroz njih, a aplikacija pokazuje gdje je:
Obavještenje 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 tokom sastanka zabilježiš dva reda (ime, broj, svoje obećanje), a Chui ih spoji s onim što je zaista rečeno. Sažetak nastaje iz oboje. Upisani redovi ga usmjeravaju, a ne ulaze u njega doslovno. Bilješke se mogu napisati ili ispraviti i nakon sastanka.
list_meetings() daje spisak: identifikator, naslov, datum, trajanje, status i ništa više. get_meeting() daje sažetak jednog sastanka, njegove bilješke, trajanje i broj prepoznatih govornika. Tu je obično pravo mjesto da se stane. Transkript je zasebno, mnogo skuplje čitanje: vidi Kako pronaći ono što je rečeno.
Sastanak na kojem trenutno jesi također je na tom spisku, označen kao in_progress, pa asistent kojeg pitaju „usred čega sam?“ može odgovoriti. Nema transkripta ni sažetka dok snimak ne stigne, jer Chui transkribuje sastanak tek nakon što se završi. Nema ni konačne dužine. Umjesto toga vraća se koliko dugo sastanak traje, kada je Chui posljednji put čuo zvuk s uređaja i bilješke koje se u njega upisuju, i to dok se upisuju. Asistent može pročitati te bilješke, dopisati nešto i reći da sastanak nije završen. Ne bi ga trebao prijaviti kao prazan ili neuspio sastanak, iako upravo tako ti dijelovi koji nedostaju izgledaju spolja.
To znači „nije završen“, a ne „dešava se upravo sada“, i tu razliku vrijedi znati. Chui saznaje da je snimak završen kad mu to uređaj javi, a tri sasvim različite stvari serveru izgledaju isto: razgovor koji upravo teče; razgovor koji je stao prije minutu, a zvuk mu se još otprema; i telefon koji se ugasio usred sastanka i više nikad ništa neće javiti. Zato je asistentu rečeno da ne tvrdi da je mikrofon uključen.
Umjesto toga dobija jedan ograničen podatak. Dok se sastanak snima, telefon svakih devedeset sekundi pošalje komad zvuka, pa Chui zna prije koliko je vremena stigao najnoviji komad tog snimka i ništa preko toga. Dug razmak znači da za taj snimak nije stigao novi zvuk. Snimanje je možda pauzirano, telefon je možda van mreže, ili se sastanak možda završio, a da Chui o tome nije obaviješten. Ni kratak razmak ne dokazuje da sastanak teče uživo, jer telefon koji preko nove veze nadoknađuje stariji snimak izgleda jednako svježe. Chui predaje broj umjesto da imenuje uzrok, a tamo gdje to 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 samo pretpostavka. Može se ispraviti u aplikaciji ili tako što to kažeš asistentu, preko rename_meeting(). Bilješke upisane tokom sastanka asistent također može ispraviti. Za to prvo pita, jer novi tekst zamjenjuje sve bilješke odjednom, a stare se nigdje ne čuvaju. prepare_update_meeting() pročita bilješke onakve kakve jesu i kakve bi bile, a u tom trenutku još se ništa nije desilo. Tek kad kažeš da, update_meeting() ih upisuje, i to tačno onaj 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 upisuje i mora pitati ponovo.
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 jeste i kakav bi bio, i u tom trenutku još se ništa nije desilo. Tek kad kažeš da, update_summary() upisuje tačno onaj 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. Ako imenuješ govornika, izmijeniš bilješke, spojiš ili razdvojiš osobu na sastanku, promijeniš ime nekoj od njih ili zatražiš novi sažetak, Chui piše sažetak iznova iz transkripta i bilješki, a ispravka biva zamijenjena. Zato, kad je greška u tome ko je govorio ili šta je pisalo u bilješci, ispravi to. Sažetak se sam uskladi s tim minutu-dvije kasnije.
Sedmični stand-up je jedan sastanak koji se ponavlja, a Chui zna koji su snimci njegova ponavljanja. To zna iz serije u kalendaru kojoj pripadaju, a ta serija je sačuvana uz snimak, a ne naknadno tražena. get_series() daje ranija ponavljanja jednog sastanka, od najnovijeg. Zato su „šta smo dogovorili prošle sedmice?“ i „šta je ostalo otvoreno od onog prije?“ jedan poziv, a zatim get_meeting(), umjesto pretrage po naslovima koji možda ne liče jedan na drugi. 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 djelimičan (partial). Tako Chui kaže da snimak ne pokriva cijeli razgovor. Rad aplikacije je bio obustavljen, ili je snimak obnovljen nakon pada, a njegov kraj nikad nije stigao na disk. Sažmi ono što postoji kao fragment i ne opisuj to kao cijeli sastanak. Sastanak nema takvu oznaku kad ništa nije pošlo po zlu. Uvezeni fajl je nikad nema, jer nema sata sastanka s kojim bi se poredio.
get_coverage() postavlja to pitanje direktno i odgovara jednom rečenicom: da li snimak pokriva sastanak, koliko je fajl dug, koliko je sastanak trajao i koji je njegov dio stigao u snimak. Ništa u transkriptu to ne pokazuje. Dvadeset minuta sastanka od devedeset minuta čita se tačno kao cijeli sastanak od dvadeset minuta. Zato to vrijedi pitati prije nego što nekome kažeš šta je dogovoreno. Također razlikuje „to niko 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 ispravka bilješke obično je sve što treba. U aplikaciji „Napiši sažetak ponovo“ prikazuje diskretan red dok se sažetak piše iznova (od verzije 248). Asistent to može i izričito zatražiti. To je jedina stvar koju ovdje može uraditi koja košta pravi novac pri svakom pozivu: prolaz jezičkog modela kroz cijeli sastanak, a za sastanak koji nikad nije transkribovan i prolaz transkripcije kroz zvuk. Pored toga, odbacuje postojeći sažetak. Zato se za to prvo pita. prepare_resummarise_meeting() pročita sažetak koji bi nestao i kaže koji bi od ta dva prolaza bio plaćen ako kažeš da, 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, to kaže i ništa ne plaća. Sastanak u kojem Chui nije čuo nijednu riječ ne može se ponovo sažeti. Chui to kaže umjesto da dvaput plati slušanje tišine.
Ako je Chui pogrešno procijenio vrstu snimka, promijeni je. Na kraju sažetka dugme pokazuje za koju vrstu snimka ga je Chui smatrao, npr. bilješku, intervju ili sastanak (od verzije 248). Izaberi drugu vrstu i sažetak se piše iznova u tom obliku, a stari je zatamnjen dok ne stigne novi; isto dugme može i vratiti izbor Chuiju. Kucanjem, shape proslijeđen u prepare_resummarise_meeting() piše sažetak iznova u obliku koji navedeš i zadržava ga za taj sastanak; auto vraća izbor Chuiju.
Kratka bilješka, za jedan glas (od verzije 235). Snimak u kojem je samo jedan glas, na primjer misao koju izgovoriš sebi, može se umjesto toga vratiti kao kratka bilješka: sama misao, sređena, bez naslova i imena govornika, i označena sijalicom među tvojim sastancima. Od verzije 236 to važi i za dug snimak, koji traje satima, a koji se ranije mogao pročitati kao dva glasa i tretirati kao sastanak.
Vlastiti oblik, naučen jednom. Ako tvoj sastanak ima svoje naslove — sedmični pregled je uvijek brojke, rizici, molbe — reci 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 s 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 dugmeta za to.
Transkript stiže kao speaker_0, speaker_1 … jer sistem razlikuje glasove, ali ih ne zna imenovati. Kad jedan glas imenuješ u aplikaciji ili preko asistenta pomoću name_speaker(), ime zamjenjuje oznaku svuda gdje se taj sastanak čita. Osoba se dodaje na spisak da je sljedeći sastanak ponudi, a sažetak se prepisuje s tim imenom.
Kad imenuješ glas u aplikaciji, lista počinje s „Ja“ (Me), a pored stoji ime tvog računa: jedan dodir stavlja tvoje ime na taj glas tačno onako kako ga piše tvoj račun (od verzije 249).
Prepoznavanje glasa od jednog sastanka do drugog radi samo za ljude koji su za sebe uključili „Prepoznavanje vlastitog glasa“ (Own-voice recognition) (Postavke, mijenjane na zahtjev). Njihov glas stiže već imenovan na njihovim sastancima i na sastancima njihove firme na koje su bili pozvani. 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š niko nije potvrdio, prikazuje se kao obično ime, ali je samo pretpostavka. Dodir na njega nudi „Da, ovo 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 ga potvrđuje, a prepare_reject_speaker_name() pa reject_speaker_name() ga uklanja.
Svaka greška kaže koja je i šta se može uraditi:
Većina nudi ponovni pokušaj.
Kad se sažetak ne može napisati zbog greške na strani Chuija, Chui sam pokušava ponovo svakih sat vremena otprilike jedan dan (od verzije 230), pa problem tokom noći ne ostavlja sastanak da čeka na „Napiši sažetak ponovo“ (Write the summary again).
Brisanje sastanka zauvijek uništava snimak, transkript, sažetak i bilješke, svuda gdje postoje. S njima nestaje i sve što je Chui iz tog razgovora saznao o ljudima koji su u njemu učestvovali. Svaki javni link prema njemu prestaje raditi. Chui pamti da je sastanak izbrisan, pa telefon na kojem je zvuk još sačuvan odbacuje ga umjesto da ga kasnije ponovo otpremi. Ništa od toga ne može se vratiti.
U aplikaciji je to Izbriši sastanak (Delete meeting) na dnu sastanka ili prevlačenje reda. U oba slučaja Chui prvo pita u panelu koji navodi ime sastanka.
Asistent to također može uraditi i pita na isti način, u dva koraka, jer je ovo 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, da li su u njega upisane bilješke i da li ga preko linka čita neko ko ne koristi Chui. U tom trenutku još se ništa nije desilo. Tek kad kažeš da, delete_meeting() ga uništava. Ne prima ništa osim odgovora na to pitanje, pa se ne može usmjeriti na sastanak koji ti upravo nije prikazan. Kolega koji može otvoriti sastanak koji je neko podijelio s timom ne može ga izbrisati. To može samo osoba koja ga je snimila.
Snimanje je zaustavljeno u pauzi i ponovo pokrenuto nakon nje, ili se snimak prekinuo pa je Chui ostatak sastanka sačuvao zasebno. U svakom slučaju, jedan razgovor stoji na tvom spisku kao dva reda, 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, koliko je trajao razmak između njih i koliko bi dug bio spojeni snimak. U tom trenutku još se ništa nije desilo. Tek kad kažeš da, merge_meetings() to uradi. Ne prima ništa osim odgovora na to pitanje.
Šta radi: dva snimka se nadovezuju jedan na drugi, redom kojim su nastali, u raniji sastanak, koji zadržava svoj identifikator i datum. Kasniji sastanak se zatim briše. Chui spojeni snimak čita iznova 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 u bilo kojem od sastanaka ostaju, redom, a one iz druge polovine pomjeraju se na odgovarajuće mjesto na vremenskoj osi.
Zbog toga se nikad ne gubi zvuk. Svaka sekunda oba snimka nalazi se u sastanku koji ostaje, i izmjerena je prije nego što se drugi red dirne. Ono što se ne vraća su riječi. Oba sažetka i oba transkripta bivaju zamijenjeni, uključujući ručne ispravke u bilo kojem od njih, i ništa ne vraća dva reda. Nema poništavanja.
Još dvije stvari koje vrijedi znati prije nego što to zatražiš. Ako dvije polovine vide različiti ljudi, recimo jedna je podijeljena s firmom, a druga je samo za tebe, spojeni sastanak vide oni koji su mogli vidjeti privatniju od dvije. Tako ništa što je bilo samo za tebe ne dospijeva pred tuđe oči spajanjem. A ako je bilo koja polovina 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 spaja dva snimka koja ne može pošteno složiti, nego radije odbije nego da napravi fajl koji se reprodukuje kao pogrešan sastanak. To su dvije polovine snimljene s različitim postavkama, ili jedna snimljena na telefonu, a druga na Macu. Ne spaja ni dva reda koja su počela u istom trenutku i trajala jednako dugo. To je jedan razgovor koji je Chui primio dvaput, a ne dvije polovine jednog, i spajanjem bi nastao sastanak koji sve govori dvaput. U tom slučaju izbriši jedan od njih.
I još ne može spojiti ništa što je snimljeno u kartici preglednika. Snimak napravljen u pregledniku zapisuje svoj indeks usput, a ne na jednom mjestu na kraju, i Chui nema načina da dva takva snimka složi. Sami snimci su u redu i normalno se reprodukuju. Chui ih samo ne može spojiti. Dvije polovine sastanka koje želiš spojiti moraju biti snimljene na telefonu, Macu ili Windows računaru.
Postoji i ograničenje na besplatnom računu. Recimo da sastanak koji bi ostao još nije pročitan, na primjer jer je kod njega nešto pošlo po zlu, a deset sastanaka za taj mjesec je već iskorišteno. Tada Chui odbija spajanje. Čitanje spojenog snimka bilo bi prvo čitanje, čekalo bi do kraja mjeseca, a obje polovine bile bi zaključane odjednom. Plaćeni račun nema takvo ograničenje. Inače se mogu spojiti sljedećeg mjeseca. Koliko košta korisnički račun objašnjava ograničenja besplatnog računa.
U aplikaciji Chui nigdje nema dugmeta za ovo. To je popravka koju primijetiš dok čitaš oba sastanka, i upravo tamo je mjesto da je zatražiš.
Obrnuto: telefon je ostao na stolu ili laptop otvoren, i tri razgovora završila su u jednom snimku. Chui je sačuvao jedan sastanak s jednim sažetkom, koji je o svima njima, a time ni o jednom.
U verzijama 238 i 239 snimak na telefonu se već tokom snimanja sam dijelio na zasebne sastanke na svakoj dugoj tišini; od verzije 240 „Novi snimak“ na telefonu ponovo pravi jedan snimak koji traje do „Zaustavi“ (Snimanje sastanka).
Chui to obično sam primijeti. Nakon što pročita snimak od pola sata ili duži, Chui provjerava da li je to zapravo nekoliko sastanaka. Gleda uglavnom ko govori: gdje jedni zauvijek utihnu, a drugi počnu, tu se jedan sastanak završava. Svako takvo mjesto uporedi s onim o čemu se razgovara, s tvojim kalendarom i s eventualnom pauzom. Tek kad se to poklapa, na ekranu sastanka pojavi se kartica „Izgleda kao 3 odvojena sastanka“ (Looks like 3 separate meetings). Na njoj je svaki dio, s vremenom, naslovom i ljudima u njemu. Odznači dio da ostane spojen sa susjednim. „Podijeli na N“ (Split into N) reže snimak, a „Ovo je jedan sastanak“ (It’s one meeting) uklanja karticu zauvijek.
Ili pitaj gdje su granice. find_split_points() odgovara prijedlogom koji je Chui sam napravio, s istim dijelovima koje pokazuje kartica i s imenima. Navodi i duge tišine: koliko je svaka udaljena od početka snimka, koliko je trajala, šta je posljednje rečeno prije nje i šta prvo poslije nje. Ne mijenja ništa što se vidi. Ako kažeš da je to jedan sastanak, keep_as_one_meeting() je „Ovo je jedan sastanak“ izrečeno riječima.
Onda zatraži rez. prepare_split_meeting() navodi svaki dio koji bi nastao: kada počinje, koliko je dug i šta se prvo kaže u njemu. U tom trenutku još se ništa nije desilo. Tek kad kažeš da, split_meeting() to uradi. Ne prima ništa osim odgovora na to pitanje.
Šta radi: zvuk se dijeli tačno tamo gdje je rečeno, a svaki dio postaje zaseban sastanak. Prvi dio zadržava identifikator ovog sastanka, njegov datum, naslov i objavljeni link. Ostali su novi sastanci, koji počinju u trenucima kada su zaista snimljeni. Ništa se ne snima ponovo i ništa se ne transkribuje ponovo. Chui zna u kojoj je sekundi izgovorena svaka riječ, pa riječi iz prvog sata jednostavno ostaju s prvim satom, a imena na glasovima ostaju tačno onakva kakva jesu. Tvoje bilješke idu s dijelom tokom kojeg su upisane. Chui zatim piše novi 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 nema šta da se naplati. Ako je prije reza bilo iskorišteno devet sastanaka, i poslije njega je devet.
Gubiš sažetak cijelog snimka. Gubiš i ono što je taj sažetak upisao o ljudima u njemu, a Chui to ponovo zapisuje iz novih sažetaka. Ne gubi se ni zvuk ni riječi. Nema poništavanja. Ponovno spajanje dijelova pomoću merge_meetings() bi uspjelo, ali to čita spojeni snimak ispočetka i traje nekoliko minuta.
Chui odbija rez, prije nego što te išta pita, u četiri slučaja:
Sastanak koji je Chui složio nakon što je uređaj za snimanje prestao slati može se podijeliti, ili spojiti s drugim sastankom, odmah (od verzije 247). Ako taj uređaj kasnije pošalje ostatak svog snimka, dio koji Chui nije imao stiže kao zaseban sastanak.
Jedino dugme za ovo nalazi se na kartici koju Chui pokazuje kad sumnja da je snimak zapravo nekoliko sastanaka. Rez na bilo kojem drugom mjestu traži se riječima.