Miksi sanelusovellukset syövät ensimmäisen sanasi
Painat pikanäppäintä, puhut ja ensimmäinen sana katkeaa. Miksi kylmäkäynnistys leikkaa alun ja miten lämmin mikrofoni ja 500 ms:n esipuskuri auttavat.
Paina pikanäppäintä. Ala puhua. Katso, kuinka litterointi alkaa toisesta sanastasi — joskus kolmannesta. ”Refaktoroi uudelleenyrityslogiikka” tulee ulos muodossa ”uudelleenyrityslogiikka”. ”Älä mergeä sitä vielä” tulee ulos muodossa ”mergeä sitä vielä”, mikä on aidosti vaarallinen lause kirjoitettavaksi sinun puolestasi. Tämä vika on helppo toistaa kylmäkäynnistyvissä mikrofoniputkissa, käyttöjärjestelmän sisäänrakennetuista omistettuihin sanelutyökaluihin.
Ihmiset kuvaavat sitä eri tavoin — ”se leikkaa alun”, ”minun täytyy pitää tauko ennen puhumista”, ”ensimmäinen sana puuttuu aina” — mutta kyse on yhdestä ilmiöstä, ja kun olet kerran siihen kompastunut, kehität sen kiertokeinon jonka kaikki kehittävät: paina näppäintä, odota hetki, ja sitten puhu. Mikä tarkoittaa, että suoritat nyt pientä taikauskoista rituaalia kymmeniä kertoja päivässä kompensoidaksesi työkaluasi, ja työkalu on kouluttanut sinut eikä toisin päin.
Tein tuota rituaalia kuukausia muissa työkaluissa. Keebyeä rakentaessa sen tappaminen oli listan kärkipäässä, koska korjaus osoittautui vaativan epämukavan kompromissin, jota useimmat sovellukset eivät suostu tekemään — ja haluan puhua kompromissista yhtä suoraan kuin korjauksesta.
Miksi ensimmäinen sana katkeaa pois?
Tämä on kategorian tason ongelma, ei yhden toimittajan huolimattomuutta, ja sen fysiikka on yksinkertaista: mikrofonit eivät ole välittömiä.
Kun sanelusovellus aloittaa nauhoituksen naiivilla tavalla — paina pikanäppäintä, ja sitten avaa mikrofoni — kokonainen ketju on ajettava läpi ennen kuin ensimmäinen näyte puheestasi tallentuu. Käyttöjärjestelmän ääni-istunto on alustettava. Syöttölaitteen on herättävä, mikä joillekin laitteille tarkoittaa kirjaimellista lämpenemisaikaa. Virran muoto neuvotellaan, puskurit varataan, ja ensimmäiset saapuvat puskurit ovat usein roskaa joka heitetään pois. Koneesta ja laitteesta riippuen tuo ketju vie jotain ”hetken” ja parin sekunnin väliltä.
Sillä välin sinä — ihminen, jolla on valmiiksi muotoiltu ajatus — alat puhua sillä hetkellä kun sormesi osuu näppäimeen. Yleensä itse asiassa hiuksenhienosti ennen sitä hetkeä: aikomus painaa ja aikomus puhua lähtevät aivoistasi yhdessä, ja puheen alku voittaa rutiininomaisesti sovelluksen valmiuden. Kaikki mitä sanoit ennen kuin virta aukesi ei koskaan ollut olemassa sovelluksen näkökulmasta. Malli ei voi litteroida ääntä, jota ei koskaan kaapattu. Siis: ”uudelleenyrityslogiikka”.
Miksi sovellukset käynnistävät mikrofonin pyynnöstä sen sijaan että pitäisivät sen valmiina? Enimmäkseen hyvästä kansalaisuudesta. Mikrofonin pitäminen auki maksaa vähän virtaa ja — paljon tärkeämpää — se sytyttää käyttöjärjestelmän mikrofoni-indikaattorin, jonka käyttäjät ymmärrettävästi lukevat merkitsevän ”tämä sovellus kuuntelee minua”. Mikrofonin avaaminen vain pyynnöstä pitää indikaattorin rehellisenä ja sovelluksen kohteliaan näköisenä. Hintana on kylmäkäynnistysriski nauhoituksen alussa.
Korjaus: mikrofoni, joka kuuntelee jo kun painat näppäintä
Keebye hyökkää tähän molemmista päistä, ja nämä kaksi mekanismia kannattaa erottaa, koska ne ratkaisevat ongelman kaksi eri puoliskoa.
Lämmin mikrofoni. Istunnon ensimmäisen nauhoituksen jälkeen Keebye pitää äänisyötevirran auki. Se tarkoittaa, että kylmäkäynnistysketju — istunnon alustus, laitteen herätys, virran neuvottelu — on jo tapahtunut ennen myöhempää sanelua niin kauan kuin virta pysyy terveenä. Virta on elossa ennen kuin sormesi liikkuu.
Esipuskuri. Lämmin virta korjaa sovelluksen myöhästymisen, mutta ei sinun — muista, että puheesi alku voi voittaa näppäinpainalluksesi. Siksi Keebye ylläpitää liukuvaa 500 millisekunnin puskuria viimeisimmästä äänestä (8 000 näytettä 16 kHz:llä, rengaspuskurissa). Kun painat pikanäppäintä, tuo puolisekuntinen juuri-sitä-ennen-ääni huuhdellaan lausahduksen eteen. Ääni, joka alkoi tuon puskurin sisällä, on litteroijan käytettävissä sen sijaan että se hylättäisiin ennen näppäinpainallusta.
Yhteisvaikutus: toistuvissa saneluissa lämmin virta ja 500 ms:n esipuskuri kattavat sen tavallisen tapauksen, jossa puhe alkaa juuri ennen näppäinpainallusta tai sen kanssa. Rituaalitauko käy tarpeettomaksi tuon rajan sisällä. Se ei voi palauttaa sanaa, joka puhuttiin yli puoli sekuntia ennen nauhoituksen alkua, ja istunnon ensimmäinen sanelu maksaa yhä normaalin virran käynnistysviiveen.
Kompromissi, suoraan sanottuna
Tässä on se osa, jota kieltäydyn hautaamasta, koska se on suunnittelun rehellinen hinta: koska äänivirta pysyy auki sanelujen välillä, macOS näyttää mikrofonin aktiivisena silloinkin kun et sanele. Oranssi piste palaa. Jos katsot Ohjauskeskusta, Keebye on listattu mikrofonin käyttäjäksi juuri silloin, kun et tee mitään.
Mitä sinä aikana oikeasti tapahtuu: ääni virtaa 500 ms:n rengaspuskuriin ja hylätään jatkuvasti. Mitään ei litteroida. Mitään ei tallenneta. Mikään ei poistu puskurista ennen kuin painat näppäintä — ja kaikki puolta sekuntia vanhempi on ikuisesti poissa, renkaan ylikirjoittamana. Mutta en aio teeskennellä, että indikaattori valehtelisi, koska se ei valehtele: virta on auki, ja ”kykenevä jatkuvaan kuunteluun” on reilu kuvaus arkkitehtuurista, vaikka mikään ei kuuntele missään merkityksellisessä mielessä ennen kuin pyydät.
Tein tämän kompromissin tarkoituksella, silmät auki, ja tässä on perustelu. Mikrofonin avaaminen pyynnöstä tuo kylmäkäynnistysriskin joka kerta: katkenneita sanoja, vääriä lauseita, opitun tauon. Lämpimän virran suunnittelulla on hinta, joka osuu siihen kuinka mukava olet oranssin pisteen kanssa, ja sen tukena on arkkitehtuuri, josta voit päätellä: vain tekstiä sisältävä paikallinen historia (josta kirjoitimme artikkelissa sanelusi ei pitäisi koskaan vain kadota), laitteella tapahtuva litterointi, ei koskaan tallennettua ääntä, puoli sekuntia rengasmuistia. Minä otan sen pisteen. Jos sinä et — se on täysin pätevä kanta, ja se voi aidosti tehdä jostain toisesta työkalusta oikean valinnan sinulle; sivumme Keebye vs Superwhisper ja Keebye vs Wispr Flow on kirjoitettu auttamaan juuri tuossa päätöksessä.
Kaksi rajaa, jottei kukaan yllättyisi
Istunnon aivan ensimmäisellä sanelulla on yhä normaali virran käynnistysviive. Lämmin mikrofoni on lämmin siksi, että nauhoitus on jo tapahtunut; ensimmäinen maksaa yhä asetuskustannuksen. Myöhemmät sanelut hyötyvät niin kauan kuin virta pysyy auki.
Esipuskuri on 500 millisekuntia, ja 500 millisekuntia on hetki, ei lause. Puskuri kattaa luonnollisen tapauksen — sanan, joka alkoi hieman ennen näppäinpainallusta. Jos lausut kokonaisen lauseen ja muistat sitten painaa näppäintä, aiemmat sanat ovat poissa, tarkoituksella: rengas pitää sisällään vain puoli sekuntia, juuri siksi ettei sovellus säilytä merkityksellistä ääntä joutilaana. Pidempi esipuskuri nappaisi enemmän hajamielisiä aloituksiasi ja pitäisi enemmän ympäristöääntäsi muistissa. Puoli sekuntia on se kohta, johon vedin rajan.
Miksi puolella sekunnilla on enemmän väliä kuin miltä kuulostaa
Katkennut ensimmäinen sana näyttää pieneltä bugilta. Siinä rinnakkaiskaistojen työnkulussa, jota varten Keebye rakennettiin — ääni useiden tekoälyagenttien ja useiden ihmiskeskustelujen ohjauskanavana yhtä aikaa, se työpäivä joka on kuvattu artikkelissa kaksi lasta, kolme startupia, yksi ääni — sanelua tapahtuu kymmeniä kertoja päivässä, ryöpsähdyksinä, kesken kontekstinvaihdon. Työkalu, joka vaatii rituaalitauon, verottaa jokaista ryöpsähdystä ja, mikä pahempaa, kääntää toisinaan merkityksesi ja lähettää sen. ”Mergeä sitä vielä” oli hauska täsmälleen kerran.
Luotettavuus tässä kategoriassa ei ole yksi iso ominaisuus. Se on pienempien suojausten kertymä: esipuskuri aloittavalle äänelle, historia litteroinnin takana ja palautuva syöttöpolku. Tämä artikkeli käsittelee ensimmäistä niistä; historia-artikkeli käsittelee toista.
Keebye on ennakkokäytössä macOS:lle. Aloita ilmainen kokeilu alta, sano ”Älä mergeä sitä vielä” toistosanelussa ja tarkista, selviääkö ensimmäinen sana. Siinä on koko testi.
Ala puhua ilman rituaalitaukoa
Aloita ilmainen kokeilu ja testaa toistosanelua, joka alkaa sanalla jota sinulla ei ole varaa menettää.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Jatka lukemista
Sanelusi ei pitäisi koskaan vain kadota
Sanelet pitkän ajatuksen, syöttö epäonnistuu ja teksti katoaa. Miksi sanelusovellukset hukkaavat sanasi ja mitä paikallista tekstihistoriaa Keebye säilyttää.
Sanelusovellus, joka toimii silloinkin kun internet ei toimi
Pilvisanelu kuolee verkon mukana. Keebye ajaa puheentunnistuksen laitteella — ilman internetiä, Macista lähtevää ääntä tai verkkohäiriöitä.
Sanele koodikatselmoinnit omalla kielelläsi
Koodi on englantia. Katselmointikommenttiesi ei tarvitse olla. Näin sanelet palautetta yhdellä 25 kielestä laitteella — ja miksi kielen kiinnitys ratkaisee.