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ää.

Teodor Deleanu10. heinäkuuta 20266 min lukuaika

Yhdeksänkymmentä sekuntia täsmälleen niin kuin tarkoitin — kokonainen PR-kuvaus, huolellinen vastaus asiakkaalle — ja sitten jokin pieni menee vikaan juuri syöttöhetkellä. Kohdeikkuna ei ollutkaan fokusoitu. Liittäminen ei mennyt läpi. Sovellus nikotteli. Ja teksti on vain poissa. Ei tallennettuna jonnekin. Ei odottamassa puskurissa. Poissa. Jokaisella saneluputkella, joka kohtelee syöttöä litteroinnin ainoana kopiona, on tämä vikatila.

Seuraava tunne on erityinen, suhteeton viha, ja mielestäni se on oikeutettu. Menetetyissä sekunneissa ei ole pointti. Pointti on siinä, että teit työn — muotoilit ajatuksen, sanoit sen hyvin, kone jopa litteroi sen oikein — ja työkalu tuhosi tuloksen toimitusongelman takia. Toinen otto ei ole koskaan yhtä hyvä kuin ensimmäinen. Kuka tahansa, joka on sanellut kappaleen uudelleen muistista, tietää ettet toista sitä; tuotat siitä latteamman serkun.

Olen itsekin menettänyt saneluja näin, muissa työkaluissa, ennen kuin Keebyeä oli olemassa. Se on yksi niistä pienistä hätätilanteista, joiden ympärille sovellus rakennettiin.

Miksi saneltu teksti vain katoaa?

Tämä ei ole yhden toimittajan bugi. Se on kategorian tason suunnitteluratkaisu, ja kannattaa ymmärtää miksi kategoria teki sen.

Sanelusovellus on putki, ei editori. Puhe menee sisään toisesta päästä; teksti tulee ulos toisesta, jonkun toisen ikkunaan — terminaaliin, Slack-kenttään, Google-dokumenttiin. Sillä ei ole omaa dokumenttia, ja juuri se tekee näistä työkaluista näkymättömiä ja nopeita. Mutta se tarkoittaa, että litterointi on usein olemassa täsmälleen yhden hetken: syötön. Ja syöttö on koko putken haurain vaihe. Se riippuu siitä, millä ikkunalla on fokus toimitushetken millisekunnilla, siitä ettei toinen sovellus kilpaile leikepöydästä, siitä että käyttöapuoikeudet ovat oikealla tuulella ja siitä, hyväksyykö kohdesovellus ylipäätään synteettistä syötettä. Kun mikä tahansa noista pettää, puhtaalla putkella ei ole mitään takanaan. Vesi on lattialla.

On myös periaatteellinen syy, miksi työkalut ovat kaihtaneet kopioiden säilyttämistä: loki kaikesta mitä olet sanellut on arkaluontoinen. Sanelusi ovat viestejäsi, promptejasi, puolivalmiita päätöksiäsi. Toimittaja, joka tallentaa niitä — erityisesti minnekään pilven lähelle — on luonut vastuuriskin, ja helppo tapa välttää vastuuriski on olla säilyttämättä mitään. Käyttäjät perivät tuon varovaisuuden katoavaisuutena: turvallisin sanelu on toimittajan näkökulmasta se, jota ei koskaan ollut olemassa.

Ymmärrän logiikan. Minusta se vain optimoi väärän osapuolen hyväksi. Paikallisen historian säilyttämisen vikatila on tiedosto omalla levylläsi. Ei-mitään-säilyttämisen vikatila on työsi haihtuminen siksi, että ikkuna menetti fokuksen.

Mitä Keebye säilyttää ja missä

Niinpä Keebye pitää historiaa, oletuksena päällä, ja tässä on täsmälleen mitä se tarkoittaa — ei enempää, ei vähempää.

Kun historia on käytössä, jokainen valmistunut sanelu kirjoitetaan paikalliseen SQLite-tietokantaan Macissasi (rusqlite, WAL-tila, niille joita putkisto kiinnostaa). Tiedosto asuu app-support-hakemistossa — com.keebye.app/keebye.db — eikä se koskaan poistu koneelta. Synkronointia ei ole, latausta ei ole, eikä tiliä johon se olisi kytketty. Se on tiedosto, sinun levylläsi, sinun omistamanasi.

Palautus on suunniteltu niiden kahden tavan ympärille, joilla oikeasti menetät tekstiä. Tavallisimmalla tapauksella — syöttö epäonnistui juuri äsken, sekunti sitten — on nopein reitti: valikkopalkin valikossa on kohta Copy Last Dictation. Klikkaa sitä, ja viimeisin sanelusi on leikepöydällä; liitä se sinne minne sen piti mennä ja jatka matkaa. Harvinaisempi tapaus — ”sanelin jotain tiistaina ja tarvitsen sen takaisin” — kulkee Dictation History… -kohdan kautta: ikkuna jossa on koko lista, haettavana, merkintäkohtaisella poistolla ja tyhjennä kaikki -toiminnolla silloin kun haluat pyyhkiä pöydän puhtaaksi.

Säilytysaika on 30 päivää, automaattisesti valvottuna. Karsinta ajetaan kun tietokanta avataan ja uudestaan jokaisen syötön jälkeen, joten ikkuna on aidosti 30 päivää eikä ”30 päivää suunnilleen, kun ehdimme”. Ja jos haluat vanhan katoavaisen käyttäytymisen — joidenkin pitäisikin, ja palaan siihen keitä he ovat — historia on asetus (history_enabled), ja sen kytkeminen pois tarkoittaa ettei mitään kirjoiteta ylös lainkaan.

Vain tekstiä. Ei koskaan ääntä.

Se osa, josta välitän eniten, on se mitä historia ei ole. Se on vain tekstiä. Keebyen historiaskeemassa ei ole äänisaraketta — ei äänen säilytysasetusta oletuksena pois päältä, vaan ei saraketta lainkaan. Nauhoituksia itsessään ei koskaan tallenneta. Se on rakenteellista, tarkoituksella: litterointi ”vastaa Andreille että migraatio venyy viikolla” on jo tarpeeksi arkaluontoinen; äänesi puhumassa sitä, aikaleimattuna, on eri luokan artefakti, enkä halunnut sovelluksen edes kykenevän kerryttämään sitä.

Vielä yksi vivahde, jolla on enemmän merkitystä kuin sanamäärällään: jos sanelet suojattuun kenttään — salasanatyyliseen syötteeseen — historia ei kirjaa sitä. Se yksi paikka, jossa tekstijälkikin on väärin, on se yksi paikka jossa emme sellaista pidä.

Tämä on sama asenne kuin muuallakin sovelluksessa — puheentunnistus toimii laitteella, mistä olemme kirjoittaneet omalla kielellä sanelemisen yhteydessä — mutta historia on se kohta, jossa asenne joutuu koetukselle, koska historia on ainoa paikka jossa Keebye ylipäätään säilyttää sanojasi. Paikallinen, vain tekstiä sisältävä, itsensä poistava tuntui siltä muodolta, joka ansaitsee oletuksena päällä olemisen.

Rehelliset rajat

Rehellisyysosio, kuten aina.

Et voi kuunnella uudelleen. Vain teksti leikkaa molempiin suuntiin. Jos litterointi meni väärin — malli kuuli nimen väärin, runteli numeron — historia säilyttää uskollisesti väärän tekstin, ja ääni joka voisi ratkaista kiistan on tarkoituksella poissa. Useimmissa palautustapauksissa sillä ei ole väliä; vika oli syötössä, ei litteroinnissa. Mutta jos halusit saneluhistorian ääniviestiarkistoksi, tämä ei ole sitä, tarkoituksella.

Kolmekymmentä päivää on kolmekymmentä päivää. Historia on turvaverkko, ei arkisto. Jos sanelulla on merkitystä kuukautta pidempään, sen koti on se dokumentti johon sen sanelit, ei sovelluksen tietokanta. Karsinta ei kysy.

Vain paikallinen tarkoittaa vain paikallista. Historiasi ei seuraa sinua koneelta toiselle. Pöytäkoneella tekemääsi sanelua ei voi palauttaa kannettavalta. Esitän tämän yksityisyysominaisuutena, ja sitä se on — mikään ei synkronoidu koska mitään ei siirretä — mutta en teeskentele ettei se olisi myös rajoitus. Se on molempia. Sinun kannattaa tietää kumpi se sinulle on, ennen kuin nojaat siihen.

Ja rajatapaus: jos olet se ihminen, jonka uhkamalli sanoo ei jälkeä lainkaan, kytke historia pois. Se on yksi asetus, ja sovellus kunnioittaa sitä täysin. Oletuksena päällä on oikea ratkaisu useimmille käyttäjille, jotka mieluummin saavat viime tiistain kappaleen takaisin; sen ei pitäisi olla ansa lopuille.

Työllä ei pitäisi olla yhtä vikaantumispistettä

Syvempi syy tämän ominaisuuden olemassaoloon: ajan päiväni rinnakkaisina kaistoina — agentteja rakentamassa joissain ikkunoissa, ihmisiä odottamassa toisissa — ja ääni on kanava, joka syöttää niitä kaikkia. Tuo työnkulku on koko lähtökohta artikkelissa Claude Coden ohjaaminen äänellä. Kanava, joka toisinaan tuhoaa oman lastinsa, ei ole kanava jonka varaan rakennat työpäivän. Kehittäjät odottavat palautusreittejä — kumoa, lokit, reflogit, roskakori — silti moni saneluvirta ei tarjoa mitään vastaavaa, kun syöttö epäonnistuu.

Jos punnitset tämän kategorian työkaluja, vertailumme ovat rehellisiä myös siitä missä muut loistavat: Keebye vs Superwhisper ja Keebye vs Wispr Flow. Ja katoavalla tekstillä on sisarvalitus — sanelusi ensimmäisen sanan syöminen ennen kuin mikrofoni herää — josta kirjoitimme artikkelin miksi sanelusovellukset syövät ensimmäisen sanasi.

Keebye on ennakkokäytössä macOS:lle. Aloita ilmainen kokeilu alta, sanele kappale, ohita kohdeikkuna tarkoituksella ja palauta teksti sitten Copy Last Dictation -toiminnolla. Väärä fokus maksaa yhä yhden palautusaskeleen; sen ei enää tarvitse maksaa ajatusta.

Tee seuraavasta pitkästä sanelusta palautettava

Aloita ilmainen kokeilu ja testaa Copy Last Dictation ennen kuin uskot pitkän PR-kuvauksen äänen varaan.

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.

Jatka lukemista