Чому застосунки диктування з’їдають ваше перше слово

Натискаєте гарячу клавішу, говорите, а перше слово обрізано. Чому холодний старт ріже слова й як допомагають теплий мікрофон і 500 мс попереднього запису.

Teodor Deleanu10 липня 2026 р.Читання: 6 хв

Натисніть гарячу клавішу. Почніть говорити. Подивіться, як транскрипт починається з вашого другого слова — іноді з третього. «Відрефактор логіку повторних спроб» виходить як «логіку повторних спроб». «Не мерж це поки що» виходить як «мерж це поки що» — речення, яке справді небезпечно мати надрукованим від вашого імені. Цей збій легко відтворити на будь-яких конвеєрах мікрофона з холодним стартом — від вбудованих в ОС до спеціалізованих інструментів диктування.

Люди описують це по-різному — «воно зрізає початок», «мені доводиться робити паузу перед мовленням», «першого слова завжди немає», — але це одне явище, і щойно вас укусило, ви виробляєте той самий обхідний шлях, що й усі: натисни клавішу, зачекай мить, а тоді говори. Це означає, що тепер ви десятки разів на день виконуєте маленький забобонний ритуал, щоб компенсувати свій інструмент, — і це інструмент видресирував вас, а не навпаки.

Я виконував цей ритуал місяцями в інших інструментах. Коли будував Keebye, знищити його було одним із перших пунктів списку, бо виправлення, як виявилося, потребує незручного компромісу, на який більшість застосунків не піде, — і я хочу говорити про цей компроміс так само прямо, як про саме виправлення.

Чому перше слово обрізається?

Це проблема рівня категорії, а не чиясь неохайність, і фізика тут проста: мікрофони не миттєві.

Коли застосунок диктування починає запис наївним способом — натиснути гарячу клавішу, а тоді відкрити мікрофон, — перед захопленням першого семпла вашого мовлення має відпрацювати цілий ланцюг. Треба ініціалізувати аудіосесію ОС. Треба розбудити пристрій введення, а для частини заліза це означає буквальний час розігріву. Узгоджується формат потоку, виділяються буфери, а перші буфери, що надходять, часто є сміттям, яке відкидається. Залежно від машини й пристрою цей ланцюг триває десь між «однією миттю» й кількома секундами.

А тим часом ви — людина з уже сформованою думкою — починаєте говорити тієї ж миті, коли ваш палець торкається клавіші. Насправді зазвичай на волосину раніше: намір натиснути й намір заговорити виходять із вашого мозку разом, і початок мовлення регулярно випереджає готовність застосунку. Усе, що ви сказали до того, як потік ожив, для застосунку ніколи не існувало. Модель не може транскрибувати звук, який ніколи не було захоплено. Звідси й «логіку повторних спроб».

Чому застосунки вмикають мікрофон на вимогу, замість тримати його напоготові? Здебільшого через добропорядність. Тримати мікрофон відкритим коштує трохи енергії й — що набагато важливіше — вмикає системний індикатор мікрофона, який користувачі цілком зрозуміло читають як «цей застосунок мене слухає». Відкриття мікрофона лише на вимогу лишає індикатор чесним, а застосунок — ввічливим на вигляд. Ціна — ризик холодного старту на початку запису.

Виправлення: мікрофон, який уже слухає, коли ви натискаєте клавішу

Keebye атакує це з обох боків, і два механізми варто розділити, бо вони розв’язують дві різні половини проблеми.

Теплий мікрофон. Після вашого першого запису в сесії Keebye тримає потік аудіовходу відкритим. Це означає, що ланцюг холодного старту — ініціалізація сесії, пробудження пристрою, узгодження потоку — уже стався до наступного диктування, поки цей потік лишається справним. Потік живий іще до того, як ворухнеться ваш палець.

Випереджальний буфер. Теплий потік виправляє запізнення застосунку, але не ваше — пам’ятаєте, початок вашого мовлення може випередити натискання клавіші. Тож Keebye тримає рухомий буфер на 500 мілісекунд найсвіжішого аудіо (8000 семплів на 16 кГц, у кільці). Коли ви натискаєте гарячу клавішу, ця півсекунда звуку «щойно перед тим» додається на початок висловлювання. Звук, що почався всередині цього буфера, доступний транскрибувальнику замість того, щоб бути відкинутим до натискання клавіші.

Спільний результат: на повторних диктуваннях теплий потік і 500 мс випередження покривають поширений випадок, коли мовлення починається трохи раніше за натискання клавіші або разом із ним. Ритуальна пауза всередині цієї межі стає непотрібною. Це не поверне слово, сказане більш ніж за півсекунди до початку запису, а перше диктування в сесії все одно платить звичайну затримку старту потоку.

Компроміс, сказаний прямо

Ось частина, яку я відмовляюся ховати, бо це чесна ціна задуму: оскільки аудіопотік залишається відкритим між диктуваннями, macOS показує мікрофон як активний, навіть коли ви не диктуєте. Оранжева крапка горить. Якщо ви подивитеся в Пункт керування, Keebye буде в списку тих, хто зараз використовує мікрофон, — саме тоді, коли ви нічого не робите.

Що насправді відбувається в цей час: звук тече в кільцевий буфер на 500 мс і безперервно відкидається. Нічого не транскрибується. Нічого не зберігається. Ніщо не покидає буфер, доки ви не натиснете клавішу, — а все, старше за півсекунди, зникло назавжди, перезаписане кільцем. Але я не вдаватиму, що індикатор бреше, бо це не так: потік відкритий, і «здатний слухати завжди» — справедливий опис архітектури, навіть якщо ніщо не слухає в жодному змістовному сенсі, доки ви не попросите.

Я пішов на цей компроміс свідомо, з розплющеними очима, і ось міркування. Відкриття мікрофона на вимогу щоразу вносить ризик холодного старту: обрізані слова, неправильні речення, видресирувана пауза. Задум із теплим потоком має ціну, яка лягає на вашу згоду з оранжевою крапкою, і спирається на архітектуру, про яку ви можете міркувати: лише текстова локальна історія (про яку ми написали в ваше диктування не має просто зникати), транскрипція на пристрої, звук ніколи не зберігається, півсекунди кільцевої пам’яті. Я на цю крапку згоден. Якщо ви — ні, це цілком законна позиція, і вона справді може зробити правильним вибором для вас інший інструмент; наші сторінки Keebye vs Superwhisper і Keebye vs Wispr Flow написані, щоб допомогти саме з таким рішенням.

Дві межі, щоб ніхто не здивувався

Найперше диктування в сесії все одно має звичайну затримку старту потоку. Мікрофон теплий, бо запис уже відбувся; перший усе одно платить за налаштування. Наступні диктування виграють, доки потік лишається відкритим.

Випередження — це 500 мілісекунд, а 500 мілісекунд — це мить, а не речення. Буфер покриває природний випадок: слово, розпочате трохи раніше за натискання клавіші. Якщо ви вимовите ціле речення, а тоді згадаєте натиснути клавішу, попередні слова зникли — за задумом: кільце ніколи не тримає більше за півсекунди, саме для того, щоб застосунок не утримував змістовне аудіо в бездіяльності. Довше випередження ловило б більше ваших неуважних початків і тримало б у пам’яті більше вашого фонового звуку. Півсекунди — це там, де я провів цю межу.

Чому півсекунди важать більше, ніж здається

Обрізане перше слово має вигляд дрібної вади. У робочому процесі з паралельними доріжками, задля якого будувався Keebye, — голос як канал керування для кількох ШІ-агентів і кількох людських розмов одночасно, робочий день, описаний у двоє дітей, три стартапи, один голос, — диктування трапляється десятки разів на день, серіями, посеред перемикання контексту. Інструмент, що вимагає ритуальної паузи, оподатковує кожну серію, а гірше — час від часу перевертає ваш зміст і відправляє його. «Мерж це поки що» було смішно рівно один раз.

Надійність у цій категорії — не одна велика функція. Це накопичення менших запобіжників: випереджальний буфер для початкового звуку, історія позаду транскрипта й відновлюваний шлях вставлення. Цей допис про перший із них; допис про історію покриває другий.

Keebye перебуває в ранньому доступі для macOS. Почніть безкоштовний пробний період нижче, скажіть «Не мерж це поки що» на повторному диктуванні й перевірте, чи вціліє перше слово. У цьому вся перевірка.

Починайте говорити без ритуальної паузи

Почніть безкоштовний пробний період і перевірте повторне диктування, що починається зі слова, яке ви не можете дозволити собі втратити.

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.

Читати далі