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, который не должен блокировать аудиопоток. Здесь ошибка слышна сразу.
Что получилось
Диктовка в любое приложение, расшифровка встреч с разделением говорящих и обработка текста — на устройстве, без обязательного облака.
Приложение готовится к публикации.