Как собрать полностью локальную диктовку для русского языка на Mac: GigaAM, Whisper, Qwen и Apple

В 2026 году потребность в приватных и автономных голосовых интерфейсах стала особенно острой. Облачные сервисы диктовки (Google, Яндекс, Apple) удобны, но передают аудиозапись на внешние серверы, что вызывает вопросы конфиденциальности, особенно при работе с конфиденциальными документами или личными заметками. Кроме того, они требуют постоянного интернет-соединения и создают задержки.

Недавно на Habr появилась подробная статья, в которой разработчик поделился опытом сборки полностью локальной системы диктовки для русского языка на Mac. В решении использованы сразу несколько передовых моделей: GigaAM от Сбера (для распознавания речи), Whisper от OpenAI (как альтернативный движок), Qwen от Alibaba (для постобработки и коррекции текста) и нативные возможности Apple (Core ML, Metal Performance Shaders). Источник

В этом материале мы разберём, зачем нужна локальная диктовка, какие компоненты используются, как они взаимодействуют, и какие результаты можно получить уже сегодня. Статья будет полезна как разработчикам, так и продвинутым пользователям, которые хотят обрести полный контроль над голосовым вводом.

Зачем локальная диктовка на Mac?

Локальная обработка речи решает три ключевые проблемы:

  1. Приватность. Все аудиоданные остаются на устройстве. Никакие фрагменты голоса не покидают ваш Mac, даже для анонимной статистики.
  2. Автономность. Не нужен интернет. Можно работать в самолёте, в поездке или в зоне с нестабильной связью.
  3. Скорость. Исключается сетевая задержка: распознавание начинается сразу после окончания фразы. При правильной настройке время обработки не превышает нескольких сотен миллисекунд.

Однако до недавнего времени локальные решения для русского языка уступали облачным по качеству. Модели, обученные на русскоязычных датасетах, либо были слишком тяжёлыми, либо показывали низкую точность на специфической лексике (термины, имена, аббревиатуры). Статья на Habr описывает конфигурацию, которая обходит эти ограничения.

Компоненты системы: GigaAM, Whisper, Qwen и Apple

Автор статьи построил конвейер из четырёх основных блоков:

1. GigaAM — основное распознавание речи

GigaAM (Giga Automatic Model) — это модель от Сбера, предназначенная специально для распознавания русского языка. Она обучена на огромном корпусе русской речи, включая различные акценты, дикторские стили и шумовые условия. По словам разработчиков, GigaAM обеспечивает лучшее качество среди открытых моделей для русского языка, особенно на разговорной речи.

Модель запускается через библиотеку ctranslate2 или напрямую с помощью ONNX Runtime. Для Mac важно использование версии, оптимизированной под Apple Silicon: это позволяет задействовать нейронные блоки (Neural Engine) и ускорить инференс. Размер модели — около 1,2 ГБ, что приемлемо для современных Mac.

2. Whisper — резервный движок и диаризация

Whisper от OpenAI — универсальная модель распознавания речи, поддерживающая десятки языков, включая русский. В данной конфигурации Whisper используется как fallback (если GigaAM даёт низкую уверенность) и для диаризации — разделения аудиопотока на разных говорящих. Это полезно, если диктовка ведётся в шумном помещении или с участием нескольких человек (например, запись совещания).

Авторы статьи отмечают, что Whisper в версии large-v3 показывает сопоставимое с GigaAM качество на чистой речи, но уступает на специфических терминах. Поэтому они настроили динамическое переключение: если confidence score GigaAM ниже 0,8 — результат перепроверяется Whisper.

3. Qwen — постобработка и коррекция

Qwen (от Alibaba) — это большая языковая модель, которая используется для исправления грамматических ошибок, расстановки знаков препинания и форматирования распознанного текста. Сама диктовка может выдавать сырой поток слов с возможными оговорками, а Qwen превращает его в чистый, читаемый текст.

Для запуска Qwen локально используется версия Qwen2.5-7B-Instruct, квантированная до 4 бит (через llama.cpp). Это требует около 6 ГБ оперативной памяти, что на Mac с M2/M3 и 16 ГБ RAM вполне допустимо. Модель работает в режиме инференса, без дообучения. Промпт настраивается так, чтобы Qwen только исправлял ошибки, не меняя смысл.

4. Apple — аппаратное ускорение и системная интеграция

Сердцем системы выступают нативные возможности macOS. Распознавание через GigaAM и Whisper выполняется с помощью Core ML и Metal Performance Shaders. Автор конвертировал обе модели в формат .mlpackage и настроил выполнение на GPU (MPS). Это дало прирост скорости в 2–3 раза по сравнению с CPU.

Кроме того, используется микрофонный API macOS (AVAudioEngine) для захвата аудиопотока с минимальной задержкой. Клавиатурные шорткаты (например, двойное нажатие Fn) запускают и останавливают запись, а результат вставляется в активное текстовое поле — так же, как в родной диктовке Apple.

Практическая сборка: шаг за шагом

В статье подробно описан процесс сборки. Приведём ключевые этапы в обобщённом виде:

  1. Установка зависимостей. Python 3.11, PyTorch (MPS), transformers, ctranslate2, librosa, sounddevice. Для Qwen — llama-cpp-python с поддержкой Metal.
  2. Загрузка моделей. GigaAM (с Hugging Face), Whisper large-v3, Qwen2.5-7B-4bit. Для ускорения модели конвертируются в Core ML.
  3. Создание аудиопайплайна. Запись с микрофона ведётся фрагментами по 3 секунды, которые накладываются с перекрытием 50% для плавности. GigaAM обрабатывает каждый фрагмент, а Whisper — только при низкой уверенности.
  4. Постобработка через Qwen. Сырой текст (с вероятными ошибками) передаётся в Qwen с промптом: «Исправь грамматические ошибки и расставь знаки препинания. Не меняй смысл.» Полученный чистый текст вставляется в буфер обмена.
  5. Интеграция с macOS. Через NSEvent или CGEvent эмулируется вставка текста из буфера в активное приложение. Для удобства добавлен статусбар с индикатором записи.

Автор сообщает, что весь процесс от запуска записи до появления текста занимает менее 1 секунды на MacBook Air M2 (16 ГБ). Это быстрее, чем облачные аналоги, если учитывать сетевую задержку.

Сравнение моделей: таблица характеристик

Модель Назначение Размер RAM (при работе) Точность на русском (по отзывам) Скорость (M2, GPU)
GigaAM Распознавание речи 1,2 ГБ ~2 ГБ Очень высокая (разговорная, термины) ~0,4x от реального времени
Whisper large-v3 Распознавание + диаризация 3,1 ГБ ~4 ГБ Высокая (чистая речь), средняя на специфике ~0,8x от реального времени
Qwen 2.5-7B Постобработка текста 4,1 ГБ (4-bit) ~6 ГБ Отлично справляется с коррекцией ~0,2x (на M2)

Результаты и примеры использования

В статье приводятся примеры распознавания зашумлённой речи, диктовки технических терминов (что особенно актуально для IT-специалистов) и длинных монологов. Фрагмент реального теста:

Исходный аудио: «Нужно оптимизировать запрос к базе данных используя индекс по полю user_id чтобы ускорить выполнение»
Распознанный GigaAM: «нужно атпимизировать запрос к базе данных используя индекс по полю user_id чтобы ускорить выполнение»
После Qwen: «Нужно оптимизировать запрос к базе данных, используя индекс по полю user_id, чтобы ускорить выполнение.»

Видно, что GigaAM хорошо справился с термином «user_id», но ошибся в слове «оптимизировать». Qwen исправил ошибку («атпимизировать» → «оптимизировать»), добавил запятые и заглавную букву.

Примеры использования:

  • Написание длинных текстов (статьи, письма) без отрыва рук от клавиатуры — только голосом.
  • Заполнение форм и ввод кода (диктовка идентификаторов, комментариев).
  • Создание заметок на ходу — быстрее, чем печатать.
  • Озвучивание команд для автоматизации (например, «открой терминал», «запусти тесты») — можно расширить через дополнительные скрипты.

Возможные проблемы и их решения

Авторы статьи столкнулись с несколькими типичными сложностями:

  • Высокая загрузка RAM при одновременном запуске всех моделей. Решение: последовательная обработка — сначала GigaAM, потом (если нужно) Whisper, затем Qwen. Каждая модель выгружается после завершения своего этапа.
  • Задержка при первом запуске. Модели загружаются в память с диска. Автор предзагружает все модели при старте приложения (это занимает около 10 секунд на M2). После этого диктовка работает с мгновенным откликом.
  • Конфликт с системной диктовкой. Для предотвращения дублирования системная диктовка отключается, а горячая клавиша переназначается через Hammerspoon или BetterTouchTool.
  • Шумоподавление. GigaAM и Whisper достаточно устойчивы к шумам, но для микрофона MacBook Air рекомендуется использовать внешний USB-микрофон или гарнитуру для лучшего качества.

Итоги и перспективы

Сборка локальной диктовки из описанных компонентов показывает, что к 2026 году полностью автономное голосовое управление на русском языке стало реальностью. GigaAM отлично распознаёт речь, Whisper страхует на сложных случаях, а Qwen превращает сырой текст в грамотный. Аппаратное ускорение от Apple делает это возможным на ноутбуке среднего уровня.

Конечно, решение требует некоторого технического опыта: нужно уметь работать с Python, конвертировать модели и настраивать окружение. Однако все компоненты открыты и доступны. Авторы статьи выложили конфигурационные файлы и промпты, что упрощает повторение.

Дальнейшее развитие — в сторону более лёгких моделей (специализированные дистилляты GigaAM, Qwen-3 с меньшим размером) и интеграции с жестами трекпада и Apple Pencil. Возможно, вскорее Apple добавит аналогичную функциональность нативно, но пока локальная DIY-сборка остаётся лучшим выбором для тех, кто ценит приватность и скорость.

Материал подготовлен на основе статьи пользователя Habr. Полный текст с кодом и ссылками доступен по адресу: Источник

← Все статьи

Комментарии