Автоматичното разпознаване все греши: закачете езика си

Диктовката все каца на грешния език? Автоматичното разпознаване се мята при двуезична реч по конструкция. Закачете езика си веднъж и той си остава закачен.

Teodor Deleanu10 юли 2026 г.7 мин четене

Ако диктувате на повече от един език, виждали сте този провал. Казвате изречение на румънски, а транскрипцията се връща като фонетично осакатен английски — истински думи, никоя от тях ваша. Или се обръща насред изречението: първата половина на правилния език, втората на нещо, на което моделът е решил, че сте превключили. Или, моят личен фаворит, супа от смесени азбуки — латински букви с няколко кирилски, поръсени отгоре, сякаш моделът е застраховал залозите си буква по буква.

Това не е оплакване от един продукт. Това е предвидим начин на провал на автоматичното разпознаване на език, включително в настроеното за английски подразбиране на Keebye. Удря говорещите английски с акцент и всеки, който превключва между езици през деня. Двуезичен разработчик, чийто Slack е на полски, а съобщенията към комитите — на английски, дава на автоматичното разпознаване точно смесените сигнали, с които то се справя най-зле.

Втората половина на оплакването е по-тиха, но също толкова истинска: когато настройка за език наистина съществува, тя често е заровена. Три менюта надолу, зад избор на енджин, отвъд превключвател, в чието име изобщо не се споменава език. Ако сменяте езика двайсет пъти на ден, заровената настройка на практика не е настройка.

Искам да обясня защо се получава това мятане — с военната история на моя собствен продукт, защото Keebye имаше този проблем, преди да има решението — и после да покажа как изглежда истинско решение.

Защо автоматичното разпознаване се мята (и защо не е точно бъг)

Ето честната механика. Съвременните модели за реч правят разпознаване на език мълчаливо, като част от декодирането. Моделът слуша, формира вътрешно предположение какъв език чува и декодира срещу това предположение. Когато звукът е чист, без акцент и на един език, това работи толкова добре, че никога не се замисляте.

А сега му подайте истинска реч. Акцентът измества гласните към фонемите на друг език. Изречението съдържа три английски заемки — всеки технически разговор съдържа. Отзад има дете или сте на микрофона на лаптопа. Всяко от тези неща прави вътрешното предположение на модела за езика по-несигурно, а несигурното предположение може да се обръща между кадрите. Когато то се обърне, декодирането се обръща с него и получавате транскрипция, която сменя езика насред мисълта.

Ключовото: в повечето инструменти нищо не закотвя това предположение. Моделът решава, мълчаливо, за всяко изказване, а вие нямате как да го отмените. Това не е бъг в конкретно приложение — това е мълчаливото автоматично разпознаване. Модел, който взема решение, а вие не можете да го поправите.

Знам го отблизо, защото енджинът по подразбиране на Keebye има точно това свойство. Parakeet, нашето настроено за английски подразбиране, игнорира всяка езикова подсказка на слоя на декодирането — не можете да му кажете какво се каните да говорите. На ясен английски е отличен, затова е по подразбиране. При неясен звук може да се мята между езици като всичко останало в категорията. Казвам ви това първо за собствения си продукт, защото решението има смисъл едва след като приемете, че проблемът живее в архитектурата, а не в нечия чужда небрежност.

Какво всъщност прави закачането на език?

Решението е да спрете да карате модела да гадае. Keebye идва с втори енджин на устройството — Canary 1B v2 на NVIDIA, квантуван до int8 — който покрива точно 25 езика: български, хърватски, чешки, датски, нидерландски, английски, естонски, фински, френски, немски, гръцки, унгарски, италиански, латвийски, литовски, малтийски, полски, португалски, румънски, словашки, словенски, испански, шведски, руски и украински. За разлика от енджина по подразбиране, Canary приема езикова инструкция и я спазва.

Keebye излага това като закачане: изрична настройка за език, подавана към енджина Canary за всяко изказване. Закачете румънски и декодерът използва румънски, вместо да прави автоматичен избор на език. Разпознаването пак може да сгреши, особено около заемки и шумен звук, но изборът на език вече не е непроверено предположение.

Настройката се чете на живо, за всяка диктовка. Смените ли я, следващото задържане за диктовка използва новия език, без рестарт на приложението. Това има по-голямо значение, отколкото звучи: контролът върху езика е далеч по-полезен, когато превключването му не прекъсва работата.

И тъй като Canary върви на устройството като всичко останало в Keebye, закачането не ви струва историята с поверителността. Моделът е около 1,3 ГБ, изтеглен веднъж; след това вашият румънски, вашият полски, вашият украински никога не напускат машината. (Защо изобщо смятаме, че локалната многоезична диктовка има значение, е отделна статия — Защо диктовката за разработчици не бива да е само на английски. Тази е практичното ѝ продължение: онази защитава езиците, тази е за това да станат наистина използваеми.)

Две кликвания, а не три менюта надолу

Закачане, до което не можете да стигнете, е закачане, което няма да ползвате, затова превключването живее в лентата с менюта. Иконата на Keebye има меню „Dictation Language“ с подбран кратък списък от 11 езика — английски, румънски, френски, немски, испански, италиански, португалски, нидерландски, полски, руски, украински. Две кликвания от всяко приложение: кликвате иконата, кликвате езика. Не отваряте Settings, не напускате прозореца, в който сте работили.

Пълният списък от 25 езика живее в Settings за езиците извън краткия списък. Но краткият списък покрива ежедневната реалност на повечето двуезична работа: пишете на екипа си на един език, а на клиент или на AI агент — на друг, и превключването трябва да не струва нищо.

Има и още една възможност, за която си струва да знаете, защото за някои хора тя променя изцяло начина, по който ползват закачането: превключвател за превод на английски. Говорите на своя език, а на курсора каца английски — същият енджин, същото изпълнение на устройството. Ако вътрешният ви монолог върви на румънски, но изходът ви трябва да е на английски (съобщения към комити, промпти към агент за код, отговори до международен екип), това свива стъпката с превода, която сте правили наум. Ползвам го повече, отколкото очаквах.

Какво ви струва закачането

25 езика са 25 езика. Облачните инструменти за диктовка изброяват далеч повече, защото изпращането на звук към голям сървърен модел е евтиният начин да се добавят езици. Това е истинският компромис на обработката на устройството: модел, който се събира на вашия Mac, покрива по-малка част от света от модел, който пълни център за данни. Ако вашият език не е в списъка от 25, многоезичният енджин на Keebye не ви покрива днес и предпочитам да го кажа, вместо да закръглям.

Закачане значи закачане. Това е обратната страна на детерминизма и искам да съм пределно ясен: ако закачите румънски и после говорите на английски, Keebye вярно ще декодира английския ви погрешно като румънски, докато не превключите. Енджинът прави точно каквото сте му казали. Цялата привлекателност на автоматичното разпознаване беше, че никога няма да мислите за това — закачането разменя това удобство за предвидимост. По моя опит размяната си струва, защото грешно предположение, което не можете да контролирате, е по-лошо от грешна настройка, която можете да поправите с две кликвания. Но това е размяна, а не безплатен обяд.

Краткият списък в лентата е 11 езика, а не 25. Ако ежедневната ви двойка включва, да речем, фински или гръцки, за едната ѝ страна минавате през Settings. Подбирането значи, че нечий език не е влязъл в бързото меню.

Къде остава оплакването

Оплакването на ниво категория — „диктовката ми все излиза на грешен език“ — всъщност е оплакване от мълчаливи решения. Моделът е предположил, предположението е било грешно и не е имало начин да му се каже друго. Всяко решение, което запазва гадаенето (по-добро разпознаване, по-дълги звукови прозорци, прагове на увереност), просто прави провала по-рядък и по-странен. Решението, което наистина слага край на оплакването, е да върнеш решението на потребителя.

Ако точно сега живеете това с друг инструмент, страниците ни за сравнение са честни за това къде пасва всеки инструмент — Keebye срещу Superwhisper и Keebye срещу Wispr Flow покриват и езиковия въпрос сред другите. За да пробвате самото закачане, започнете безплатния си пробен период по-долу, повторете румънското или полското изречение от началото на тази статия и вижте каква част от мятането е идвала от непроверено предположение, а не от акцента ви.

Закачете езика, който наистина ползвате

Започнете безплатния си пробен период и повторете един отговор на родния си език, който автоматичното разпознаване преди това е осакатило.

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.

Продължете да четете