Automatinis aptikimas vis spėja ne taip: prisek savo kalbą

Diktavimas vis nusileidžia ne ta kalba? Automatinis aptikimas dvikalbėje šnekoje blaškosi iš prigimties. Prisek kalbą vieną kartą, ir ji liks prisegta.

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

Jei diktuoji daugiau nei viena kalba, šį gedimą esi matęs. Pasakai sakinį rumuniškai, o transkripcija grįžta kaip fonetiškai sujaukta anglų kalba — tikri žodžiai, tik nė vienas ne tavo. Arba ji apsiverčia sakinio viduryje: pirma pusė ta kalba, kuria reikia, antra — ta, į kurią, modelio nuomone, persijungei. Arba, mano asmeninis favoritas, mišrių abėcėlių sriuba — lotyniški rašmenys su keliais kirilikos raidėmis, tarsi modelis būtų draudęsis raidė po raidės.

Tai ne skundas dėl vieno produkto. Tai nuspėjamas automatinio kalbos aptikimo gedimo būdas, įskaitant anglų kalbai derintą Keebye numatytąjį variklį. Jis paliečia kalbančius angliškai su akcentu ir visus, kurie per dieną persijungia tarp kalbų. Dvikalbis kūrėjas, kurio Slack lenkiškas, o commit žinutės angliškos, automatiniam aptikimui duoda būtent tuos mišrius signalus, su kuriais jis tvarkosi prasčiausiai.

Antroji skundo pusė tylesnė, bet tokia pat tikra: kai kalbos nustatymas vis dėlto egzistuoja, jis dažnai užkastas. Trys meniu gilyn, už variklio parinkiklio, už jungiklio, kurio pavadinime kalba net neminima. Jei kalbas persijungi dvidešimt kartų per dieną, užkastas nustatymas funkciškai yra jokio nustatymo.

Noriu paaiškinti, kodėl tas blaškymasis vyksta — pasitelkdamas savo paties produkto karo istoriją, nes Keebye šią problemą turėjo anksčiau, nei turėjo sprendimą — o tada parodyti, kaip atrodo tikras sprendimas.

Kodėl automatinis aptikimas blaškosi (ir kodėl tai ne visai klaida)

Štai sąžininga mechanika. Šiuolaikiniai kalbos modeliai kalbos identifikavimą atlieka tyliai, kaip dekodavimo dalį. Modelis klauso, susikuria vidinį spėjimą, kokią kalbą girdi, ir dekoduoja pagal tą spėjimą. Kai garsas švarus, be akcento ir vienakalbis, tai veikia taip gerai, kad apie tai net negalvoji.

Dabar duok jam tikrą šneką. Akcentas pastumia balses kitos kalbos fonemų link. Sakinyje yra trys angliški skoliniai — kaip ir kiekviename techniniame pokalbyje. Fone yra vaikas, arba kalbi į nešiojamojo kompiuterio mikrofoną. Kiekvienas iš šių dalykų mažina modelio vidinio kalbos spėjimo pasitikėjimą, o mažo pasitikėjimo spėjimas gali apsiversti tarp kadrų. Kai jis apsiverčia, kartu apsiverčia ir dekodavimas, ir gauni transkripciją, kuri keičia kalbą minties viduryje.

Esminė dalis: daugumoje įrankių to spėjimo niekas neinkaruoja. Modelis nusprendžia tyliai, kiekvienam pasakymui atskirai, o tu neturi jokio būdo jo perrašyti. Tai ne kokios nors vienos programos klaida — tai ir yra tylus automatinis aptikimas. Modelis priima vertinimo sprendimą, kurio negali pataisyti.

Tai žinau labai artimai, nes numatytasis Keebye variklis turi būtent šią savybę. Parakeet, mūsų anglų kalbai derintas numatytasis modelis, dekodavimo sluoksnyje ignoruoja bet kokią kalbos užuominą — negali jam pasakyti, ką ketini ištarti. Su aiškia anglų kalba jis puikus, todėl ir yra numatytasis. Su neaiškiu garsu jis gali blaškytis tarp kalbų kaip ir visa kita šioje kategorijoje. Pirmiausia tai sakau apie savo paties produktą, nes sprendimas įgyja prasmę tik tada, kai priimi, kad problema gyvena architektūroje, o ne kokio nors konkurento aplaidume.

Ką kalbos prisegimas iš tikrųjų daro?

Sprendimas yra nustoti prašyti modelio spėti. Keebye pateikia antrą įrenginyje veikiantį variklį — NVIDIA Canary 1B v2, kvantuotą iki int8 — apimantį lygiai 25 kalbas: bulgarų, kroatų, čekų, danų, olandų, anglų, estų, suomių, prancūzų, vokiečių, graikų, vengrų, italų, latvių, lietuvių, maltiečių, lenkų, portugalų, rumunų, slovakų, slovėnų, ispanų, švedų, rusų ir ukrainiečių. Skirtingai nei numatytasis variklis, Canary priima kalbos nurodymą ir jo laikosi.

Keebye tai pateikia kaip prisegimą: aiškų kalbos nustatymą, perduodamą Canary varikliui kiekvienam pasakymui. Prisek rumunų, ir dekoderis naudos rumunų, užuot pats rinkęsis kalbą. Atpažinimas vis tiek gali klysti, ypač ties skoliniais ir triukšmingu garsu, bet kalbos pasirinkimas nebėra nepatikrintas spėjimas.

Nustatymas skaitomas gyvai, kiekvienam diktavimui. Pakeisk jį, ir kitas „laikyk ir kalbėk“ naudos naują kalbą be programos paleidimo iš naujo. Tai svarbiau, nei skamba: kalbos valdiklis kur kas naudingesnis, kai jo perjungimas nenutraukia darbo.

O kadangi Canary, kaip ir viskas kita Keebye, veikia įrenginyje, prisegimas nekainuoja privatumo. Modelis maždaug 1,3 GB, atsisiunčiamas vieną kartą; po to tavo rumunų, tavo lenkų, tavo ukrainiečių kalba niekada nepalieka mašinos. (Kodėl mums apskritai svarbus lokalus daugiakalbis diktavimas, yra atskiras straipsnis — diktavimas kūrėjams neturėtų būti tik angliškas. Šis yra jo praktinis tęsinys: tas straipsnis pasisako už kalbas, o šis — apie tai, kaip padaryti jas iš tikrųjų naudojamas.)

Du paspaudimai, o ne trys meniu gilyn

Prisegimas, kurio nepasieki, yra prisegimas, kurio nenaudosi, tad perjungiklis gyvena meniu juostoje. Keebye meniu juostos piktograma turi „Dictation Language“ meniu su kuruotu 11 kalbų trumpuoju sąrašu — anglų, rumunų, prancūzų, vokiečių, ispanų, italų, portugalų, olandų, lenkų, rusų, ukrainiečių. Du paspaudimai iš bet kurios programos: spustelėk meniu juostą, spustelėk kalbą. Neatveri Nustatymų, nepalieki lango, kuriame dirbai.

Visas 25 kalbų sąrašas gyvena Nustatymuose toms kalboms, kurių trumpajame sąraše nėra. Bet trumpasis sąrašas padengia kasdienę daugumos dvikalbio darbo realybę: savo komandai rašai viena kalba, o klientui ar AI agentui — kita, ir tau reikia, kad persijungimas nekainuotų nieko.

Verta žinoti dar vieną parinktį, nes kai kuriems ji visiškai pakeičia prisegimo naudojimą: vertimo į anglų kalbą jungiklis. Kalbi savo kalba, o ties žymekliu nusileidžia anglų — tas pats variklis, tas pats veikimas įrenginyje. Jei tavo vidinis monologas eina rumuniškai, o išvestis turi būti angliška (commit žinutės, promptai kodavimo agentui, atsakymai tarptautinei komandai), tai sutraukia vertimo žingsnį, kurį darydavai galvoje. Naudoju jį dažniau, nei tikėjausi.

Ko prisegimas kainuoja

25 kalbos yra 25 kalbos. Debesies diktavimo įrankiai išvardija kur kas daugiau, nes garso siuntimas dideliam serverio modeliui yra pigus būdas pridėti kalbų. Toks ir yra tikrasis įrenginyje veikiančio sprendimo kompromisas: modelis, telpantis tavo Mac kompiuteryje, padengia mažiau pasaulio nei modelis, užpildantis duomenų centrą. Jei tavo kalbos tarp tų 25 nėra, daugiakalbis Keebye variklis tavęs šiandien nepadengia, ir verčiau tai pasakysiu, nei apvalinsiu į viršų.

Prisegimas reiškia prisegimą. Tai kita determinizmo pusė, ir noriu apie ją pasakyti tiesiai: jei prisegsi rumunų, o tada kalbėsi angliškai, Keebye ištikimai dekoduos tavo anglų kalbą kaip rumunų, kol nepersijungsi. Variklis daro būtent tai, ką jam liepei. Visas automatinio aptikimo patrauklumas buvo tas, kad apie tai niekada negalvotum — prisegimas iškeičia tą patogumą į nuspėjamumą. Mano patirtimi, mainai verti, nes klaidingas spėjimas, kurio negali valdyti, yra blogiau nei klaidingas nustatymas, kurį gali pataisyti dviem paspaudimais. Bet tai mainai, o ne dovana.

Meniu juostos trumpasis sąrašas yra 11 kalbų, ne 25. Jei tavo kasdienėje poroje yra, tarkime, suomių ar graikų, dėl vienos pusės teks eiti į Nustatymus. Kuravimas reiškia, kad kažkieno kalba į greitąjį meniu nepateko.

Kur tai palieka skundą

Kategorijos lygio skundas — „mano diktavimas vis išeina ne ta kalba“ — iš tikrųjų yra skundas dėl tylių sprendimų. Modelis atspėjo, spėjimas buvo klaidingas, ir nebuvo kaip pasakyti kitaip. Kiekvienas sprendimas, kuris palieka spėjimą (geresnis aptikimas, ilgesni garso langai, pasitikėjimo slenksčiai), tik padaro gedimą retesnį ir keistesnį. Sprendimas, kuris skundą iš tikrųjų baigia, yra grąžinti sprendimą naudotojui.

Jei šiuo metu tai išgyveni su kitu įrankiu, mūsų palyginimų puslapiai sąžiningai nurodo, kur kuris įrankis tinka — Keebye vs Superwhisper ir Keebye vs Wispr Flow abu, be kitų dalykų, aptaria kalbos klausimą. O kad išbandytum patį prisegimą, pradėk nemokamą bandomąjį laikotarpį žemiau, pakartok tą rumunišką ar lenkišką sakinį iš šio straipsnio pradžios ir pažiūrėk, kiek to blaškymosi kilo iš nepatikrinto spėjimo, o ne iš tavo akcento.

Prisek tą kalbą, kuria iš tikrųjų kalbi

Pradėk nemokamą bandomąjį laikotarpį ir pakartok vieną atsakymą gimtąja kalba, kurį automatinis aptikimas anksčiau sujaukė.

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