RU /EN
Обсудить проект
← Избранные проекты
Разбор проекта

Dictum

Локальная голосовая AI-утилита для macOS: диктовка, транскрибация, интервью и обработка текста без обязательного облака.

  • GigaAM v3 · MLX
  • Core Audio Process Taps
  • без diarization-модели
  • работает без облака

Что это

Голосовая утилита для macOS. Диктовка текста в любое приложение, расшифровка встреч, режим интервью с разделением говорящих и обработка текста моделью. Всё работает на устройстве; облачная модель подключается только если она нужна самому пользователю.

Почему появился

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

Локальный inference на Apple Silicon давно закрывает эту задачу по качеству. Не хватало не модели, а продукта вокруг неё: горячих клавиш, вставки текста в активное приложение, захвата звука встречи и хранения истории.

Что сделал

ML. GigaAM v3 через собственный MLX-порт для распознавания русской речи. Локальный Qwen для обработки текста. OpenAI-совместимый API — как опция, а не как условие работы.

Системная часть. Глобальные горячие клавиши, вставка результата через Accessibility API, захват системного звука через Core Audio Process Taps и Aggregate Device, IOProc и realtime ring buffer, собственный chunking аудио, SQLite для истории.

Что технически интересно

Главное решение в проекте — не модель, а архитектура захвата звука.

Режим интервью требует знать, кто из говорящих что сказал. Стандартный путь — diarization-модель, которая разделяет дорожку по голосам: ещё одна модель в поставке, ещё один источник ошибок, и качество, зависящее от акустики помещения.

Но на встрече источники звука уже разделены системой:

  • микрофон — это пользователь;
  • системный звук — это собеседник.

Достаточно писать их раздельно, и разметка говорящих получается точной по построению. Diarization-модель в Dictum не нужна.

Это тот случай, когда ML лучше не применять: задача надёжнее решается на уровне системных API, а не добавлением ещё одной модели.

Цена решения — не в ML, а в работе с Core Audio: process taps, aggregate device, IOProc-колбэки в реальном времени и ring buffer, который не должен блокировать аудиопоток. Здесь ошибка слышна сразу.

Что получилось

Диктовка в любое приложение, расшифровка встреч с разделением говорящих и обработка текста — на устройстве, без обязательного облака.

Приложение готовится к публикации.