<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Блог VerbaIDE: диктовка и перевод на Mac</title>
    <link>https://verbaide.com/ru/blog/</link>
    <description>Заметки команды VerbaIDE: что сделали, что замерили, что убрали и почему.</description>
    <language>ru-ru</language>
    <lastBuildDate>Tue, 13 Oct 2026 12:00:00 GMT</lastBuildDate>
    <atom:link href="https://verbaide.com/ru/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Smart Keyboard: как он решает, менять ли слово</title>
      <link>https://verbaide.com/ru/blog/smart-keyboard/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/smart-keyboard/</guid>
      <pubDate>Tue, 13 Oct 2026 12:00:00 GMT</pubDate>
      <description>Smart Keyboard исправляет чужую раскладку и простые опечатки прямо на Mac. Как он решает, как мы это мерили и что выключили, потому что вредило.</description>
      <content:encoded><![CDATA[<p>Пишете фразу, поднимаете глаза — а там «ghbdtn» вместо «привет». Раскладка осталась английской. Стираете, переключаете, набираете заново. Кто пишет на двух-трёх языках, делает это много раз за день. Теперь это может делать VerbaIDE. Функция называется Smart Keyboard.</p>
<h2 id="что-он-делает">Что он делает</h2>
<p>Когда слово закончилось — пробелом, запятой, точкой, — Smart Keyboard на него смотрит. Если оно набрано не в той раскладке, слово заменяется, а раскладка системы переключается, чтобы следующее вышло правильным. «ghbdtn» становится «привет», «руддщ» — «hello», украинское «тыльки», набранное на русской раскладке, — «тільки». Ещё он исправляет простые опечатки в правильной раскладке: «првиет» становится «привет», «квказ» — «Кавказ». И то и другое сразу: «ghdbtn» — «привет».</p>
<p>Исправил зря — нажмите ⇧ дважды. Вернутся и слово, и раскладка, а это слово больше никогда не будет исправлено. Ещё раз ⇧ дважды — исправление снова на месте.</p>
<h2 id="правило-с-которого-начали">Правило, с которого начали</h2>
<p>Пропущенное исправление стоит вам одного повторного набора. Ложное — дороже: его надо заметить, а иногда замечаешь, когда сообщение уже ушло. Поэтому до первой строчки кода мы поставили предел: не больше одной ложной замены на 10 000 правильно набранных слов. Всё, что ниже, мерилось по нему.</p>
<h2 id="как-он-решает">Как он решает</h2>
<p>Всё происходит на вашем Mac. Smart Keyboard смотрит на три вещи.</p>
<p><strong>Проверка орфографии macOS</strong> — тот же словарь, что подчёркивает слова красным. Она отвечает на вопрос «есть ли такое слово». Своих словарей мы в приложение не кладём.</p>
<p><strong>Таблицы сочетаний из трёх букв.</strong> Для каждого языка мы посчитали, какие тройки букв встречаются в начале, в середине и в конце слова и как часто. «ghb» в начале английского слова почти не бывает, а «при» в начале русского — на каждом шагу. Считали по общедоступным фразам проекта Common Voice. В приложении лежат только таблицы, 22–43 КБ на язык, самих фраз там нет.</p>
<p><strong>Списки частых слов</strong> — по тем же фразам: 300 самых частых коротких слов каждого языка и длинный частотный список, чтобы выбирать между вариантами исправления опечатки.</p>
<p>Коротким словам понадобилось своё правило. Проверка орфографии считает словом почти любую букву и многие пары вроде «cd» или «bc», поэтому для одной-двух букв мы верим только спискам частых слов. Одиночную латинскую букву на английской раскладке Smart Keyboard сам по себе не трогает никогда: на проверке это превращало «E», «C», «J» и «R» в кириллицу от 52 до 65 раз на 10 000 слов. Такая буква исправляется только вместе с соседним словом.</p>
<p>С русским и украинским отдельная история. Их раскладки различаются всего несколькими клавишами: «ы» и «і», «э» и «є», «ъ» и «ї». Решают словари, но у русского словаря macOS есть дыры: он может не знать «продавцы», а украинский при этом знает «продавці». Поэтому ответа словаря мало — с ним должны согласиться и таблицы букв. Слова, которые есть в обоих языках, вроде «ты» и «ті», решают соседи, и нужно два таких слова. С одним на смешанном украинско-русском тексте выходило 15 ложных замен на 10 000 слов.</p>
<p>Для опечатки варианты — подсказки проверки орфографии и слова, отличающиеся от набранного одним промахом: одна буква не та, пропущена или лишняя, либо две буквы стоят местами. Свои варианты идут в счёт, только если они есть в частотном списке. Побеждает самый частый — и только если он похож на язык больше, чем то, что вы набрали.</p>
<h2 id="как-мы-мерили">Как мы мерили</h2>
<p>Часть фраз Common Voice мы отложили и ничего по ним не строили: 111 373 правильно набранных слова на английском, русском и украинском, плюс те же слова в чужой раскладке. Проверка набирает их клавиша за клавишей и спрашивает настоящую проверку орфографии macOS.</p>
<ul>
<li><strong>Чужая раскладка.</strong> Из слов в пять букв и длиннее исправлено 99,2% (украинских — 96,4%). Короткие слова труднее: из двухбуквенных — 65–78%.</li>
<li><strong>Ложные замены.</strong> 10 из 111 373 правильных слов, 0,9 на 10 000. Все десять — слова, в которые проверка нарочно добавила опечатку. Правильно написанные слова не тронуты ни разу.</li>
<li><strong>Английское внутри русского и украинского.</strong> «Slack», «PR», «API», «GitHub», «to», «is» и ещё 16 слов, вставленных в русские и украинские фразы: 18 400 вставок, ни одной замены.</li>
<li><strong>Опечатки.</strong> На правильном тексте: 4 ложные замены на 50 562 английских слова, 3 на 39 664 русских и 1 на 15 760 украинских. Исправлено примерно 83% английских опечаток, 66% русских и 40% украинских.</li>
</ul>
<p>Потом мы проверили правило опечаток на тексте, по которому его не подбирали: строки интерфейса самого приложения, фразы нашего проверочного набора для диктовки и наши русские рабочие записи. Английский и украинский — ни одной ложной замены. Русский — одна на 22 756 слов: «нодах» стало «годах».</p>
<h2 id="что-мы-выключили-потому-что-вредило">Что мы выключили, потому что вредило</h2>
<p><strong>Судья для опечаток.</strong> В VerbaIDE есть маленькая локальная модель — наша дообученная Qwen3-1.7B, которая уже проверяет термины из словаря в диктовке. Мы дали ей пересмотреть исправленную опечатку, когда набрано следующее слово. Портила она чаще, чем спасала: в русском испортила 67 слов и спасла 23, в английском — 58 и 53, в украинском — 8 и 2. А до того, выбирая между несколькими вариантами опечатки, она ошибалась в 23–29% вопросов. Выключено и то и другое.</p>
<p>Для слов в чужой раскладке, где таблицы букв колеблются, та же модель осталась. Там она подняла долю исправленных длинных слов с 97,7% до 99,2% (украинских — с 90,6% до 96,4%) ценой четырёх лишних ложных замен на 111 373 слова, и все четыре — на словах с нарочной опечаткой. 95 ответов из 100 укладываются в 34 миллисекунды.</p>
<p><strong>Одиночная «э», превращавшаяся в «є».</strong> На русской раскладке «э» стоит на клавише, которая в английской даёт кавычку. Английская фраза, начатая с кавычки не в той раскладке, получала «Є» вместо кавычки — 20 раз на проверке. Выключено.</p>
<p><strong>Смелая настройка опечаток.</strong> Она исправляла 92% русских опечаток, но меняла 8,8 правильного русского слова на 10 000, а на отложенном русском тексте — 71 слово. Мы взяли строгую: 66% исправленных и меньше одной ложной замены на 10 000.</p>
<h2 id="что-остаётся-на-вашем-mac">Что остаётся на вашем Mac</h2>
<p>Всё. Нажатия обрабатываются на вашем Mac. Для исправления раскладки в памяти обрабатывается фактический текст поля до курсора: до начала предложения, максимум 16 384 единицы UTF-16; затем снимок забывается. Последнее исправление хранится для отмены. Ничего из набранного не сохраняется, не пишется в журнал и никуда не отправляется. Smart Keyboard использует «Универсальный доступ», чтобы слушать клавиши и печатать исправления, пропускает поля паролей и приложения-исключения и приостанавливает исправления во время диктовки.</p>
<p>Smart Keyboard — платная функция, она входит в платный пакет и в пробный период на 30 дней. Что он исправляет, чего не трогает и чего не поймает — на <a href="/ru/for/layout/">странице Smart Keyboard</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Пробный период теперь месяц, а не две недели</title>
      <link>https://verbaide.com/ru/blog/trial-is-a-month/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/trial-is-a-month/</guid>
      <pubDate>Sat, 10 Oct 2026 12:00:00 GMT</pubDate>
      <description>С 10 октября пробный период после регистрации в приложении длится 30 дней вместо 14. Что он открывает и как его получить.</description>
      <content:encoded><![CDATA[<p>С сегодняшнего дня пробный период после регистрации в приложении длится 30 дней. Раньше было 14.</p>
<h2 id="почему-мы-это-сделали">Почему мы это сделали</h2>
<p>За две недели многие не успевают проверить перевод и запись встречи на настоящей работе. Нужно несколько созвонов, длинный документ, обычная рабочая неделя, а не пара пробных фраз. Месяца на это хватает.</p>
<h2 id="что-открывает-пробный-период">Что открывает пробный период</h2>
<ul>
<li>перевод;</li>
<li>стилевые пресеты;</li>
<li>живые субтитры;</li>
<li>перевод под курсором;</li>
<li>запись встречи.</li>
</ul>
<p>Диктовка в пробный период не входит, потому что она и так бесплатна навсегда: и когда вы держите клавишу, и когда нажимаете её коротко и включаете секретаря. Когда месяц закончится, платные функции закроются, а диктовка останется.</p>
<h2 id="как-его-получить">Как его получить</h2>
<p>Зарегистрируйтесь в мастере первого запуска. Пробный период включится сам: просить его отдельно не нужно, карта не нужна.</p>
<h2 id="если-вы-уже-на-пробном-периоде">Если вы уже на пробном периоде</h2>
<p>У вас ничего не меняется: срок остаётся прежним. 30 дней получают те, кто зарегистрируется с сегодняшнего дня.</p>
<p>Подробнее о том, что бесплатно и что открывает план, — в разделе <a href="/ru/docs/account-and-plans/">аккаунт и планы</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Судья поменьше для терминов вашего словаря</title>
      <link>https://verbaide.com/ru/blog/term-judge-finetune/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/term-judge-finetune/</guid>
      <pubDate>Wed, 07 Oct 2026 12:00:00 GMT</pubDate>
      <description>Мы обучили маленькую модель решать, заменит ли термин из словаря то, что услышал распознаватель. Результат почти как у вдвое большей, но втрое быстрее.</description>
      <content:encoded><![CDATA[<p>Распознаватель пишет необычные слова так, как они слышатся. Скажите «Redis» в русской фразе, и можно получить «редис». Для этого в VerbaIDE есть словари терминов: списки названий и того, как их обычно слышат неверно. На этой неделе мы обучили маленькую модель принимать окончательное решение, и она оказалась почти не хуже модели, которая больше неё более чем вдвое.</p>
<h2 id="что-делает-судья">Что делает судья</h2>
<p>Когда в распознанном тексте есть что-то похожее на термин из вашего словаря, приложение должно решить: это действительно термин или обычное слово? «Redis» и русское слово, которое звучит так же, — разные вещи, и замена вслепую ломает фразы, которые были верны.</p>
<p>Поэтому приложение спрашивает небольшую языковую модель, судью. Она читает фразу и слово-кандидата и отвечает «да» или «нет». Раньше мы выяснили, что спрашивать про каждого кандидата безопаснее, чем верить составленному вручную списку рискованных. Загвоздка во времени: вопрос задаётся, пока вы ждёте свой текст.</p>
<h2 id="что-мы-измерили">Что мы измерили</h2>
<p>Четыре голоса прочли набор тестовых фраз с терминами. Для каждой модели мы считали два числа: фразы, которые судья исправил (термин встал на своё место), и фразы, которые он испортил (верное слово заменили). Итог — исправленные минус испорченные. «+63» значит, что на 63 фразы стало лучше больше, чем стало хуже.</p>
<ul>
<li>Модель на 4 миллиарда параметров: исправлено 70, испорчено 5, итог +65.</li>
<li>Наша дообученная на 1,7 миллиарда: 68 и 5, итог +63.</li>
<li>Та же модель на 1,7 миллиарда до нашего обучения: 77 и 23, итог +54. Она отвечала «да» почти на всё.</li>
<li>Дообученная на 0,6 миллиарда: +58.</li>
</ul>
<p>Все пять поломок у дообученной модели пришли из одной спорной фразы, ловушки, которую мы оставили нарочно. Слова-ловушки мы в обучение не включали, так что замер идёт на словах, которых модель не видела. На отдельном списке из 25 незнакомых терминов доля верных ответов «нет» выросла с 20% до 96%.</p>
<p>По скорости: один вопрос занимает около 0,07 секунды на модели в 1,7 миллиарда против примерно 0,20 на модели в 4 миллиарда. Файл — 1,7 ГБ против 3,3 ГБ. Поэтому она нам нравится.</p>
<p>Для обучения мы сгенерировали примеры фраз, где правильный ответ известен из того, как они устроены. «+63» — это замер на нашем тестовом наборе, а не обещание для вашей речи.</p>
<h2 id="как-обстоят-дела">Как обстоят дела</h2>
<p>По умолчанию она не включена. Приложение теперь умеет направлять судью на отдельную модель через скрытую настройку, отдельно от модели стилей. 7 октября мы включили её на одном из наших Маков. На живой диктовке мы её пока не мерили. Пока этого нет, у всех остальных остаётся прежняя схема, а когда это изменится, мы напишем об этом здесь.</p>
<p>О моделях подробнее — на странице <a href="/ru/docs/languages-and-models/">языки и модели</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Отчёт о плохой диктовке: единственный случай, когда звук уходит с Мака</title>
      <link>https://verbaide.com/ru/blog/report-a-bad-dictation/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/report-a-bad-dictation/</guid>
      <pubDate>Sat, 03 Oct 2026 12:00:00 GMT</pubDate>
      <description>По ⌃⌥⌘B можно отправить нам неудачную диктовку. Что именно вы включаете, что уходит и сколько мы это храним.</description>
      <content:encoded><![CDATA[<p>Распознавание и перевод в VerbaIDE идут на вашем Маке, и речь к нам не попадает. Из-за этого нам трудно узнать, где распознавание ошибается. Поэтому мы добавили одно исключение: можно отправить нам одну неудачную диктовку, но только если вы сами решили это, шаг за шагом.</p>
<h2 id="что-вы-включаете-и-нажимаете">Что вы включаете и нажимаете</h2>
<p>Сначала вы включаете в приложении галочку «Хочу помогать улучшать распознавание речи». Она стоит рядом с согласием на статистику, но отдельно от него и по умолчанию выключена. Согласие на статистику её не включает, и сама галочка ничего не отправляет.</p>
<p>Затем нажимаете Control-Option-Command-B. Открывается окно. В нём одна из трёх ваших последних диктовок: её можно прослушать, видно текст и, если диктовка была с переводом, перевод. Можно ещё написать, что пошло не так. Это по желанию.</p>
<p>Потом нажимаете «Отправить». До этого момента с Мака не уходит ничего.</p>
<h2 id="что-происходит-до-и-после">Что происходит до и после</h2>
<p>Пока вы не нажали «Отправить», звук трёх последних диктовок лежит только в памяти. На диск он не пишется, а при выходе из приложения забывается.</p>
<p>Без галочки пункт меню скрыт, сочетание клавиш молчит, а отправка запрещена. Если вы потом выключите галочку, окно закроется, а временный звук сотрётся.</p>
<p>По нажатию «Отправить» приложение отправляет: запись этой одной диктовки, распознанный текст, перевод, если он есть, описание проблемы, вашу почту, если вы её ввели, версии приложения и macOS и анонимный номер установки. Номер — это отпечаток ключа установки, а не ваш аккаунт; он нужен только чтобы ограничить, сколько отчётов может отправить одна установка. Отчёт уходит на api.verbaide.com. Входить в аккаунт и соглашаться на статистику для этого не нужно.</p>
<h2 id="сколько-мы-это-храним">Сколько мы это храним</h2>
<p>Наша политика приватности говорит прямо: мы храним отчёт, пока не удалим его вручную. Автоматического удаления пока нет. Если хотите, чтобы отчёт удалили раньше, напишите на <a href="mailto:contact@verbaide.com">contact@verbaide.com</a>.</p>
<h2 id="зачем-мы-об-этом-просим">Зачем мы об этом просим</h2>
<p>Когда распознавание ошибается, единственное надёжное свидетельство — звук. По описанию словами не понять, было слово пробормотано, микрофон был тихим или ошиблась модель. С записью мы можем воспроизвести случай и исправить его для всех, кто говорит то же самое. Это единственное место, где звук уходит с вашего Мака, и только когда вы нажимаете кнопку.</p>
<p>Полный список сетевых запросов — на странице <a href="/ru/docs/what-leaves-your-mac/">что уходит с вашего Mac</a>, а наше обещание про речь — на странице <a href="/privacy-first/">приватность прежде всего</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Держать или нажать: одна клавиша диктовки, два способа</title>
      <link>https://verbaide.com/ru/blog/hold-or-tap/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/hold-or-tap/</guid>
      <pubDate>Fri, 02 Oct 2026 12:00:00 GMT</pubDate>
      <description>Держите клавишу диктовки для одной фразы, нажмите коротко для непрерывного секретаря. Одна клавиша, ничего лишнего в меню, секретарь стал бесплатным.</description>
      <content:encoded><![CDATA[<p>До сих пор у диктовки было две отдельные части: клавиша, которую держишь, и секретарь, который слушает непрерывно. У секретаря были своя клавиша, свой пункт меню и своя вкладка в настройках. Мы их объединили. Теперь одна клавиша диктовки, а что произойдёт, решает то, как вы её нажали.</p>
<h2 id="как-это-работает">Как это работает</h2>
<p>Держите клавишу и говорите. Отпустили — весь текст сразу появляется в поле. Это мгновенный способ. Он может переписать текст в выбранном стиле, и ограничения по времени нет.</p>
<p>Нажмите клавишу коротко — запустится секретарь. Говорите, сколько нужно. Текст появляется в поле кусками по ходу речи, а второе нажатие его останавливает. Если включён перевод, каждый кусок переводится по пути. Стиль секретарь не применяет.</p>
<p>Граница между двумя способами — полсекунды. Нажатие короче — короткое. Дольше — удержание. Выбирать режим заранее не нужно: вы просто нажимаете клавишу так, как требует момент.</p>
<h2 id="зачем-мы-это-сделали">Зачем мы это сделали</h2>
<p>Две клавиши на одно дело заставляли людей останавливаться и думать, какую выбрать. Фраза для сообщения в чате просит удержания. Длинная мысль, письмо или поток заметок просят короткого нажатия. Это разница в том, как вы жмёте, а не в возможностях, значит, и место в приложении должно быть одно.</p>
<p>У секретаря были ограничения: 60 секунд и 15 минут. Обоих лимитов больше нет, а сам секретарь теперь бесплатен, как и остальная диктовка. Отдельная клавиша, пункт меню, вкладка в настройках, вид в истории и индикатор «батарейки» убраны.</p>
<h2 id="длинное-удержание-стилизуется-частями">Длинное удержание стилизуется частями</h2>
<p>Связанная правка для мгновенного способа. Когда вы долго держите клавишу и включён стилевой пресет, текст раньше уходил в модель стилизации целиком. Длинный текст маленькой локальной модели даётся трудно. Теперь приложение режет длинную диктовку на части и стилизует каждую со своим запасом. Если стилизация одной части не удалась, как сказано остаётся только она, остальные всё равно стилизуются. Пробелы между частями сохраняются.</p>
<h2 id="что-делать-после-обновления">Что делать после обновления</h2>
<p>Ничего. Клавиша диктовки остаётся там же. Держите её для фразы, нажимайте коротко для секретаря. Подробности — на <a href="/ru/docs/hotkeys/">странице горячих клавиш</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Кто говорит: метки говорящих в записи встречи</title>
      <link>https://verbaide.com/ru/blog/who-is-speaking/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/who-is-speaking/</guid>
      <pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate>
      <description>Расшифровка встречи теперь нумерует голоса моделью Nemotron 3 Diarization. Как мы проверили на слух, что значат цифры и что не уходит в сеть.</description>
      <content:encoded><![CDATA[<p>Расшифровку встречи трудно читать, когда все строки выглядят одинаково. Теперь приложение отмечает, кто говорит: остальные участники звонка становятся «Собеседник 1», «Собеседник 2» и так далее. Функция пока помечена как экспериментальная.</p>
<h2 id="почему-мы-поменяли-способ">Почему мы поменяли способ</h2>
<p>Первый способ резал звук звонка на куски и сравнивал отпечатки голосов. На настоящей записи он не справился. Микрофон и остальные участники приходят смешанными в одном канале, и голоса разных людей попадали в одну группу. Выходом не стали и имена: имя, взятое из текста, часто достаётся не тому человеку.</p>
<p>Новый способ — модель Nemotron 3 Diarization от NVIDIA. «Диаризация» значит раскладывание записи по тому, кто и когда говорил. Модель различает до восьми голосов на одной встрече. Русского и украинского в её обучении нет, поэтому мы проверили её сами.</p>
<h2 id="как-мы-проверяли">Как мы проверяли</h2>
<p>Взяли одну настоящую запись встречи: около 72 минут, четыре человека. Нарезали 60 коротких кусочков по две с половиной секунды из случайных мест и послушали каждый. В 51 из них можно было уверенно сказать, кто говорит, их мы и оставили.</p>
<p>Для каждого кусочка смотрели, какой номер ему дала программа. Новая модель отнесла все 51 к нужному человеку, то есть 51 из 51, и использовала ровно четыре номера на четырёх людей. Прежний способ дал 27 из 51, около 53%, и разбросал голоса по семи номерам, в каждом из которых смесь людей.</p>
<p>К этому стоит относиться осторожно. Это одна встреча, небольшой набор кусочков, проверка одним человеком и те языки, на которых шёл тот звонок. На целых строках расшифровки, которые длиннее наших кусочков и иногда содержат двух говорящих, новая модель совпала с нашим слухом в 47 случаях из 51. Другие записи мы пока не проверяли.</p>
<h2 id="что-остаётся-на-вашем-маке">Что остаётся на вашем Маке</h2>
<p>Модель — загрузка примерно в 100 МБ с huggingface.co. Она скачивается только по кнопке во вкладке «Загрузки». Сама встреча в сеть не ходит: метки ставятся на вашем Маке после записи.</p>
<p>Голоса приложение не запоминает. Номера существуют только внутри одной встречи и никого не опознают. «Собеседник 2» сегодня никак не связан с «Собеседником 2» завтра. Голосового профиля нет, поэтому и хранить, и терять нечего.</p>
<p>О том, что уходит из приложения и когда, написано на странице <a href="/ru/docs/what-leaves-your-mac/">что уходит с вашего Mac</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Диктовка стала хуже? Сначала проверьте микрофон</title>
      <link>https://verbaide.com/ru/blog/quiet-microphone/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/quiet-microphone/</guid>
      <pubDate>Fri, 25 Sep 2026 12:00:00 GMT</pubDate>
      <description>Bluetooth-наушники оставили микрофон на 27% громкости, и диктовка стала путать слова. Теперь панель предупреждает об этом; что проверить самому.</description>
      <content:encoded><![CDATA[<p>На этой неделе один из нас заметил, что диктовка делает куда больше ошибок, а полоска уровня на панели вялая. Мы стали искать причину в последних правках. Причина была вовсе не в коде.</p>
<h2 id="что-мы-нашли">Что мы нашли</h2>
<p>Системный вход на Маке остался на Bluetooth-наушниках, а громкость входа стояла на 27%. Мы измерили громкость записанных фраз. Речь приходила примерно на минус 48 децибел. На обычном микрофоне та же мера держится между минус 20 и минус 35. Это очень тихая запись, и распознавателю почти не за что зацепиться.</p>
<p>В записях это видно за минуту. Разбирать все правки пришлось бы час.</p>
<p>В тот же день вылезло второе. После нажатия клавиши диктовки появлялась панель, потом тишина, и только потом звук начала записи. Журнал показывал, что приложение начинало запись через 0,1 секунды после нажатия, так что тормозило не оно, а наушники. Когда Bluetooth-наушники открывают микрофон, они переключаются из режима музыки в режим гарнитуры, и это занимает время. В режиме гарнитуры звук к тому же хуже, чем при воспроизведении музыки.</p>
<h2 id="что-делает-приложение-теперь">Что делает приложение теперь</h2>
<p>Каждая диктовка теперь измеряет громкость первой полутора секунд вашей речи. Если она слишком тихая, панель шесть секунд говорит об этом: какой микрофон слушает и какая у него громкость входа. Запись при этом идёт дальше, мы вас не останавливаем.</p>
<p>Порог мы подобрали на примерно полутора тысячах собственных записанных кусков. Предупреждение ловит около трёх четвертей того тихого часа, который у нас был, и срабатывает зря меньше чем на одном проценте обычной речи. Это практическое правило, а не гарантия.</p>
<h2 id="что-можно-проверить-самому">Что можно проверить самому</h2>
<p>Если диктовка вдруг ухудшилась, первым делом посмотрите на микрофон.</p>
<ul>
<li>Откройте Системные настройки, затем Звук, затем Вход. Скажите что-нибудь и следите за шкалой. Если она еле шевелится, поднимите громкость входа.</li>
<li>Посмотрите, какое устройство выбрано. Когда вы подключаете наушники, macOS может переключить вход на них без вопросов.</li>
<li>Если вы работаете с Bluetooth-наушниками, ждите короткой паузы при открытии микрофона и более плохого звука, пока он включён. Встроенный микрофон Мака избавляет от обоих.</li>
</ul>
<p>Другие подсказки есть на <a href="/ru/docs/troubleshooting/">странице неполадок</a>.</p>
<p>Сегодня: в настройках можно выбрать для диктовки отдельный микрофон.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Новая модель распознавания не ставится без вопроса</title>
      <link>https://verbaide.com/ru/blog/model-updates-ask-first/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/model-updates-ask-first/</guid>
      <pubDate>Thu, 24 Sep 2026 12:00:00 GMT</pubDate>
      <description>Раньше приложение молча скачивало новые модели распознавания. Теперь оно спрашивает: «Обновить» или «Не сейчас». Вот когда и как часто.</description>
      <content:encoded><![CDATA[<p>Раньше, когда мы выкладывали модель получше, приложение скачивало её само: около 600 МБ, без предупреждения. Окно подтверждения мы обещали ещё при создании этой схемы. Сегодня оно появилось.</p>
<h2 id="что-делает-приложение-теперь">Что делает приложение теперь</h2>
<p>Когда доступна новая модель, приложение показывает окно с двумя кнопками: «Обновить» и «Не сейчас». В окне указан размер загрузки и сказано, что приложение продолжает работать на текущей модели, пока вы не обновите. Отвечать быстро не нужно, и пока вы думаете, ничего не перестаёт работать.</p>
<p>Часть решений мы приняли сознательно:</p>
<ul>
<li>Окно никогда не появляется, пока вы работаете. Оно ждёт, если идёт диктовка, секретарь или живые субтитры.</li>
<li>Оно появляется примерно через пять секунд после запуска или когда вы открываете раздел «Распознавание» в настройках, во вкладке «Компоненты».</li>
<li>Оно появляется не чаще одного раза за запуск.</li>
<li>После «Не сейчас» приложение ждёт неделю и только потом спрашивает снова.</li>
<li>После второго «Не сейчас» оно больше не спрашивает про эту версию. Если мы выложим более новую, счёт начнётся с нуля.</li>
</ul>
<p>У кнопок нет клавиш быстрого выбора. При проверке случайный Enter, нажатый в другом окне за миг до этого, согласился на загрузку 600 МБ. Теперь нужно нажимать кнопку мышью.</p>
<h2 id="что-всегда-можно-сделать-самому">Что всегда можно сделать самому</h2>
<p>Кнопка «Обновить модель» остаётся в настройках, в «Компонентах», в разделе «Распознавание». Если вы дважды нажали «Не сейчас» и передумали, кнопка на месте. Если вы нажали «Обновить» и закрыли приложение на полпути, загрузка продолжится при следующем запуске без повторного вопроса.</p>
<h2 id="единственное-исключение">Единственное исключение</h2>
<p>Самая первая модель ставится без вопроса. Без модели распознавания нечем диктовать, даже в бесплатном режиме, поэтому вопрос только мешал бы. Это касается лишь случая, когда не установлено вообще никакой модели.</p>
<h2 id="уходит-ли-что-то-новое-в-сеть">Уходит ли что-то новое в сеть</h2>
<p>Нет. Вопрос опирается на тот же указатель на текущую модель, который приложение и так читало не чаще раза в сутки. Ничего о вас оно не отправляет. Ваши ответы хранятся в настройках приложения на вашем Маке, поэтому очистка кэша моделей вопрос не возвращает.</p>
<p>Полный список того, что приложение отправляет и когда, — в разделе <a href="/ru/docs/what-leaves-your-mac/">что уходит с вашего Мака</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Мы дообучили распознаватель на своих записях</title>
      <link>https://verbaide.com/ru/blog/finetuning-parakeet/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/finetuning-parakeet/</guid>
      <pubDate>Sun, 20 Sep 2026 12:00:00 GMT</pubDate>
      <description>Что мы изменили в Parakeet, какая рецептура победила, какие идеи не помогли и почему мы меряем только на голосах, которых модель не слышала.</description>
      <content:encoded><![CDATA[<p>Распознаватель в приложении — Parakeet от NVIDIA. Он хорош и без доработок, но ошибается именно на том, что мы диктуем: названия продуктов, английские слова посреди русской речи, числа. Поэтому мы доучили его на записях, которые сделали сами. Вот что получилось.</p>
<h2 id="что-мы-сделали">Что мы сделали</h2>
<p>Дообучение — это когда берут готовую модель и продолжают её учить на новом материале. Мы делали это на Маке, без арендованных видеокарт. В модели около 627 миллионов параметров, один проход по примерно 80 минутам звука занимает около 12 минут.</p>
<p>Записи наши: несколько человек читали вслух сотни фраз, в том числе фразы-ловушки. Например, «сафари-парк», который модель любит писать как «Safari Park», и предложения, набитые числами.</p>
<h2 id="какая-рецептура-победила">Какая рецептура победила</h2>
<p>Мы сравнили варианты на двух людях, которых модель не слышала, по 100 новых фраз у каждого. Ошибок на сто слов, меньше — лучше:</p>
<table>
<thead>
<tr>
<th>Вариант</th>
<th>Ошибок</th>
</tr>
</thead>
<tbody>
<tr>
<td>Parakeet в том виде, как его выпускает NVIDIA</td>
<td>40,1</td>
</tr>
<tr>
<td>Наша прошлая версия</td>
<td>22,4</td>
</tr>
<tr>
<td>Смесь с исходной моделью 0,4</td>
<td>25,0</td>
</tr>
<tr>
<td>Смесь с исходной моделью 0,6</td>
<td>22,8</td>
</tr>
<tr>
<td>Без смеси</td>
<td>19,5</td>
</tr>
<tr>
<td>Искажённый звук, смесь 0,6</td>
<td>21,7</td>
</tr>
<tr>
<td>Искажённый звук, без смеси</td>
<td>18,2</td>
</tr>
</tbody>
</table>
<p>Победил последний вариант: на 4,2 пункта лучше прошлой версии.</p>
<p>Две идеи стоит объяснить. «Искажённый звук» значит, что при обучении мы добавляем к записям эхо комнаты и другую порчу, чтобы модель привыкла к настоящим помещениям. «Смесь» значит, что дообученную модель усредняют с исходной, чтобы она не забыла прежнее. Какое-то время мы брали смесь 0,6, и она оказалась вредной. Её подобрали на одном голосе и на первом наборе фраз, где мало трудных случаев. Когда мы добавили второй набор, где ловушек и чисел вдвое больше, смесь только отнимала выигрыш.</p>
<h2 id="что-не-помогло">Что не помогло</h2>
<p>Больше данных того же вида. Три версии, обученные на всё большем объёме, показали одинаковый результат в пределах шума. Новые фразы от тех же людей тоже не помогли, как и сильные искажения: они оказались хуже умеренных. Помогают новые голоса и верная рецептура.</p>
<h2 id="как-мы-меряем">Как мы меряем</h2>
<p>Только на голосах, которых модель не слышала, и на фразах, которых она не видела. Если голос был в обучении, число выглядит примерно на треть лучше, чем будет у настоящего человека. Поэтому мы обучаем отдельную модель без каждого из проверочных голосов и меряем на ней.</p>
<p>Дообученная модель лежит на cdn.verbaide.com, и приложение берёт её оттуда. Сегодня: с 24 сентября приложение спрашивает, прежде чем ставить новую версию. Подробнее — про <a href="/ru/docs/languages-and-models/">языки и модели</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Промпты стилей: примеры работают лучше правил</title>
      <link>https://verbaide.com/ru/blog/style-prompts-examples-beat-rules/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/style-prompts-examples-beat-rules/</guid>
      <pubDate>Thu, 17 Sep 2026 12:00:00 GMT</pubDate>
      <description>Как мы настраиваем инструкции для стилевых пресетов. Запреты «не делай так» ухудшали результат, а пары «вход → выход» улучшали.</description>
      <content:encoded><![CDATA[<p>Стилевой пресет переписывает надиктованный текст в нужном тоне, например более официально. Переписывает языковая модель, и работает она по письменной инструкции. Настраивая эту инструкцию, мы узнали то, чего не ждали: если сказать модели, чего не делать, будет хуже.</p>
<h2 id="что-идёт-не-так">Что идёт не так</h2>
<p>Иногда модель делает что-то неприятное. Начинает со слов «Конечно, вот неформальный вариант:». Копирует ваш текст дословно. Открывает ответ словом «Привет». Естественная реакция — дописать в инструкцию строку: не начинай со вступления, не говори «привет».</p>
<p>Мы так и делали и замеряли это четыре раза на трёх пресетах, на живой диктовке. Каждый раз добавленные запреты ухудшали результат:</p>
<ul>
<li>Запрет на вступление «Sure, here’s…» опустил результат ниже того, с чего мы начинали.</li>
<li>Пять попыток подряд запретить приветствие «Hey» провалились.</li>
<li>Правило без примера уронило число чистых случаев с 19 до 7.</li>
</ul>
<p>Наше предположение: модель цепляется за те самые слова, которые ей велели обходить, вместо того чтобы их обходить.</p>
<h2 id="что-работает">Что работает</h2>
<p>Готовая пара: фраза на входе и ответ, который мы хотим получить. Два таких примера дали на двенадцать исправленных фраз больше и только одну, которая стала хуже.</p>
<p>Не всякий пример помогает. Примеры, придуманные из головы, дали небольшой прирост. Заметный прирост дало другое: мы брали конкретные фразы, на которых модель села в лужу в прошлом прогоне, и писали к каждой правильный ответ. Получается цикл: прогнать тест, выбрать провалившиеся фразы, превратить их в примеры, прогнать снова.</p>
<p>Ещё одно, о чём легко не знать. Две худшие привычки, вступление и дословное копирование, проявляются только на длинных текстах с несколькими мыслями. На коротких фразах из одного предложения их почти не видно. Тест из коротких фраз скажет, что всё хорошо.</p>
<h2 id="как-мы-оцениваем">Как мы оцениваем</h2>
<p>У нас есть постоянный набор фраз, разделённый на две половины. Настраиваем мы на одной половине. Вторая остаётся закрытой до самого конца, как экзамен, чтобы не подгонять промпт под фразы, которые мы видим.</p>
<p>Каждый ответ проходит простые проверки без модели: уцелели ли числа, остался ли вопрос вопросом, не появились ли чужие знаки письма. Затем вторая языковая модель работает судьёй и отвечает на пять постоянных вопросов о каждом результате. Если сменить судью, меняются все числа, поэтому кандидата и его исходный вариант всегда оценивает один и тот же судья.</p>
<p>Так мы сократили инструкцию для делового тона с 1699 до 1490 токенов, а оценка судьи выросла с 264 до 271 из 282. Промпт короче, оценка выше, и ни одного нового запрета.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Мы пробовали чистить звук перед распознаванием. Не помогло</title>
      <link>https://verbaide.com/ru/blog/audio-cleanup-does-not-help/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/audio-cleanup-does-not-help/</guid>
      <pubDate>Tue, 15 Sep 2026 12:00:00 GMT</pubDate>
      <description>Мы проверили выравнивание громкости, шумоподавление и фильтры перед распознаванием. Два способа ухудшили результат, остальные ничего не изменили.</description>
      <content:encoded><![CDATA[<p>Кажется очевидным: убрать шум, выровнять громкость — и распознаватель услышит лучше. Мы проверили это на своих записях. Вышло наоборот.</p>
<h2 id="что-мы-пробовали">Что мы пробовали</h2>
<p>Взяли записи четырёх голосов, 1434 фразы, и прогнали каждую фразу через тринадцать вариантов обработки перед распознаванием. Потом сравнили число ошибок с необработанной записью.</p>
<ul>
<li>Выравнивание громкости: все записи приводятся к одному уровню. Стало хуже, примерно на два пункта больше ошибок на сто слов. Английские фразы одна за другой записывались русскими буквами.</li>
<li>Шумоподавление RNNoise. На голосе, который и так был чистым, стало хуже.</li>
<li>Шумоподавление GTCRN. Оно только перемешало ошибки: одни ушли, другие появились, а на русском стало чуть хуже.</li>
<li>Фильтр высоких частот на 90 Гц, который срезает низкий гул. Никакой разницы.</li>
</ul>
<h2 id="почему-так">Почему так</h2>
<p>Очистка звука не даёт распознавателю просто запись получше. Она меняет звук, а распознаватель реагирует на это изменение так, как мы не ожидали.</p>
<p>Сильнее всего удивила громкость. Распознаватель сам решает, на каком языке звучит речь, и громкость сдвигает это решение. Чем громче звук, тем сильнее модель тянет к русскому, и английская фраза появляется кириллицей. Тише звук — модель отпускает, и она возвращается к языку фразы. Небольшой сдвиг на входе менял алфавит примерно в 150 фразах из 1434.</p>
<p>Мы искали и один идеальный уровень громкости, но не нашли. Усиление звука вредило, а лучший уровень у каждого голоса свой, и они расходились больше чем на 15 дБ.</p>
<h2 id="что-помогло-немного">Что помогло немного</h2>
<p>Устойчивый выигрыш дало только одно: сделать звук тише на три децибела. Это убрало около половины пункта ошибок на сто слов, и ни один голос не стал хуже. Если сделать звук намного тише (на 6 дБ и больше), появляется новая беда: русский начинает уезжать в украинское написание.</p>
<p>Выигрыш небольшой, поэтому мы добавили его только как эксперимент. В настройках диктовки есть переключатель «Улучшить распознавание (эксперимент)», по умолчанию он выключен. На живые субтитры он не влияет.</p>
<p>Поэтому шумоподавление перед распознавателем мы не ставим. Если захотим улучшить результат на русском и украинском, будем смотреть, как модель выбирает язык, а не на звук.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Мы замерили облачные распознаватели и остались на устройстве</title>
      <link>https://verbaide.com/ru/blog/cloud-recognizers-measured/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/cloud-recognizers-measured/</guid>
      <pubDate>Tue, 15 Sep 2026 12:00:00 GMT</pubDate>
      <description>Распознаватель OpenAI ошибался на 3–4 пункта реже нашего на фразах с листа. Облачный вариант мы всё равно не делаем. Объясняем почему.</description>
      <content:encoded><![CDATA[<p>Два крупных облачных сервиса теперь заявляют распознавание с русским и украинским: GPT-Transcribe от OpenAI и Gemini 3.5 Transcribe от Google. Нам хотелось знать, насколько они лучше модели, которая работает на вашем Маке. Мы замерили.</p>
<h2 id="как-мы-проверяли">Как мы проверяли</h2>
<p>Мы взяли свой набор фраз, которые читали вслух четыре человека: по 380 фраз на голос, из них 294 в украинском наборе. Сервисы получали файлы без подсказок и без списков терминов, а нашу модель Parakeet, которая работает на устройстве, мы прогнали в тех же условиях. Считали долю неверных слов без учёта знаков препинания. Это единственный случай, когда записи уходили в эти сервисы: в самом приложении так не происходит.</p>
<p>Доля неверных слов по всем голосам вместе:</p>
<ul>
<li>русский: Parakeet 13,5%, Gemini 10,0%, GPT-Transcribe 9,8%</li>
<li>украинский: Parakeet 18,0%, Gemini 20,5%, GPT-Transcribe 14,6%</li>
<li>английский: Parakeet 13,7%, Gemini 13,1%, GPT-Transcribe 10,6%</li>
</ul>
<h2 id="что-мы-увидели">Что мы увидели</h2>
<p>GPT-Transcribe оказался лучше на 3–4 пункта в каждом языке, и разрыв уверенный, а не случайность выборки. Gemini на русском и английском был близок к Parakeet. На украинском без подсказки языка он был хуже Parakeet: короткие фразы дописывал по-русски. Числа он записывает цифрами.</p>
<p>Одно не улучшилось. На фразах с английскими терминами внутри русской речи облачные сервисы ошибались в 17–26% слов, против 32% у Parakeet. «Антропик», «докер» и «мигрейт» у всех вышли кириллицей. Значит, словарь терминов нужен поверх любого облачного распознавателя.</p>
<h2 id="почему-мы-отказались">Почему мы отказались</h2>
<p>Облачный вариант стоил бы нам реальных денег за каждую минуту речи, отдельного сервера для выдачи ключей доступа, двух чужих интеграций, которые надо держать рабочими. Но главная цена — само обещание. Сегодня речь не покидает ваш Мак, и эта фраза короткая и правдивая. Три-четыре пункта точности не стоят того, чтобы от неё отказаться.</p>
<p>К цифрам есть и оговорка. Наши фразы читали с листа, а не говорили свободно. Мы уже обжигались на этом: одна из прежних моделей на фразах с листа была лучше на 1–2 пункта, а потом на живой диктовке показала себя хуже — писала «э-э» и рвала предложения пополам. Мы её убрали. Выигрыш на тестовом листе не всегда переносится на настоящую речь.</p>
<h2 id="что-делаем-вместо-этого">Что делаем вместо этого</h2>
<p>Эти 3–4 пункта мы пытаемся добрать на устройстве: другие локальные модели, которые сразу меряем на записях настоящей диктовки, обработка звука до распознавания и дообучение Parakeet на наших записях. О том, что сработает, расскажем. А что именно уходит с вашего Мака сегодня, перечислено в разделе <a href="/ru/docs/what-leaves-your-mac/">что уходит с вашего Мака</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Почему мы убрали распознаватель, который показывал лучший результат</title>
      <link>https://verbaide.com/ru/blog/why-we-removed-gigaam/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/why-we-removed-gigaam/</guid>
      <pubDate>Tue, 15 Sep 2026 12:00:00 GMT</pubDate>
      <description>Русский распознаватель выглядел лучше на тестовых фразах, но на живой речи писал «э-э» и рвал предложения. Мы его убрали. Урок: проверять на живой речи.</description>
      <content:encoded><![CDATA[<p>Какое-то время в приложении был второй русский распознаватель, GigaAM. Он перепроверял каждый русский кусок диктовки после основного распознавателя, Parakeet. По цифрам он был лучше. В жизни оказался хуже, и мы убрали его целиком.</p>
<h2 id="что-говорили-цифры">Что говорили цифры</h2>
<p>У нас есть постоянный набор тестовых фраз, которые люди читают вслух, и мы считаем, сколько ошибок распознаватель делает на них. На этом наборе GigaAM давал на один-два пункта меньше ошибок на сто слов, чем один Parakeet. Это заметный выигрыш, поэтому мы его и добавили.</p>
<h2 id="что-показала-живая-речь">Что показала живая речь</h2>
<p>Набор прочитанных фраз аккуратен. Человек читает предложение с листа, говорит ровно и не запинается. Настоящая диктовка не такая. Ты думаешь на ходу, делаешь паузы, начинаешь фразу заново.</p>
<p>Мы посмотрели на текст, который GigaAM выдавал на нашей обычной ежедневной диктовке: 557 перепроверенных кусков за один день. Получилось плохо, и четырьмя способами:</p>
<ul>
<li>он вписывал в текст «э-э» и «и-и-и», то есть звуки раздумья, которых никто не хочет видеть на странице;</li>
<li>он рвал предложения: точка и заглавная буква посреди фразы;</li>
<li>он обрывал последнее слово там, где один кусок звука стыкуется со следующим;</li>
<li>в четырёх кусках из десяти он менял только знаки препинания, и делал хуже.</li>
</ul>
<p>На тестовом наборе ничего из этого не было видно, потому что в нём нет запинок и недоговорённых фраз.</p>
<h2 id="что-мы-решили">Что мы решили</h2>
<p>Можно было подправить проверку так, чтобы тестовый набор ловил эти проблемы. Мы не стали. Человек, который диктует каждый день, увидел проблему в тексте, а это и есть главная проверка. Мы убрали GigaAM из приложения, из настроек и из списка компонентов. Файлы модели мы тоже сняли с нашего сервера загрузок. А если на Маке осталась копия, приложение удалит её при запуске.</p>
<p>Урок простой. Цифра, полученная на прочитанных фразах, не переносится на живую речь. Если появится новый кандидат для русского, мы сначала проверим его на реальной диктовке, а потом уже на прочитанных фразах. Для русского у нас остаётся Parakeet.</p>
<p>Что мы используем сейчас и как ставятся модели — на странице про <a href="/ru/docs/languages-and-models/">языки и модели</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Словари терминов и подсказка, которую мы спрятали</title>
      <link>https://verbaide.com/ru/blog/term-dictionary-hint-hidden/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/term-dictionary-hint-hidden/</guid>
      <pubDate>Sat, 05 Sep 2026 12:00:00 GMT</pubDate>
      <description>Мы проверили три способа вернуть английские термины в русскую речь. Очевидный сломал втрое больше фраз, чем починил, и мы его спрятали.</description>
      <content:encoded><![CDATA[<p>Когда вы говорите «pull request» в русской фразе, распознаватель пишет «пул реквест». Anthropic превращается в «Антропик», GitHub Actions — в «Гитхаб экшн». Мы потратили время на то, чтобы это исправить, и результат вышел не тот, которого мы ждали.</p>
<h2 id="три-способа-исправить-термины">Три способа исправить термины</h2>
<p>Распознаватель работает со звуком, поэтому первая мысль была — подсказать ему, какие термины слушать. Рядом с основной работает вторая маленькая модель на 98 МБ: она ищет термины в звуке и переписывает текст там, где слышит один из них. Это мы называем подсказкой. Второй способ — обычный список замен, применяемый к готовому тексту, без модели. Третий — судья: небольшая языковая модель читает предложение и решает, правда ли термин здесь уместен.</p>
<p>Мы проверили все три способа на четырёх голосах и 1434 фразах, примерно 57 вариантов настроек. Для каждого способа считали, сколько фраз он починил и сколько сломал.</p>
<ul>
<li>Подсказка: починила 86, сломала 253. И ещё 2,26 секунды на фразу против 0,33 без неё.</li>
<li>Один список замен: починил 69, сломал 16, мгновенно.</li>
<li>Судья: починил 79, сломал 10. По времени почти бесплатно: модель просыпается, только когда в тексте правда встретился кандидат.</li>
</ul>
<p>Подсказка сломала втрое больше, чем починила. Типичная её ошибка — созвучное слово: «посмотрел» превращается в «Postgres». Мы пробовали убрать из списка рискованные слова и получили то же соотношение три к одному. Поэтому подсказку мы выключили, а её переключатель убрали из настроек. Код остался, рядом комментарий, почему она отключена.</p>
<h2 id="что-теперь-делает-судья">Что теперь делает судья</h2>
<p>Раньше судья спрашивал модель только про варианты, которые мы отметили как рискованные. Мы проверили, что будет, если спрашивать про каждого кандидата. Итоговый выигрыш тот же, но ломается 6 фраз вместо 10, и пропадает список, который мы писали руками и который мог устареть. Теперь судья спрашивает про всех кандидатов. Размер модели важен: модель на 1,7 миллиарда параметров сломала 24 фразы против 10 у модели на 4 миллиарда при том же сдвиге ошибок в словах. Если смотреть только на ошибку по словам, этого не увидеть.</p>
<h2 id="списки-терминов-для-всех">Списки терминов для всех</h2>
<p>Встроенные списки для программистов, дизайнеров и менеджеров открыты каждому: их можно выбирать, править и создавать свои. Публичный список из 165 терминов для разработчиков с лицензией MIT мы нашли, а для дизайнеров и менеджеров не нашли ничего, поэтому эти списки писали сами. Готовых данных о том, как русскоязычный человек произносит английские термины, мы тоже не нашли, так что эта половина работы тоже наша.</p>
<h2 id="каким-цифрам-не-стоит-верить">Каким цифрам не стоит верить</h2>
<p>Терминов в нашем тестовом наборе мало: 259 замен задевают всего от 16 до 28 фраз из 380. Секунды — это время разбора файла, а не задержка, которую вы почувствуете в живой диктовке. Один голос оказался выбросом: 28% ошибок в словах против 7,5–12% у остальных. Задержку живой диктовки, когда судья спрашивает про всё, мы ещё не измерили. Читайте цифры как направление, а не как обещание.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Зачем мы сделали свой переводчик</title>
      <link>https://verbaide.com/ru/blog/our-own-translation-engine/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/our-own-translation-engine/</guid>
      <pubDate>Thu, 13 Aug 2026 12:00:00 GMT</pubDate>
      <description>Перевод Apple падал на украинском в macOS 26, поэтому мы перенесли перевод на свои модели, которые работают на вашем Маке.</description>
      <content:encoded><![CDATA[<p>На macOS 26 любой перевод с украинского или на украинский через встроенный перевод Apple ронял системную службу перевода. На этой неделе мы перестали от неё зависеть: приложение переводит своими моделями, прямо на вашем Маке.</p>
<h2 id="что-сломалось">Что сломалось</h2>
<p>Мы разобрались 12 августа. На macOS 26 (проверяли на 26.5.2) любой перевод, где с одной стороны украинский, обрывает системную службу translationd. После этого macOS не запускает её заново до 20 минут. Всё это время не переводится ни одна пара языков, ни в одном приложении на компьютере, включая русский и английский. Воспроизвести это можно и без нашего приложения: выделить текст, нажать правую кнопку, выбрать «Перевести».</p>
<p>На macOS Sequoia 15 тот же перевод работает, так что это сбой именно macOS 26, а не один неудачный Мак. Он воспроизвёлся и на чужом компьютере. Обычных подозреваемых мы проверили: файлы украинской модели целы, а очистка кэшей, перезагрузка и смена режима перевода ничего не меняли. Отчёт в Apple мы отправили, но украинский — центр того, что делает приложение, и ждать мы не могли.</p>
<p>Хуже всего побочный эффект. Украинский и так не работал, но одна украинская попытка заодно выключала русский и английский на двадцать минут.</p>
<h2 id="что-мы-сделали">Что мы сделали</h2>
<p>Мы добавили собственный переводчик. Он использует открытые модели перевода, а запускает их движок внутри приложения. Первая версия знает английский, русский и украинский, а хранилище рассчитано на десять языков.</p>
<p>Словари скачиваются по одному на направление, только для тех языков, которые вы выбрали, с cdn.verbaide.com. Одно направление лежит внутри приложения, поэтому перевод работает с первого запуска: с русского и украинского на английский. Все остальные направления, включая обратный путь с английского на русский и украинский, скачиваются по запросу.</p>
<p>Для некоторых пар прямой модели нет — например, для украинского и русского. Там мы идём через английский, и только когда прямого пути нет: каждая лишняя пересадка может испортить смысл.</p>
<h2 id="что-мы-замерили">Что мы замерили</h2>
<p>Сначала мы попробовали класс моделей поменьше и полегче. Из 20 тестовых переводов он испортил 8, а в шести пропали целые предложения. Из «Привет, как дела? Сегодня хорошая погода, и я хочу пойти на прогулку» осталось только «як справи? і я хочу піти на прогулянку». Это потерянный текст, а не обмен скорости на качество, поэтому мы такую модель отвергли. Класс побольше не потерял ни одного предложения.</p>
<p>На этом Маке наш переводчик тратил 153 мс на фразу, а переводчик Apple — 176 мс. Это один компьютер, а не тест на все случаи, но он говорит, что переход ничего не стоит по скорости.</p>
<p>Переводчик Apple остался в приложении запасным для тех языков, где он работает. Украинский через него не идёт никогда. Подробности о языках и загрузках — в разделе <a href="/ru/docs/languages-and-models/">языки и модели</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>У приложения появилось имя: VerbaIDE</title>
      <link>https://verbaide.com/ru/blog/new-name-verbaide/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/new-name-verbaide/</guid>
      <pubDate>Sun, 09 Aug 2026 12:00:00 GMT</pubDate>
      <description>Почему приложение называется VerbaIDE, что имя говорит разным читателям и почему логотип — ветка ивы, а не дерево.</description>
      <content:encoded><![CDATA[<p>До этой недели у приложения было только рабочее название — такое, какое пишешь на папке и надеешься потом заменить. 7 августа мы купили домен verbaide.com, а 9 августа переименовали под него всё приложение: меню, вкладку «О программе», тексты запросов разрешений, сам пакет приложения и файлы, которые мы раздаём.</p>
<h2 id="почему-verba-и-ide">Почему «Verba» и «IDE»</h2>
<p>«Verba» почти любой читает как «verbal», «слова», поэтому за границей это обычное технологичное имя. «IDE» мы взяли у инструментов разработчика. Те, для кого мы делаем приложение, уже живут в таких инструментах: разработчики, основатели, люди из поддержки и операционных команд, которые печатают целый день. Приложение должно ощущаться как рабочий инструмент для текста, а не как игрушка.</p>
<p>Слоган — «The IDE for human language». В IDE пишут код. Письма, тикеты и сообщения пишут на человеческом языке, и это можно делать быстрее, если говорить вслух.</p>
<p>У «IDE» есть и второе прочтение: Intelligent Dictation &amp; Expression. Эту расшифровку мы оставляем для тех мест, где аббревиатуру нужно раскрыть.</p>
<h2 id="второй-смысл-для-украинского-читателя">Второй смысл для украинского читателя</h2>
<p>По-украински «верба» — это ива, а ива — национальный символ. Выбирали мы имя не только ради этого, но, заметив совпадение, оставили его сознательно. Читатель за границей видит аккуратное техническое имя. Украинский читатель видит в нём ещё один слой. Приложение делают люди из Украины, и многие из тех, кто им будет пользоваться, говорят по-русски или по-украински, а работают по-английски.</p>
<h2 id="почему-логотип--ветка">Почему логотип — ветка</h2>
<p>Сначала мы думали про настоящую иву и отказались. Дерево похоже на логотип эко-бренда или косметики, а для инструмента, в котором пишут, оно не подходит. Договорились об абстрактной ветке ивы: тонкий стебель и несколько листьев. В первых набросках листья были похожи на облачка речи, а буква V складывалась из двух тонких веток. Знак должен выдерживать очень маленький размер: он живёт ещё и в строке меню, где в покое нарисован контуром, а во время сессии залит.</p>
<h2 id="что-затронуло-переименование">Что затронуло переименование</h2>
<p>Переименование — это не просто новая надпись. macOS привязывает разрешения, которые вы выдали (микрофон, распознавание речи, запись звука других приложений), к идентичности приложения, и смена идентичности чего-то стоит. Мы хотели заплатить эту цену один раз и рано, пока приложение не поставили многие. Поэтому всё поменяли за один проход, а не кусками.</p>
<p>Приложение делает то же, что и раньше: печатает то, что вы говорите, в любое текстовое поле, показывает живые субтитры с переводом и переводит текст под курсором, а распознавание и перевод идут на вашем Маке. Как это устроено — в разделе <a href="/ru/docs/what-leaves-your-mac/">что уходит с вашего Мака</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Приложение и сайт на английском, украинском и русском</title>
      <link>https://verbaide.com/ru/blog/interface-in-three-languages/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/interface-in-three-languages/</guid>
      <pubDate>Sat, 08 Aug 2026 12:00:00 GMT</pubDate>
      <description>Приложение заговорило на трёх языках: берёт язык из системы и переключается без перезапуска. Сайт выбирает украинский по стране посетителя.</description>
      <content:encoded><![CDATA[<p>До сегодняшнего дня интерфейс приложения был только русским, а сайт уже говорил на трёх языках. Кто пришёл с украинской страницы, скачал приложение и открыл его, видел русский. Теперь и приложение, и сайт работают на английском, украинском и русском.</p>
<h2 id="в-приложении">В приложении</h2>
<p>Приложение берёт первый из этих трёх языков из списка языков вашей macOS. Если ни одного из трёх там нет, включается английский. В настройках можно выбрать язык самому, и он применяется сразу, без перезапуска.</p>
<p>Важно, где хранится выбор. Он пишется в то же место, куда пишет системная настройка языка для отдельной программы («Системные настройки», «Основные», «Язык и регион», «Программы»). Поэтому два переключателя не могут разойтись, а выбор переживает перезапуск без лишнего кода. «Как в системе» — это просто отсутствие сохранённого выбора.</p>
<p>Мгновенное переключение оказалось более трудной половиной. Обычный способ загрузки строк в маковском приложении читает язык при запуске и больше не меняет. Мы загружаем строки через собственный объект, который умеет менять язык на ходу. Если строки нет, берётся английская, а если и её нет — сам ключ, чтобы пробел бросался в глаза, а не прятался пустым местом.</p>
<p>Первой ловушкой стало меню. Окна перерисовываются сами, а меню хранит готовый текст. Приложение живёт в строке меню, и, забыв про это, мы получили бы язык, который сменился везде, кроме самого частого места. Вторая ловушка нашлась позже: в нескольких местах хранилась готовая фраза, а не то, что нужно переводить. Результат проверки разрешения, статус на панели диктовки, надпись «загрузка» в закреплённом окне перевода. Каждому пришлось запоминать причину сообщения, чтобы смена языка до него дошла. В старых записях истории были зашиты русские слова «надиктовка» и «секретарь», поэтому они оставались русскими после смены языка. Теперь они приводятся к нейтральным по языку меткам.</p>
<p>Две вещи мы оставили намеренно. Слова, которыми можно вслух назвать знаки препинания, — это данные распознавания, а не интерфейс, поэтому вместе с интерфейсом мы их не переводили. А язык интерфейса и язык речи — разные вещи: на английском Маке можно диктовать по-украински. Одно на другое не влияет.</p>
<p>Тексты системных запросов разрешений лежат в отдельных файлах, потому что эти окна рисует сама macOS. После ручной смены языка новый язык в них появится со следующего запуска.</p>
<h2 id="на-сайте">На сайте</h2>
<p>У каждого языка теперь свой адрес: корень для английского, /ru/ для русского, /uk/ для украинского. Текст лежит в самой странице, а не подставляется скриптом после загрузки, поэтому поисковики читают каждый язык отдельно.</p>
<p>Сначала язык на корневом адресе выбирался по браузеру. Но посетитель из Украины с русским или английским браузером остался бы на английской странице, а мы хотели, чтобы для посетителей из Украины первой открывалась украинская версия. Поэтому теперь сайт смотрит ещё и на страну посетителя. Когда вы один раз нажали переключатель языка, ваш выбор побеждает при всех следующих заходах.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Стилевые пресеты без облака: что мы измерили</title>
      <link>https://verbaide.com/ru/blog/style-presets-on-device/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/style-presets-on-device/</guid>
      <pubDate>Fri, 07 Aug 2026 12:00:00 GMT</pubDate>
      <description>Встроенная модель Apple переписывает диктовку в нужном тоне. Русского она не знает, поэтому текст идёт через английский: напрямую 0 раз из 30.</description>
      <content:encoded><![CDATA[<p>Вы диктуете сырую мысль, а приложение может переписать её в выбранном тоне, прежде чем она попадёт в поле: нейтральном, дружелюбном или деловом. Переписывает языковая модель, которую Apple встроила в macOS 26. Текст не покидает Мак. Прежде чем это строить, мы измерили, работает ли оно для русского.</p>
<h2 id="пробный-прогон">Пробный прогон</h2>
<p>Перед тем как что-то строить, мы сделали одноразовый опыт. Мы написали десять правдоподобных деловых фраз по-русски: короткий ответ в чате, вежливый отказ, просьба коллеге, несколько с английскими терминами внутри. И прогнали их через модель в разных тонах, в том числе намеренно крайних вроде пирата или мелодрамы, чтобы разницу было легко увидеть.</p>
<p>Тут был очевидный подвох. Модель поддерживает 23 языка, и русского среди них нет. Но модель может выдать гладкий текст и на незнакомом языке, угадывая по знакомым кускам слов, а на глаз хорошую догадку от настоящего понимания не отличить. Поэтому мы договорились считать подозрительную гладкость поводом для сомнений, а не доказательством качества.</p>
<p>Вердикт живого прогона: качество годится, бесплатно, работает без сети. У модели есть и жёсткий предел: 4096 токенов на инструкцию, входной текст и ответ вместе.</p>
<h2 id="0-из-30">0 из 30</h2>
<p>Главный вопрос был про прямой путь: русский текст на входе, русский текст в другом тоне на выходе. Мы посчитали честно, с журналом, который записывает, каким путём получился каждый результат. Десять фраз в трёх тонах дали 30 попыток. Прямой путь не сработал ни разу. Все 30 ушли в запасной, и запасной ни разу не подвёл.</p>
<p>Запасной путь идёт через английский. Русский текст переводится на английский переводчиком Apple, английский переписывается в выбранном тоне, и результат переводится обратно. Цепочка заканчивается простой страховкой: если любой шаг не удался или нужного языкового пакета нет, вы получаете свой исходный текст, а не половину результата. А для клавиши «без перевода» по ошибке никогда не вставится английский текст.</p>
<p>Прямую попытку мы всё равно оставили в коде. Русский ожидается в следующем поколении модели, которое придёт с macOS 27. Когда это случится, прямой путь заработает без единой нашей правки. До тех пор он стоит доли секунды на каждую неудачную попытку, и мы с этим согласились.</p>
<h2 id="что-пошло-не-так-при-живой-проверке">Что пошло не так при живой проверке</h2>
<p>Дружелюбный тон иногда отвечал на текст, а не переписывал его: приветствие, никому не нужный комментарий, предложение помочь. Хуже всего это было на коротких фразах. Мы добавили явную инструкцию «ты переписываешь, а не отвечаешь» и затем поставили её во все тона, потому что сбой не зависел от тона. Ещё одна ловушка: когда модель упирается в предел длины, она останавливается без ошибки и отдаёт оборванный текст как нормальный. Мы проверяем, заканчивается ли ответ как предложение, и если нет — откатываемся.</p>
<p>Escape отменяет стилизацию в любой момент. 7 августа на панели диктовки появился переключатель стиля, а инструкции для каждого тона можно редактировать.</p>
<p>Сегодня: стили работают на небольшой модели, которую приложение скачивает по вашей просьбе, так что модель Apple больше не нужна.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Диктовка в любое поле и секретарь</title>
      <link>https://verbaide.com/ru/blog/dictation-and-secretary/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/dictation-and-secretary/</guid>
      <pubDate>Wed, 05 Aug 2026 12:00:00 GMT</pubDate>
      <description>Как работают диктовка по сочетанию клавиш и «секретарь» для долгой речи — и чем нам помешало то, что русское распознавание Apple не ставит знаков препинания.</description>
      <content:encoded><![CDATA[<p>До этой недели приложение слушало чужую речь. Теперь оно слушает и вашу. Вы говорите по-русски, а текст появляется там, где стоит курсор: как сказано или переведённый на английский. Мы шли к этому тремя шагами.</p>
<h2 id="шаг-1-русский-и-английский-одновременно-3-августа">Шаг 1: русский и английский одновременно (3 августа)</h2>
<p>Первая задача — слушать смешанную английскую и русскую речь для живых субтитров. В английском распознавателе Apple русского нет вообще. Мы проверили список языков, которые он поддерживает на Маке: их 30, и русского среди них нет. Русский живёт в другом распознавателе из того же фреймворка — в том, что сделан для диктовки. Поэтому мы запускаем оба сразу на одном звуке, а для каждой фразы выбираем тот, который увереннее в услышанном. Русская фраза остаётся как есть и не переводится; английская переводится на русский. На одну фразу выбирается один язык: распознаватель не умеет переключаться посреди фразы, поэтому чужое слово внутри предложения записывается на слух языком-победителем.</p>
<p>У русского распознавателя есть недостаток, который мы измерили в тот же день: он не ставит знаков препинания, даже если их попросить. Предложение приходит одной строкой без точек. Читать такое неудобно, а переводить ещё хуже: просьба «перепроверь» превратилась в «I’ll double-check» — обещание вместо просьбы. Поэтому диктовка им не пользуется: русская диктовка работает на отдельной модели, Parakeet, которая сама ставит знаки препинания. Пара распознавателей выше обслуживает живые субтитры.</p>
<h2 id="шаг-2-диктовка-по-сочетанию-клавиш-4-августа">Шаг 2: диктовка по сочетанию клавиш (4 августа)</h2>
<p>Два сочетания. Option-Пробел вставляет в поле под курсором то, что вы сказали, как есть. Option-Control-Пробел сначала переводит на английский. Текст вставляется одним куском, когда вы заканчиваете. У вставки есть защита: если в поле что-то выделено или активно поле пароля, она не затирает всё подряд. Голосовые знаки препинания тоже работают: назвали знак — получили знак.</p>
<h2 id="шаг-3-секретарь-5-августа">Шаг 3: секретарь (5 августа)</h2>
<p>Третье сочетание, Option-Command-Пробел, запускает долгий сеанс. Вы говорите сколько нужно, с паузами и отвлечениями, а каждый распознанный кусок сразу вставляется в то поле, где вы начали. Можно переключиться в другую программу: текст по-прежнему идёт на исходное место.</p>
<p>Это обещание требует осторожности. Перед каждой вставкой приложение проверяет, что программа-адресат ещё работает, что фокус остался в том же поле (а не в другом поле той же программы, например в строке поиска), что там ничего не выделено и что система не в режиме ввода пароля. Если фокус ушёл, кусок ждёт, а на панели появляется сообщение — он не вставляется куда попало. Сеанс завершается тем же сочетанием, крестиком на панели или через 15 минут.</p>
<p>Клавишу Escape мы намеренно не перехватываем на весь сеанс. Иначе Escape перестал бы работать во всех остальных программах, пока вы диктуете, а сеанс длится минутами. Завершить его можно крестиком на панели.</p>
<p>Одна ошибка, найденная 5 августа: в чат-приложениях на Electron вставка молча не срабатывала, если раскладка клавиатуры была не латинской. Теперь на мгновение вставки мы переключаемся на латинскую раскладку.</p>
<p>Сегодня: оба способа слились в одну диктовку. Держите клавишу — фраза целиком, нажмите коротко — секретарь. Оба бесплатны.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Почему мы не взяли диктовку Apple для русского</title>
      <link>https://verbaide.com/ru/blog/why-parakeet/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/why-parakeet/</guid>
      <pubDate>Mon, 03 Aug 2026 12:00:00 GMT</pubDate>
      <description>Русская диктовка Apple не ставит знаки препинания. Это ломает перевод и чтение, поэтому для русского мы взяли модель Parakeet.</description>
      <content:encoded><![CDATA[<p>macOS умеет распознавать русскую речь, но текст приходит без запятых, точек и вопросительных знаков. Сегодня мы подключили для русского другой распознаватель — модель Parakeet. Вот зачем.</p>
<h2 id="что-apple-даёт-для-русского">Что Apple даёт для русского</h2>
<p>У Apple два движка распознавания. Новый, SpeechAnalyzer, мы используем для английского. Для русского у Apple есть только старый движок диктовки, и знаки препинания он не ставит. На выходе одна длинная лента слов.</p>
<p>Возьмём фразу: «Привет как дела сегодня хорошая погода я хочу пойти на прогулку». Ничто не показывает, где кончается одно предложение и начинается другое. Читать можно, но медленно, а перед отправкой текст приходится править вручную.</p>
<h2 id="почему-знаки-препинания-важны-для-нас">Почему знаки препинания важны для нас</h2>
<p>Они важны дважды. Первое — чтение: текст без знаков утомляет, а диктовка, после которой вы сами расставляете все запятые, возвращает то время, которое сэкономила. Второе — перевод. Наше приложение умеет переводить то, что вы надиктовали, а переводчику нужно видеть, где кончаются предложения. Получив бесконечную ленту слов, он угадывает, и ошибается так, что вы не заметите, пока не прочтёте оба текста.</p>
<p>Поэтому движок без пунктуации не годился для главного сценария: сказать по-русски и получить чистый русский текст или чистый английский.</p>
<h2 id="что-мы-выбрали">Что мы выбрали</h2>
<p>Parakeet TDT v3 — модель распознавания речи от NVIDIA. В ней 0,6 миллиарда параметров, она понимает русский и другие европейские языки и сама ставит знаки и заглавные буквы. На Маке мы запускаем её через библиотеку FluidAudio, которая готовит модель для чипа Apple. Модель скачивается, когда приложению впервые нужна, с huggingface.co. Сама речь остаётся на вашем Маке.</p>
<p>Это настоящая цена. Распознаватель не из системы — это загрузка и зависимость, которую нам поддерживать, а движок Apple был бы проще. Мы пошли на это, потому что иначе получился бы текст, который ломается уже на первой границе предложения.</p>
<h2 id="чего-мы-не-утверждаем">Чего мы не утверждаем</h2>
<p>Мы не сравнивали модель со всеми распознавателями на рынке. Мы сравнили её с тем, что macOS предлагает для русского, и в этом сравнении вопрос решила пропавшая пунктуация. Насколько точно она работает на вашем голосе и вашей лексике — это мы будем и дальше измерять и рассказывать, что нашли.</p>
<p>Сегодня: приложение скачивает нашу собственную дообученную версию Parakeet, а настройка описана в разделе <a href="/ru/docs/languages-and-models/">языки и модели</a>.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Перевод текста под курсором мыши</title>
      <link>https://verbaide.com/ru/blog/translate-under-the-cursor/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/translate-under-the-cursor/</guid>
      <pubDate>Thu, 30 Jul 2026 12:00:00 GMT</pubDate>
      <description>Зажмите две клавиши, наведите курсор на английский текст в любой программе — и рядом появятся перевод и словарная статья. Как это устроено внутри.</description>
      <content:encoded><![CDATA[<p>Субтитры закрывают речь. Но большая часть английского, который мы встречаем, письменная: страница, чат, код-ревью. Сегодня приложение научилось переводить предложение под курсором мыши в любой программе.</p>
<h2 id="как-это-работает">Как это работает</h2>
<p>Вы зажимаете сочетание клавиш и наводите курсор на английский текст. По умолчанию это Option и Command. Рядом с курсором появляется небольшая плашка из трёх блоков: оригинал мелким шрифтом, под ним русский перевод, а третьим — словарная статья по слову под курсором. Слово ищем по-английски, а не по его переводу: толкование английского слова полезнее. Системный словарь сам приводит слово к основной форме, так что по «caching» находится «cache».</p>
<p>Если вы уже выделили фразу и курсор стоит внутри выделения, переводится всё выделение, а не одно предложение. Именно внутри: иначе старое выделение в другом месте текста перебивало бы всё, на что вы наводите потом, и было бы непонятно, почему переведено не то. Очень длинное выделение обрезается до 600 символов по границе слова: выделить весь документ через Command-A можно, но переводить его целиком медленно и бессмысленно.</p>
<p>По умолчанию режим выключен. Ему нужно разрешение «Универсальный доступ», а просить разрешение у человека, который про эту функцию не спрашивал, мы не хотим.</p>
<h2 id="как-читать-текст-не-глядя-на-экран">Как читать текст, не глядя на экран</h2>
<p>Очевидный способ — распознавать картинку экрана. Тогда в строке меню навсегда зажёгся бы фиолетовый индикатор записи экрана. Сначала мы проверили, что отдаёт системный интерфейс доступности. В браузере, редакторе кода и мессенджере, которые мы пробовали, он выдаёт предложение точно в позиции курсора. Запись экрана не понадобилась.</p>
<p>Труднее всего пришлось с браузерами. Если выделение захватывает заголовок и абзац, интерфейс доступности возвращает одну плоскую строку, и заголовок слипается со следующим текстом. Первое исправление читало шрифты выделения и собирало структуру по размерам. Оно работало, но было обходным путём. Лучший источник нашёлся в буфере обмена: браузеры кладут туда текст с полной разметкой. Поэтому приложение посылает Command-C активной программе, читает копию с разметкой и возвращает прежнее содержимое буфера. Копию оно сверяет с тем, что вернул интерфейс доступности, чтобы не показать текст из другого окна. Заголовки, списки и жирный шрифт сохраняются.</p>
<p>Переводчик не сохраняет метки вроде «##» и дефисов списка. Мы снимаем их, переводим текст и ставим на место. Если переводчик вернул другое число строк, показываем его ответ как есть.</p>
<h2 id="закреплённое-окно">Закреплённое окно</h2>
<p>Булавка в углу плашки превращает её в обычное окно. Оно не исчезает, его можно растянуть, выделять текст мышью и искать выделенное слово в словаре. У каждого блока свои кнопки «мельче» и «крупнее», размер запоминается. Кнопка с динамиком читает блок вслух. Голос мы выбираем по алфавиту, а не системным определителем языка: он принял слово «масштаб» за украинское, а украинского голоса на Маке нет, и озвучка молча не сработала бы. Текст, где есть хотя бы одна кириллическая буква, читается русским голосом.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Первая сборка: живые субтитры с переводом</title>
      <link>https://verbaide.com/ru/blog/first-build-live-subtitles/</link>
      <guid isPermaLink="true">https://verbaide.com/ru/blog/first-build-live-subtitles/</guid>
      <pubDate>Wed, 29 Jul 2026 12:00:00 GMT</pubDate>
      <description>За один день мы собрали приложение для строки меню: оно слушает выбранную программу или микрофон, пишет английские субтитры и переводит их на русский на Маке.</description>
      <content:encoded><![CDATA[<p>Сегодня заработала первая версия нашего приложения. Вы выбираете программу, которая играет звук, или микрофон. Приложение распознаёт английскую речь и показывает её в небольшом окне, а под каждой строкой — русский перевод. Всё происходит на самом Маке.</p>
<h2 id="что-оно-умеет">Что оно умеет</h2>
<p>Приложение живёт в строке меню. В меню — список программ, которые можно слушать, и микрофоны. Программы, которые сейчас молчат, из списка не пропадают: видеозвонок ещё не начался, вкладка браузера на паузе, а выбрать их нужно заранее. Те, что играют звук, стоят первыми.</p>
<p>Субтитры выводятся в окне поверх всех остальных. Его можно перетащить за фон и растянуть за уголок, положение и размер запоминаются. В окне можно показывать только английский, только русский или оба сразу — английская строка сверху. Шрифты, цвета и прозрачность фона настраиваются в отдельном окне.</p>
<p>Когда вы нажимаете «Остановить», сессия сохраняется целиком. Окно «Недавние транскрибации» хранит последние 50 сессий, любую можно скопировать текстом. Сессия, в которой никто ничего не сказал, не сохраняется.</p>
<h2 id="два-решения">Два решения</h2>
<p><strong>Как поймать звук одной программы.</strong> Обычный путь — фреймворк записи экрана. Мы его не взяли: он просит разрешение на запись экрана и держит в строке меню индикатор записи всё время работы. Мы используем системный способ подключиться к звуку одного процесса. У него своё разрешение и нет экранного индикатора. Браузеры и мессенджеры играют звук из нескольких служебных процессов, поэтому мы группируем их по программе, которой они принадлежат, и слушаем все сразу.</p>
<p><strong>Не ждать конца фразы.</strong> Человек говорит предложение четыре-восемь секунд, и пустой экран всё это время выглядит как поломка. Поэтому мы показываем растущий текст. Распознавание Apple в быстром режиме отдаёт новый текст примерно раз в секунду; без этого режима он приходил раз в 3,8 секунды. Последние слова ещё мигают и поправляются, но это лучше ожидания.</p>
<p>Перевод приходит позже распознавания, и тут была главная ловушка. Текст прилетает пачками, а первое обновление пачки часто обрывок вроде «So». Мы ждём 150 миллисекунд и переводим самое свежее обновление. У каждого обновления есть номер, а перевод более старого текста выбрасывается — опоздавший ответ не затрёт новую строку.</p>
<h2 id="что-в-комплекте">Что в комплекте</h2>
<p>В тот же день появились значок приложения и установщик: образ диска с короткой инструкцией внутри и готовый рецепт для установки через Homebrew. Пока приложению нужна macOS 26 — оно использует новое распознавание речи от Apple. Просит три разрешения: звук других программ, микрофон и распознавание речи.</p>
<p>Эта версия понимает только английский и переводит только на русский. Следующий шаг — текст под курсором мыши.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
