Durdurmadan yazılı özete kadar: aşamalar, notlar ve neyin ters gidebileceği.
Durdurmak kaydı bitirir ve gerisini başlatır. Ses Chui sunucularına yüklenir, transkripti çıkarılır ve özetlenir. Telefonda kayıt, bunların hiçbiri olmadan önce diskte güvendedir: bağlantı yoksa bekler, bağlantı gelince yüklenir. Kötü ağ yüzünden hiçbir şey kaybolmaz ve basman gereken bir şey yoktur.
Mac'te ya da Windows'ta, Chui kayıt hâlâ durdurulurken kapandıysa kayıt kaybolmaz: Chui bir sonraki açılışında o kaydı bulur ve notlarıyla birlikte başlattığın toplantıya yükler (build 236'dan beri).
Toplantı bu aşamalardan geçer ve uygulama hangisinde olduğunu gösterir:
Toplantının metni ve özeti hazır olunca bir bildirim gelir. Bildirimde başlık da içerik de yoktur.
Chui bir transkript ürünü değil. Amaç, toplantı sırasında iki satır karalaman (bir isim, bir sayı, verdiğin söz) ve Chui'nin bunları gerçekte söylenenlerle birleştirmesi. Özet ikisinden birden yazılır. Yazdığın satırlar özete aynen girmez, ona yön verir. Notlar toplantıdan sonra da yazılabilir veya düzeltilebilir.
list_meetings() listeyi verir: kimlik, başlık, tarih, süre, durum ve başka hiçbir şey. get_meeting() tek bir toplantının özetini, notlarını, süresini ve kaç konuşmacı algılandığını verir. Genellikle burada durmak yeterlidir. Transkript ayrı ve çok daha pahalı bir okumadır: bkz. Söylenenleri bulmak.
İçinde olduğun toplantı da bu listede, in_progress olarak işaretli. Böylece “şu an neyin ortasındayım?” diye sorulan bir asistan cevap verebilir. Kayıt ulaşana kadar transkript de özet de yoktur, çünkü Chui transkripti toplantı bittikten sonra çıkarır. Kesin bir süre de yoktur. Bunun yerine toplantının ne kadar süredir devam ettiği, Chui'nin cihazdan en son ne zaman ses duyduğu ve toplantıya yazılan notlar, yazıldıkça döner. Asistan bu notları okuyabilir, onlara ekleme yapabilir ve toplantının bitmediğini söyleyebilir. Onu boş ya da başarısız bir toplantı olarak bildirmemeli, oysa eksik parçalar dışarıdan tam olarak böyle görünür.
Bu “bitmedi” demektir, “şu an oluyor” değil. Aradaki farkı bilmeye değer. Chui kaydın bittiğini cihaz söyleyince öğrenir ve üç farklı durum sunucudan aynı görünür: şu an konuşulan bir sohbet, bir dakika önce bitmiş ama sesi hâlâ yüklenen bir sohbet, toplantının ortasında kapanmış ve bir daha hiçbir şey söylemeyecek bir telefon. Bu yüzden asistana mikrofonun açık olduğunu iddia etmemesi söylenir.
Bunun yerine tek, dar bir bilgi alır. Toplantı kaydedilirken telefon her doksan saniyede bir ses parçası yükler. Yani Chui o kaydın en yeni parçasının ne kadar önce geldiğini bilir ve bunun ötesinde hiçbir şey bilmez. Uzun bir boşluk, yeni ses gelmediği anlamına gelir: kayıt duraklatılmış olabilir, telefon çevrimdışı olabilir ya da toplantı Chui'ye haber verilmeden bitmiş olabilir. Kısa bir boşluk da canlı olduğunu kanıtlamaz, çünkü yeni bir bağlantıyla eski bir kaydı yetiştiren telefon da aynı derecede yeni görünür. Chui bir neden söylemek yerine sayıyı verir. Hiç kontrol edemediği yerde tahmin yürütmek yerine hiçbir şey söylemez.
Chui toplantının başlığını kendisi verir, genellikle takvim davetinden ya da söylenenlerden. Bu yüzden isim çoğu zaman bir tahmindir. Uygulamada ya da asistana söyleyerek düzeltilebilir: rename_meeting(). Toplantı sırasında yazılan notları da asistan düzeltebilir, ama bunu önce sorar, çünkü yeni metin notların hepsinin yerini bir kerede alır ve eskiler hiçbir yerde saklanmaz. prepare_update_meeting() notların şu anki hâlini ve değişiklikten sonra nasıl görüneceğini okur ve o noktada henüz hiçbir şey olmamıştır. Ancak sen evet dedikten sonra update_meeting() onları yazar, hem de sana gösterilen metni birebir. Asistan değişikliği içeren metnin tamamını göndermeli, yoksa geri kalanı gider. Notlar bu arada değiştiyse (örneğin başka bir cihazda) hiçbir şey yazılmaz ve yeniden sorması gerekir.
Özet de aynı şekilde düzeltilebilir: yanlış bir isim, yanlış bir sayı, ters yazılmış bir karar. prepare_update_summary() özetin şu anki ve olacağı hâlini okur ve o noktada henüz hiçbir şey olmamıştır. Ancak sen evet dedikten sonra update_summary() sana gösterilen metni birebir yazar ve özetin tamamının yerine koyar. Transkript düzenlenemez, ne asistanla ne uygulamada. O, söylenenin kendisidir.
Elle düzeltilmiş bir özet sonrasında sıradan bir özettir ve onu hiçbir şey korumaz. Bir konuşmacıya isim vermek, notları değiştirmek, toplantıdaki bir kişiyi birleştirmek veya ayırmak, birinin adını değiştirmek ya da yeni bir özet istemek, Chui'nin özeti transkriptten ve notlardan baştan yazmasına yol açar ve düzeltme kaybolur. Yani hata kimin konuştuğuysa ya da bir notta ne yazdığıysa, onu düzelt. Özet bir iki dakika sonra kendiliğinden ona uyar.
Haftalık bir stand-up, tekrar eden tek bir toplantıdır ve Chui hangi kayıtların onun tekrarları olduğunu bilir. Bunu kayıtların ait olduğu takvim serisinden bilir. Bu bilgi sonradan aranmaz, kayıtta saklanır. get_series() bir toplantının önceki tekrarlarını en yeniden başlayarak verir. Böylece “geçen hafta neye karar vermiştik?” ve “bir öncekinden ne açık kalmıştı?” soruları, birbirine benzemeyebilecek başlıklarda arama yapmak yerine tek bir çağrı ve ardından bir get_meeting() ile cevaplanır. Takvim kaydı olmadan kaydedilen bir toplantı hiçbir seriye ait değildir ve cevap boş dönmek yerine bunu söyler.
Bir toplantı yarıda kesildi (cut short) ya da kısmi (partial) işaretiyle dönebilir. Bu, Chui'nin kaydın sohbetin tamamını kapsamadığını söylemesidir. Uygulama askıya alınmış olabilir ya da kayıt bir çökmeden sonra yeniden oluşturulmuş ve sonu diske hiç ulaşmamış olabilir. Olanı bir parça olarak özetle, tüm toplantıymış gibi anlatma. Hiçbir şey ters gitmediyse toplantıda böyle bir işaret olmaz. İçe aktarılan bir dosyada da hiç olmaz, çünkü karşılaştırılacak bir toplantı saati yoktur.
get_coverage() bu soruyu doğrudan sorar ve tek cümleyle cevaplar: kaydın toplantıyı kapsayıp kapsamadığı, dosyanın ne kadar uzun olduğu, toplantının ne kadar sürdüğü ve bunun ne kadarının kayda girdiği. Transkriptte bunu gösteren hiçbir şey yoktur. Doksan dakikalık bir toplantının yirmi dakikası, yirmi dakikalık bir toplantının tamamıyla birebir aynı okunur. Bu yüzden birine neye karar verildiğini söylemeden önce sormaya değer. Ayrıca “bunu kimse ölçmedi” ile “sorun yok” cevaplarını birbirinden ayırır, çünkü ikisi aynı şey değildir.
Özet, bu notların söylenenlerle harmanlanmış hâlidir. Bu yüzden ikisinden biri değiştiğinde Chui onu bir iki dakika sonra kendiliğinden yeniden yazar. Bir konuşmacıya isim vermek ya da bir notu düzeltmek genellikle yeterlidir. Uygulamada “Özeti yeniden yaz” (Write the summary again), yeniden yazarken sakin bir satır gösterir (build 248'den beri). Asistan bunu doğrudan da isteyebilir. Bu, burada yapabileceği şeyler arasında her çağrıda gerçek para tutan tek şeydir: tüm toplantı üzerinden bir dil modeli geçişi, hiç transkripti çıkarılmamış bir toplantı için de ayrıca ses üzerinden bir transkripsiyon geçişi. Üstelik mevcut özeti de atar. Bu yüzden önce sorar: prepare_resummarise_meeting() silinecek özeti okur ve “evet” denirse bu iki işlemden hangisine para ödeneceğini söyler. Bu aşamada hiçbir şey harcanmaz. Ancak sen evet dedikten sonra resummarise_meeting() işlemi başlatır. Chui bu arada özeti kendiliğinden yeniden yazmışsa bunu söyler ve hiçbir şeye para ödemez. Chui'nin hiçbir söz duymadığı bir toplantı yeniden özetlenemez. Chui sessizliği iki kez dinlemek için para ödemek yerine bunu söyler.
Chui kaydın türünü yanlış anladıysa değiştir. Özetin sonundaki bir düğme, Chui'nin kaydı ne tür bir kayıt saydığını söyler: örneğin bir not, bir mülakat ya da bir toplantı (build 248'den beri). Başka bir tür seçersen özet o biçimde yeniden yazılır; yenisi gelene kadar eskisi soluk görünür. Aynı düğme seçimi Chui'ye geri de verebilir.
Tek bir ses için kısa bir not (build 235'ten beri). İçinde yalnızca tek bir ses olan bir kayıt, örneğin kendi kendine söylediğin bir düşünce, bunun yerine kısa bir not olarak dönebilir: düşüncenin kendisi, toparlanmış hâliyle, başlık ya da konuşmacı adı olmadan. Toplantılarında bir ampulle işaretlenir. Build 236'dan beri bu, saatlerce süren uzun bir kayıt için de geçerlidir; böyle bir kayıt önceden iki ses olarak okunup toplantı gibi ele alınabiliyordu.
Size ait bir biçim, bir kez öğretilir. Bir toplantınızın kendi başlıkları varsa — haftalık değerlendirme hep rakamlar, riskler, talepler — bunu bir asistana bir kez söyleyin, Chui o toplantıyı bundan sonra öyle yazar. Tekrarlanan bir toplantıya set_series_shape() ile öğretilir (herhangi bir toplantısından; get_series() geri okur), bir etikete update_label() içindeki summary_shape ile (list_labels() gösterir). Chui yine kısa bir «kısaca» ile başlar, sonraki adımlar ve açık sorularla biter. Tekrarlanan toplantının biçimi etiketinkinden önce gelir; farklı biçim öğreten iki etiket seçimi Chui'ye bırakır. Boş bir biçim seçimi Chui'ye geri verir. Ücretli planın parçasıdır ve sözle istenir — uygulamada bunun için bir düğme yok.
Transkript speaker_0, speaker_1 … olarak döner. Motor sesleri birbirinden ayırır ama onlara isim veremez. Bir sese uygulamada ya da asistan aracılığıyla name_speaker() ile isim verince isim, o toplantının okunduğu her yerde etiketin yerine geçer. Kişi listeye eklenir, böylece bir sonraki toplantıda önerilir. Özet de bu isme göre yeniden yazılır.
Uygulamada bir sese isim verirken liste, yanında hesabının adıyla «Ben» ile başlar: tek dokunuş o sese adını tam hesabında yazıldığı biçimde koyar (build 249'dan beri).
Bir sesi bir toplantıdan diğerine tanıma yalnızca kendisi için “Kendi sesini tanıma” (Own-voice recognition) özelliğini açmış kişilerde olur (Ayarlar, istek üzerine değiştirilir). Onların sesi kendi toplantılarında ve davet edildikleri şirket toplantılarında zaten isimli gelir. Diğer her ses speaker_0, speaker_1 … olarak başlar ve elle isimlendirilir. Chui'nin bir sese verdiği isim, diğer her isim gibi tek dokunuşla değiştirilir.
Chui'nin sohbetten çıkardığı ve henüz kimsenin onaylamadığı bir isim, sıradan bir isim gibi görünür ama yalnızca bir tahmindir. Ona dokununca iki seçenek çıkar: “Evet, bu …” (Yes, this is …) ismi kalıcı yapar, “Bu … değil” (Not …) ismi kaldırır. Asistan aracılığıyla get_meeting() bu tür isimleri tentative_speaker_names altında listeler. Sese aynı ismi vermek onu onaylar. prepare_reject_speaker_name() ve ardından reject_speaker_name() ise onu kaldırır.
Her hata hangisi olduğunu ve ne yapılabileceğini söyler:
Çoğu yeniden denemeyi önerir.
Chui tarafındaki bir hata yüzünden özet yazılamazsa Chui yaklaşık bir gün boyunca her saat kendiliğinden yeniden dener (build 230'dan beri). Böylece gece yaşanan bir sorun, toplantıyı “Özeti yeniden yaz” (Write the summary again) için bekletmez.
Bir toplantıyı silmek kaydı, transkripti, özeti ve notları, bulundukları her yerde, kalıcı olarak yok eder. Chui'nin o sohbetteki kişiler hakkında o sohbetten öğrendiği her şey de onlarla birlikte gider. Toplantıya giden herkese açık linkler çalışmayı bırakır. Chui toplantının silindiğini hatırlar, böylece sesi hâlâ tutan bir telefon onu daha sonra tekrar yüklemek yerine atar. Bunların hiçbiri geri getirilemez.
Uygulamada bu, toplantının en altındaki Toplantıyı sil (Delete meeting) düğmesi ya da satırı kaydırmaktır. Her iki durumda da Chui önce toplantının adını gösteren bir panelde sorar.
Asistan da bunu yapabilir ve aynı şekilde sorar. İki adımda yapar, çünkü bu geri alınamayan şeylerden biridir. prepare_delete_meeting() hangi toplantı olduğunu okur: adı, ne zaman olduğu, ne kadar sürdüğü, içine not yazıp yazmadığın ve Chui dışından birinin onu bir link üzerinden okuyup okumadığı. O noktada henüz hiçbir şey olmamıştır. Ancak sen evet dedikten sonra delete_meeting() onu yok eder. Bu araç o sorunun cevabından başka hiçbir şey almaz, yani sana az önce gösterilmemiş bir toplantıyı silmesi mümkün değildir. Birinin ekiple paylaştığı bir toplantıyı açabilen bir iş arkadaşı onu silemez. Yalnızca onu kaydeden kişi silebilir.
Arada kaydı durdurup sonra yeniden başlattın ya da kayıt kesildi ve Chui toplantının geri kalanını ayrı kaydetti. Her iki durumda da tek bir sohbet listende iki satır olarak duruyor, iki özet ve iki ayrı konuşmacı grubuyla.
Asistandan onları birleştirmesini iste. prepare_merge_meetings() ikisini de okur: hangisinin kalacağını, her birinin ne kadar uzun olduğunu, aradaki boşluğun ne kadar sürdüğünü ve birleşik kaydın ne kadar olacağını. O noktada henüz hiçbir şey olmamıştır. Ancak sen evet dedikten sonra merge_meetings() bunu yapar ve o sorunun cevabından başka hiçbir şey almaz.
Ne yapar: iki kayıt, yapıldıkları sırayla uç uca eklenip önceki toplantıya konur. O toplantı kimliğini ve tarihini korur. Sonraki toplantı ardından silinir. Chui birleşik kaydı baştan yeniden okur. Böylece toplantıda tüm sohbeti kapsayan tek bir transkript, tek bir özet ve tek bir konuşmacı grubu olur. Bu birkaç dakika sürer. İki toplantıda yazılan notlar sırasıyla korunur, ikinci yarının notları zaman çizelgesinde ileri kaydırılır.
Bu işlemde hiçbir zaman ses kaybolmaz. Diğer satıra dokunulmadan önce iki kaydın her saniyesi kalan toplantının içindedir ve ölçülmüştür. Geri gelmeyen şey sözlerdir: iki özet ve iki transkript, herhangi birinde elle yapılmış düzeltmeler dahil, yenileriyle değiştirilir ve iki satır bir daha ayrılamaz. Geri alma yoktur.
İstemeden önce bilmeye değer iki şey daha var. İki yarıyı farklı kişiler görüyorsa (biri şirketinle paylaşılmış, biri yalnızca sende kalmış), birleşik toplantıyı ikisinden daha özel olanı görebilenler görür. Böylece kendine sakladığın hiçbir şey birleştirme yoluyla başkasının önüne çıkmaz. Yarılardan biri bir takvim kaydına bağlıysa birleşik toplantı bu bağı korur ve kendi serisinde kalır.
Chui'nin reddettiği üç şey var ve bunu sen karar vermeden önce söyler, sonra değil.
Dürüstçe bir araya getiremeyeceği iki kaydı birleştirmez: farklı ayarlarla kaydedilmiş iki yarı ya da biri telefonda, biri Mac'te yapılmış iki kayıt. Yanlış toplantı gibi çalan bir dosya üretmektense reddeder. Aynı anda başlamış ve aynı süre devam etmiş iki satırı da birleştirmez. Bunlar bir sohbetin iki yarısı değil, Chui'ye iki kez ulaşmış tek bir sohbettir. Birleştirmek her şeyi iki kez söyleyen bir toplantı yaratır. Bunun yerine birini sil.
Ayrıca tarayıcı sekmesinde kaydedilmiş hiçbir şeyi henüz birleştiremez. Tarayıcıda yapılan bir kayıt dizinini sonda tek bir yere değil, ilerledikçe yazar ve Chui bu türden iki kaydı bir araya getiremez. Kayıtların kendisi sorunsuzdur ve normal çalar. Chui'nin yapamadığı yalnızca onları birleştirmektir. Birleştirmek istediğin toplantının iki yarısı telefonda, Mac'te ya da Windows bilgisayarda kaydedilmiş olmalı.
Bir de ücretsiz hesap için şu durum var: kalacak toplantı henüz okunmamışsa (örneğin bir şeylerin ters gittiği bir toplantı) ve ayın on toplantısı zaten kullanılmışsa Chui reddeder. Birleşik kaydı okumak ilk okuma sayılırdı; o ayın kotasına yazılır ve iki yarı da aynı anda kilitlenirdi. Ücretli hesapta böyle bir sınır yoktur. Ücretsiz hesapta ise gelecek ay birleştirilebilirler. Bir hesap ne kadar tutar ücretsiz hesabın sınırlarını anlatır.
Chui'de bunun için hiçbir yerde düğme yok. Bu, iki toplantıyı okurken fark ettiğin bir onarımdır ve onu istemenin yeri de tam orasıdır.
Tersi de olabilir: telefonu masada ya da dizüstünü açık bıraktın ve üç sohbet tek bir kayda girdi. Chui tek bir toplantı ve tek bir özet kaydetti. Özet hepsini anlatıyor, dolayısıyla hiçbirini doğru anlatmıyor.
Build 238 ve 239'da bir telefon kaydı, ilerledikçe her uzun sessizlikte kendini ayrı toplantılara bölüyordu; build 240'tan beri telefonda «Yeni kayıt» yine «Durdur»a kadar süren tek bir kayıt oluşturur (Bir toplantıyı kaydetmek).
Chui bunu genellikle kendisi fark eder. Yarım saat ya da daha uzun bir kayıt okunduktan sonra Chui bunun gerçekten birkaç toplantı olup olmadığına bakar. Bunu esas olarak kimin konuştuğuna bakarak yapar: bazı kişilerin tamamen sustuğu ve başkalarının konuşmaya başladığı yerde bir toplantı biter. Her böyle noktayı konuşulan konuyla, takviminle ve varsa bir arayla karşılaştırır. Ancak bunlar örtüşünce toplantı ekranında bir kart çıkar: “3 ayrı toplantı gibi görünüyor” (Looks like 3 separate meetings). Kartta her parça; saati, başlığı ve içindeki kişilerle görünür. Bir parçayı komşusuyla birlikte tutmak için işaretini kaldır. “N parçaya böl” (Split into N) kaydı keser, “Tek toplantı” (It’s one meeting) ise kartı kalıcı olarak kaldırır.
Ya da nereden ayrıldığını sor. find_split_points() Chui'nin kendi önerisiyle cevap verir, yani kartta görünen parçalarla ve isimlerle. Uzun sessizlikleri de listeler: her birinin kaydın başından ne kadar sonra geldiği, sessizliğin ne kadar sürdüğü, hemen öncesinde söylenen son şey ve hemen sonrasında söylenen ilk şey. Görebileceğin hiçbir şeyi değiştirmez. Bunun tek toplantı olduğunu söylersen keep_as_one_meeting(), “Tek toplantı” düğmesinin yazılı karşılığıdır.
Sonra kesmeyi iste. prepare_split_meeting() oluşacak her parçayı sayar: ne zaman başladığını, ne kadar uzun olduğunu ve içinde söylenen ilk şeyi. O noktada henüz hiçbir şey olmamıştır. Ancak sen evet dedikten sonra split_meeting() bunu yapar ve o sorunun cevabından başka hiçbir şey almaz.
Ne yapar: ses tam söylediğin yerlerden bölünür ve her parça ayrı bir toplantı olur. İlk parça bu toplantının kimliğini, tarihini, başlığını ve yayımlanmış linkini korur. Diğerleri, gerçekte kaydedildikleri anda başlayan yeni toplantılardır. Hiçbir şey yeniden kaydedilmez ve hiçbir şeyin transkripti yeniden çıkarılmaz. Chui her sözün hangi saniyede söylendiğini bilir. Yani ilk saatin sözleri ilk saatte kalır, seslere verilmiş isimler de olduğu gibi korunur. Notların, yazıldıkları sırada kaydedilen parçaya gider. Chui ardından her parça için yeni bir özet yazar. Bu bir dakikadan kısa sürer.
Ücretsiz hesabın ayda on toplantı hakkından hiçbir şey düşmez. Hiçbir şey yeniden transkripsiyona gönderilmez, dolayısıyla sayılacak bir şey yoktur. Kesmeden önce dokuz toplantı kullandıysan, sonra da dokuz kullanmış olursun.
Kaybettiğin şey tüm kaydın özetidir. O özetin, içindeki kişiler hakkında eklediği bilgiler de gider. Chui bu bilgileri yeni özetlerden yeniden yazar. Hiçbir ses ve hiçbir söz kaybolmaz. Geri alma yoktur. Parçaları merge_meetings() ile yeniden birleştirmek mümkündür, ama bu birleşik kaydı sıfırdan yeniden okur ve dakikalar sürer.
Chui kesmeyi, sana bir şey sormadan önce, dört durumda reddeder:
Kayıt cihazı göndermeyi bıraktıktan sonra Chui'nin bir araya getirdiği bir toplantı hemen bölünebilir ya da başka bir toplantıyla birleştirilebilir (build 247'den beri). O cihaz kaydının geri kalanını daha sonra gönderirse, Chui'de olmayan kısım ayrı bir toplantı olarak gelir.
Bunun için tek düğme, Chui'nin bir kaydın birkaç toplantı olduğundan şüphelendiğinde gösterdiği karttadır; başka bir yerden kesmek için bunu asistana söylemen gerekir.