Voice Text Input — Голосовой наборщик текста
Голосовой набор текста в любое активное окно — Telegram, браузер (VK),
Word, куда угодно. Существует в двух видах:
Скажите командное слово («напиши») — движок слушает и печатает речь в то
окно, где стоит курсор, по мере говорения. Скажите «отправить» —
нажимается Enter, и сообщение уходит, а диктовка продолжается без нового
«напиши» (непрерывный набор). Скажите «закончить» — Enter и конец
диктовки. Скажите «отмена» — набранное стирается. «с новой строки» —
перенос строки (в мессенджерах сообщение не отправляет). По умолчанию всё
локально, без облака.
Как это работает
микрофон → Vosk (всегда слушает, ~50 МБ ОЗУ)
├─ ловит командные слова (нечётко: «напишы» тоже сработает)
└─ печатает живой текст мгновенно
после каждой паузы сегмент перепроверяет faster-whisper (int8, CPU)
└─ лучший текст с пунктуацией заменяет черновик Vosk
- Печать — WinAPI
SendInput с Unicode: русские буквы вставляются независимо
от раскладки, в любом приложении.
- Движок настраивается:
faster-whisper (по умолчанию, качественнее) или
vosk (только офлайн-модель, легче и без уточнения).
- Пунктуация: в режиме faster-whisper — автоматическая; в режиме vosk —
голосом («запятая», «точка», «с новой строки», «вопросительный знак»…).
Настройки (Astra → Плагины → Voice Text Input)
Командные слова распознаются нечётко и только в конце/начале фразы: слово
«отправить» внутри диктуемого текста отправку не вызовет.
Отдельное приложение (без Astra)
Тот же голосовой наборщик — простым exe-файлом, Astra не нужна:
Voltur792/VoiceTypergithub.com — скачайте
VoiceTyper.exe из релизов, запустите, скажите «напиши привет мир». Окно с
кнопкой-микрофоном и настройками, значок в трее, тёмная/светлая тема. Ядро
распознавания у приложения и плагина общее.
Почему без «Астра, напиши»: плагин начинает набор по своему командному
слову — «напиши …», без обращения к Astra. Фраза с «Астра» принадлежит
голосовому ассистенту самой Astra: плагин на неё не реагирует и не мешает ей
отвечать. Никаких настроек в Astra выключать не нужно — раньше в плагине были
wake-слова, и инструкция к ним заставляла пользователей отключать активацию по
фразе, после чего Astra переставала отвечать; с версии 1.1.0 wake-слов нет.
Yandex SpeechKit (движок yandex)
Облачное распознавание SpeechKit v3: быстрее уточнения whisper, автоматическая
пунктуация, не занимает CPU. Нужен API-ключ:
- В Yandex Cloud создать сервисный аккаунт с ролью
ai.speechkit-stt.
- Ему — API-ключ (консоль → Сервисный аккаунт → Создать новый ключ → API-ключ).
- Вставить ключ в настройках плагина, выбрать движок
yandex.
Единственный облачный движок со стримингом: финальный текст приходит
потоком. Ключ передаётся только в Yandex Cloud.
OpenAI и совместимые (движок openai)
Работает с любым сервером OpenAI-аудио-API: сам OpenAI, Groq (бесплатный
tier), локальный whisper.cpp-сервер. Поля: API-ключ, Base URL, модель
(whisper-1, gpt-4o-mini-transcribe, …). Пример для Groq: Base URL
https://api.groq.com/openai/v1, модель whisper-large-v3.
Google Cloud Speech-to-Text (движок google)
REST speech:recognize с API-ключом: в Google Cloud включить Speech-to-Text
API, создать ключ (Credentials → API key). Пунктуация включается
автоматически.
Про облачные движки в диктовке: живой черновик всё равно печатает Vosk
(облако не умеет печатать по мере речи, кроме Яндекса в STT-потоке Astra);
облако уточняет текст после пауз — как это делает whisper локально. Без
ключа движок автоматически подменяется на vosk-фолбэк. Выбор движка действует
и на Astra, когда плагин служит её распознавателем.
Установка
Из каталога Astra: Плагины → Browse → «Voice Text Input» → Установить.
Режим разработчика (sideload):
- В Astra: Настройки → Приватность → включить «Разрешить
неподписанные плагины».
- Плагины → Dev → в поле «Load a plugin» вставить путь к папке
репозитория и нажать загрузку.
- Плагин стартует сразу. После перезапуска Astra плагин, загруженный из
папки, возвращается выключенным — включите его во вкладке Installed.
Зависимости ставит сама Astra: она находит Python, создаёт окружение плагина
из requirements.lock и запускает код в нём. В обязательном наборе только лёгкие
пакеты (SDK, vosk, sounddevice, numpy) — если установка всё же оборвалась,
плагин сам добирает недостающее при старте и пишет об этом в лог одну
понятную строку. faster-whisper в обязательный набор не входит: он
доводится до установки в фоне при первом же использовании движка
faster-whisper (~200 МБ, один раз), а до этого диктовка работает на Vosk.
Модели скачиваются отдельно (см. «Модели»).
Модели
Лежат в models/ (не попадают в git и в бандл):
models/vosk-model-small-ru-0.22 — alphacephei.com/vosk/models
- faster-whisper
small — скачивается сам (HuggingFace) при первой загрузке
движка; чтобы заранее: .venv\Scripts\python.exe scripts\smoke_components.py
Проверка всех компонентов (модели, микрофон, печать):
.venv\Scripts\python.exe scripts\smoke_components.py
Разработка
.venv\Scripts\python.exe -m pytest -q # модульные тесты
astra-plugin check . --strict # манифест
astra-plugin test . # конформити (mock-демон)
astra-plugin dev . # hot-reload в запущенную Astra
Известные ограничения
- Окна, запущенные от администратора, не принимают синтетический ввод
(защита UIPI Windows) — запускайте Astra с теми же правами, что и целевое
приложение, либо не диктуйте в админские окна.
- Если в Astra включено постоянное голосовое прослушивание, она слышит те же
фразы — рекомендуется режим активации по кнопке/хоткею.
- Отмена стирает ровно то, что напечатал плагин; ручные правки текста в окне
она не учитывает.
- Переключение диктовки через ИИ действует до следующего сохранения настроек
в Astra.
Лицензия
MIT © Voltur
Поддержать автора
Если голосовой наборщик оказался полезным, можно поддержать разработку:
boosty.to/voltur/donate