Kodėl diktavimo programos suvalgo tavo pirmą žodį

Paspaudi spartųjį klavišą, kalbi, o pirmas žodis nukertamas. Kodėl taip nutinka paleidžiant ir kaip padeda šiltas mikrofonas su 500 ms atsarga.

Teodor Deleanu2026 m. liepos 10 d.Skaitymo laikas: 6 min.

Paspausk spartųjį klavišą. Pradėk kalbėti. Žiūrėk, kaip transkripcija prasideda nuo antro tavo žodžio — kartais nuo trečio. „Refaktorink pakartojimo logiką“ išeina kaip „pakartojimo logiką“. „Dar nesulygink to“ išeina kaip „sulygink tai“, o tai jau tikrai pavojingas sakinys, parašytas tavo vardu. Šį gedimą lengva atkartoti šalto paleidimo mikrofono keliuose — nuo operacinės sistemos įmontuotų sprendimų iki specializuotų diktavimo įrankių.

Žmonės tai aprašo skirtingai — „nukerta pradžią“, „turiu prieš kalbėdamas padaryti pauzę“, „pirmo žodžio visada trūksta“ — bet tai vienas reiškinys, ir vieną kartą nukentėjęs išsiugdai apėjimą, kurį išsiugdo visi: paspausk klavišą, palauk akimirką, tada kalbėk. Vadinasi, dabar dešimtis kartų per dieną atlieki nedidelį prietaringą ritualą, kad kompensuotum savo įrankį, ir įrankis išdresavo tave, o ne atvirkščiai.

Tą ritualą kituose įrankiuose atlikinėjau mėnesių mėnesius. Kuriant Keebye jo nužudymas buvo vienas pirmųjų punktų sąraše, nes sprendimas pasirodė reikalaujantis nepatogaus kompromiso, kurio dauguma programų nepadarys — ir apie tą kompromisą noriu kalbėti taip pat atvirai, kaip apie patį sprendimą.

Kodėl pirmas žodis nukertamas?

Tai kategorijos lygio problema, o ne vieno tiekėjo aplaidumas, ir jos fizika paprasta: mikrofonai nėra momentiniai.

Kai diktavimo programa įrašymą pradeda naiviai — paspaudei spartųjį klavišą, tada atidaromas mikrofonas — prieš užfiksuojant pirmą tavo šnekos pavyzdį turi suveikti visa grandinė. Turi pasileisti operacinės sistemos garso sesija. Turi pabusti įvesties įrenginys, o kai kuriai įrangai tai reiškia tikrą įšilimo laiką. Suderinamas srauto formatas, priskiriami buferiai, o pirmieji atkeliaujantys buferiai dažnai yra šiukšlės, kurios išmetamos. Priklausomai nuo mašinos ir įrenginio, ta grandinė trunka kažkur tarp „akimirkos“ ir poros sekundžių.

Tuo tarpu tu — žmogus su jau suformuluota mintimi — pradedi kalbėti tą akimirką, kai pirštas paliečia klavišą. Paprastai net truputį prieš tą akimirką: ketinimas paspausti ir ketinimas kalbėti iš smegenų išeina kartu, o šnekos pradžia reguliariai aplenkia programos pasirengimą. Viskas, ką pasakei prieš įsijungiant srautui, programai niekada neegzistavo. Modelis negali transkribuoti garso, kuris niekada nebuvo užfiksuotas. Iš čia ir „pakartojimo logiką“.

Kodėl programos mikrofoną paleidžia pagal poreikį, o ne laiko jį pasiruošusį? Daugiausia iš padorumo. Laikyti atidarytą mikrofoną kainuoja truputį energijos ir — kur kas svarbiau — įžiebia operacinės sistemos mikrofono indikatorių, kurį naudotojai suprantamai skaito kaip „ši programa manęs klausosi“. Mikrofono atidarymas tik pagal poreikį išlaiko indikatorių sąžiningą, o programą — mandagios išvaizdos. Kaina yra šalto paleidimo rizika įrašo pradžioje.

Sprendimas: mikrofonas, kuris jau klausosi, kai paspaudi klavišą

Keebye puola tai iš abiejų galų, ir šiuos du mechanizmus verta atskirti, nes jie sprendžia dvi skirtingas problemos puses.

Šiltas mikrofonas. Po pirmojo sesijos įrašo Keebye palieka garso įvesties srautą atidarytą. Tai reiškia, kad šalto paleidimo grandinė — sesijos paleidimas, įrenginio pabudimas, srauto derinimas — jau įvyko prieš vėlesnį diktavimą, kol tas srautas išlieka sveikas. Srautas gyvas dar prieš tavo piršto judesį.

Atsarga prieš paspaudimą. Šiltas srautas išsprendžia programos vėlavimą, bet ne tavo — prisimink, tavo šnekos pradžia gali aplenkti klavišo paspaudimą. Todėl Keebye laiko slenkantį 500 milisekundžių naujausio garso buferį (8 000 pavyzdžių esant 16 kHz, žiediniame buferyje). Kai paspaudi spartųjį klavišą, ta pusė sekundės ką tik įrašyto garso įliejama į pasakymo priekį. Garsas, prasidėjęs to buferio viduje, tampa prieinamas transkribuotojui, užuot buvęs išmestas dar prieš klavišo paspaudimą.

Bendras rezultatas: pakartotiniuose diktavimuose šiltas srautas ir 500 ms atsarga padengia įprastą atvejį, kai šneka prasideda vos prieš klavišo paspaudimą arba kartu su juo. Ritualinė pauzė toje riboje tampa nereikalinga. Atkurti žodžio, ištarto daugiau nei pusę sekundės prieš įrašymo pradžią, tai negali, o pirmasis sesijos diktavimas vis tiek moka įprastą srauto paleidimo delsą.

Kompromisas, pasakytas tiesiai

Štai dalis, kurios atsisakau slėpti, nes tai sąžininga šio sprendimo kaina: kadangi garso srautas tarp diktavimų lieka atidarytas, macOS rodo mikrofoną kaip aktyvų net tada, kai nediktuoji. Oranžinis taškas dega. Jei pažiūrėsi į Control Center, Keebye bus nurodyta kaip naudojanti mikrofoną — būtent tuo metu, kai tu nedarai nieko.

Kas tuo metu iš tikrųjų vyksta: garsas teka į 500 ms žiedinį buferį ir nuolat išmetamas. Niekas netranskribuojama. Niekas nesaugoma. Niekas nepalieka buferio, kol nepaspaudi klavišo — o viskas, kas senesnė nei pusė sekundės, dingsta amžiams, perrašyta žiedo. Bet neapsimetinėsiu, kad indikatorius meluoja, nes jis nemeluoja: srautas atidarytas, ir „pajėgus nuolat klausytis“ yra teisingas šios architektūros apibūdinimas, net jei niekas jokia prasminga prasme neklauso, kol nepaprašai.

Šį kompromisą padariau sąmoningai, atmerktomis akimis, ir štai samprotavimas. Mikrofono atidarymas pagal poreikį kiekvieną kartą įneša šalto paleidimo riziką: nukirstus žodžius, ne tuos sakinius, išdresuotą pauzę. Šilto srauto sprendimo kaina krenta ant tavo komforto su oranžiniu tašku, o ją atremia architektūra, apie kurią gali pats mąstyti: tik tekstinė lokali istorija (apie kurią rašėme straipsnyje tavo diktavimas neturėtų tiesiog dingti), transkripcija įrenginyje, jokio niekada saugomo garso, pusė sekundės žiedinės atminties. Aš tą tašką priimu. Jei tu nepriimi — tai teisėta pozicija, ir dėl jos tau iš tiesų gali labiau tikti kitas įrankis; mūsų Keebye vs Superwhisper ir Keebye vs Wispr Flow puslapiai parašyti būtent tokiam sprendimui padėti.

Dvi ribos, kad niekas nenustebtų

Pats pirmasis sesijos diktavimas vis tiek turi įprastą srauto paleidimo delsą. Mikrofonas šiltas todėl, kad įrašas jau buvo; pirmasis vis tiek sumoka sąrankos kainą. Vėlesni diktavimai naudojasi privalumu tol, kol srautas lieka atidarytas.

Atsarga yra 500 milisekundžių, o 500 milisekundžių yra akimirka, ne sakinys. Buferis padengia natūralų atvejį — žodį, pradėtą vos prieš klavišo paspaudimą. Jei ištari visą sakinį ir tada prisimeni paspausti klavišą, ankstesni žodžiai dingę, ir taip sumanyta: žiedas visada laiko tik pusę sekundės, būtent tam, kad programa neišlaikytų prasmingo garso, kol nieko neveikia. Ilgesnė atsarga pagautų daugiau tavo išsiblaškiusių pradžių ir atmintyje laikytų daugiau aplinkos garso. Pusė sekundės yra ten, kur tą liniją nubrėžiau.

Kodėl pusė sekundės svarbesnė, nei skamba

Nukirstas pirmas žodis atrodo kaip smulki klaida. Lygiagrečių juostų darbo eigoje, kuriai Keebye ir buvo sukurta — balsas kaip valdymo kanalas kelioms AI agentų juostoms ir keliems pokalbiams su žmonėmis vienu metu, ta darbo diena, aprašyta straipsnyje du vaikai, trys startuoliai, vienas balsas — diktavimas vyksta dešimtis kartų per dieną, pliūpsniais, konteksto persijungimo viduryje. Įrankis, reikalaujantis ritualinės pauzės, apmokestina kiekvieną pliūpsnį ir, dar blogiau, retkarčiais apverčia tavo prasmę ir ją pateikia. „Sulygink tai“ buvo juokinga lygiai vieną kartą.

Patikimumas šioje kategorijoje nėra viena didelė funkcija. Tai smulkesnių apsaugų sankaupa: atsarga pradiniam garsui, istorija už transkripcijos ir atkuriamas įterpimo kelias. Šis straipsnis apie pirmąją iš jų; straipsnis apie istoriją apima antrąją.

Keebye yra ankstyvojoje prieigoje macOS sistemai. Pradėk nemokamą bandomąjį laikotarpį žemiau, pakartotiniame diktavime pasakyk „Dar nesulygink to“ ir patikrink, ar pirmas žodis išgyveno. Tame ir visas testas.

Pradėk kalbėti be ritualinės pauzės

Pradėk nemokamą bandomąjį laikotarpį ir išbandyk pakartotinį diktavimą, prasidedantį žodžiu, kurio negali sau leisti prarasti.

Start free trial

Early access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.

Skaityti toliau