Локальная диктовка на Whisper: как я сделал PasteTalk и почему это удобнее облачных сервисов
Разработчик с Habr создал PasteTalk — локальную диктовку на базе Whisper для Windows, телефона и Telegram. Голосовой ввод не отправляет звук в облако, работает по горячей клавише и учитывает потребности людей с ограниченными возможностями. Разбираем архитектуру, цифры и типичные ошибки.

Диктовать текст голосом — в разы быстрее, чем печатать, особенно когда мысль нужно зафиксировать мгновенно. Но большинство решений для распознавания речи отправляют аудио на сторонние серверы, что вызывает вопросы приватности. Автор публикации на Habr под ником [автор] столкнулся с этой проблемой и создал PasteTalk — полностью локальную систему диктовки на базе Whisper, которая работает на Windows, Android и в Telegram. В этой статье разбираем, как она устроена, какие подводные камни скрывает и почему доступность для людей с ограниченными возможностями может сделать продукт лучше для всех.
Что такое PasteTalk и как он работает
PasteTalk — это набор инструментов для голосового ввода, который работает полностью локально. Основной компонент — программа для Windows, которая запускается в фоновом режиме и ожидает нажатия горячей клавиши. Когда пользователь нажимает её, начинается запись голоса, которая затем передаётся на локальный сервер для распознавания. Сервер использует модель Whisper от OpenAI, которая преобразует аудио в текст. Готовый текст автоматически вставляется в активное приложение — как если бы вы его напечатали.
Ключевая особенность — весь процесс происходит на вашем устройстве или в вашей локальной сети. Звук не покидает пределы вашего компьютера или домашнего сервера, что гарантирует конфиденциальность. Это особенно важно для тех, кто работает с чувствительными данными или просто не хочет, чтобы их голосовые заметки анализировались сторонними сервисами.
Помимо Windows-клиента, PasteTalk включает мобильное приложение и Telegram-бота. Мобильное приложение разработано с учётом потребностей людей с ослабленным зрением: одна большая кнопка на весь экран, крупный шрифт и озвучивание ошибок. Автор признаётся, что эти «специальные» функции сделали приложение удобнее и для обычных пользователей.
Предыстория и контекст
Идея создать PasteTalk возникла не на пустом месте. Автор давно искал удобное решение для диктовки, но ни одно не удовлетворяло его требованиям. Большинство популярных сервисов, такие как голосовой ввод Google или Яндекс.Браузера, отправляют аудио на облачные серверы. Это не только потенциально небезопасно, но и требует постоянного интернет-соединения. В офлайн-режиме такие инструменты бесполезны.
Существовали и локальные решения, но они были либо слишком сложны в настройке, либо не обеспечивали должного качества распознавания. Whisper от OpenAI стал прорывом в этой области: он показывает высокую точность даже для русского языка и может работать локально. Однако из коробки Whisper — это лишь библиотека, а не готовый инструмент. Автору пришлось самостоятельно разработать обвязку: интерфейс, обработку аудио, интеграцию с системой.
Отдельным стимулом стала мама автора, которая из-за слабого зрения почти не может печатать на телефоне. Она стала своего рода «тестовым пользователем» с самыми жёсткими требованиями. Именно её потребности подтолкнули к разработке мобильного приложения с максимально простым интерфейсом.
Чем это отличается от облачных сервисов диктовки?
Главное отличие — локальность. Все облачные сервисы, будь то встроенные голосовые помощники или специализированные приложения, передают аудио на серверы разработчика. Это означает, что ваша речь может быть записана и проанализирована, что для некоторых является недопустимым. PasteTalk не имеет этой проблемы: даже если интернет отключён, диктовка продолжит работать (в пределах локальной сети).
Второе отличие — скорость. В облачных сервисах задержка зависит от скорости передачи данных и загрузки серверов. Локальное распознавание на современном оборудовании может быть даже быстрее, особенно если использовать GPU-ускорение. Автор отмечает, что на его машине с видеокартой среднего класса распознавание занимает меньше секунды.
Третье отличие — настройка. Облачные сервисы, как правило, не позволяют тонко настраивать параметры распознавания. PasteTalk даёт возможность выбирать модель Whisper, настраивать горячие клавиши, использовать словари и даже интегрироваться с Telegram. Это делает инструмент гибким для самых разных сценариев.
Технические детали: как устроена система
Архитектура PasteTalk включает три основных компонента: клиент для Windows, сервер на базе Python и мобильное приложение с Telegram-ботом. Клиент для Windows написан на C и использует Windows API для перехвата горячих клавиш и вставки текста. Он записывает звук с микрофона в формате WAV и отправляет его на сервер по HTTP.
Сервер реализован на Python и использует библиотеку faster-whisper — оптимизированную версию Whisper, которая работает значительно быстрее и требует меньше памяти. Автор выбрал эту библиотеку, чтобы обеспечить приемлемую скорость даже на слабых машинах. Для распознавания используется модель «small» или «medium» в зависимости от мощности сервера. В статье упоминаются конкретные цифры: на сервере с GPU от NVIDIA распознавание занимает около 0,5 секунды, на CPU — до 2 секунд.
Мобильное приложение для Android написано на Kotlin и поддерживает минимальную версию API 26 (Android 8.0). Оно имеет два режима: «быстрая заметка» и «диктовка для вставки». В первом случае текст сохраняется в приложении, во втором — отправляется на сервер и затем может быть скопирован в буфер обмена или отправлен в Telegram. Приложение использует ту же модель распознавания, что и сервер, поэтому качество одинаковое.
Telegram-бот реализован на Python и позволяет отправлять голосовые сообщения боту, который возвращает текст. Это удобно для тех, кто хочет диктовать с любого устройства, где есть Telegram, не устанавливая дополнительное ПО.
Кого затронет и как
PasteTalk будет полезен широкому кругу пользователей. В первую очередь это разработчики и IT-специалисты, которые часто работают с длинными текстами: кодом, документацией, комментариями. Возможность быстро надиктовать мысль, не отвлекаясь на набор, экономит время и сохраняет поток.
Вторая группа — люди с ограниченными возможностями, для которых печать затруднена. Простое мобильное приложение с одной кнопкой может стать незаменимым помощником для слабовидящих или людей с нарушениями моторики. Автор подчёркивает, что такие «специальные» функции делают продукт удобнее для всех — это подтверждается практикой инклюзивного дизайна.
Третья группа — те, кто заботится о приватности. Юристы, врачи, журналисты, работающие с конфиденциальной информацией, могут диктовать без опасений, что их аудиозаписи попадут в чужие руки. Локальное распознавание исключает утечки через облачные сервисы.
Для русскоязычных пользователей важно, что Whisper хорошо поддерживает русский язык, а автор настроил систему так, чтобы она корректно обрабатывала окончания и пунктуацию. В статье упоминается, что в процессе разработки были исправлены четыре бага, каждый из которых «молча съедал наговорённый текст». Например, один из багов был связан с неправильной обработкой тишины в начале записи, из-за чего терялись первые слова.
Что будет дальше
Автор планирует развивать PasteTalk и уже выложил исходный код в открытый доступ. Это означает, что любой желающий может установить систему самостоятельно, адаптировать под свои нужды и предложить улучшения. В планах — добавить поддержку macOS, улучшить качество распознавания для специфической лексики и расширить функциональность Telegram-бота.
Вероятно, в ближайшее время появятся сторонние сборки и инструкции по установке, что сделает проект ещё доступнее. Также автор рассматривает возможность создания готовых установочных пакетов для Windows, чтобы пользователям не приходилось вручную настраивать окружение.
Итог
PasteTalk — это пример того, как можно решить проблему, которая кажется неразрешимой с помощью готовых решений, создав собственный инструмент. Он сочетает локальность, скорость и доступность, что делает его привлекательным для разных категорий пользователей. Если вы часто диктуете текст и цените приватность, стоит присмотреться к этому проекту.