MumbleFlow: умная диктовка без облака на связке Whisper + LLaMA
MumbleFlow — десктопное приложение, которое цепляет whisper.cpp к llama.cpp для диктовки в реальном времени. Всё работает локально на Mac через Metal. Разбираем архитектуру, выбор моделей и подводные камни.
Проблема: Whisper транскрибирует, но не думает
Каждый, кто пробовал диктовать текст через Whisper, знает ощущение: модель отлично распознаёт речь, но на выходе — поток сознания. «Эээ», «ну», «то есть», повторы слов, отсутствие пунктуации. Технически всё верно — Whisper записал именно то, что вы сказали. Проблема в том, что люди так не пишут.
Стандартное решение — отправить текст в облачный API. Но это добавляет задержку, стоит денег и отправляет вашу речь на чужие серверы. Для заметок или рабочих черновиков — избыточно и неуютно.
MumbleFlow предлагает другой подход: объединить whisper.cpp и llama.cpp в одном десктопном приложении, где вся обработка происходит локально на Mac через Metal.
Архитектура пайплайна
Два этапа обработки
Этап 1 — транскрипция (whisper.cpp). Микрофон захватывает аудио, whisper.cpp преобразует его в сырой текст. На выходе — дословная расшифровка со всеми артефактами живой речи.
Этап 2 — очистка (llama.cpp). Сырой транскрипт передаётся в локальную языковую модель. Она убирает заполнители («эм», «ну», «как бы»), исправляет пунктуацию, устраняет повторения и перестраивает структуру предложений.
Оба компонента используют Metal-ускорение на Apple Silicon. На M1/M2/M3 оба этапа выполняются с минимальной задержкой.
Выбор модели для очистки
По умолчанию используется Llama 3.2 3B. Задача здесь не генеративная: модели не нужно придумывать контент, только переформатировать существующий. Для этого достаточно маленькой модели.
Альтернативы из обсуждений: Llama 3.2 1B — ещё быстрее, но хуже с пунктуацией. Qwen 2.5 3B — хорошие результаты для неанглийских языков. Phi-3 Mini — компактная, но иногда «додумывает» за говорящего.
Tauri вместо Electron: 15 МБ до загрузки моделей
MumbleFlow собран на Tauri 2.0 — фреймворке для десктопных приложений на Rust с веб-фронтендом. Tauri использует системный WebView вместо встроенного Chromium: всё приложение весит около 15 МБ до загрузки моделей. Типичное Electron-приложение стартует от 150–200 МБ.
Маленький бинарник означает быстрый запуск и меньший расход памяти — ресурсы, которые лучше отдать моделям.
Chunked mode vs. silence detection
Silence detection — стандартный подход для транскрипции записей. Whisper ждёт паузу, потом обрабатывает сегмент. Для живой диктовки создаёт проблему: вы думаете, подбираете слово — Whisper решает, что фраза закончилась. Результат ощущается как лаг с рваным ритмом.
Chunked mode нарезает аудио на фиксированные отрезки (2–5 секунд), каждый обрабатывается отдельно. Предсказуемый ритм, стабильная задержка. Текст появляется порциями с равномерными интервалами. Для задачи «быстро набросать текст голосом» — правильный выбор.
Сценарии использования
- Рабочие черновики — диктовать первый драфт быстрее, чем печатать; MumbleFlow убирает необходимость вычищать вручную
- Заметки и дневник — голосовые заметки без облака, мысли не проходят через чужие серверы
- Протоколы встреч — запись разговора с очисткой в читаемый текст
- Доступность — для людей с ограниченной подвижностью рук локальное решение без подписки критически важно
Ограничения
Качество зависит от модели. Сложные случаи (технический жаргон, переключение языков) могут потребовать более крупную модель.
Требует Apple Silicon. Metal-ускорение — ключевое преимущество и ограничение. На Intel Mac всё будет значительно медленнее.
Модели нужно загружать отдельно. whisper-large-v3 ~1.5 ГБ, Llama 3.2 3B в Q4 ~2 ГБ. Суммарно ~3.5 ГБ.
Русский язык — отдельная история. Whisper поддерживает русский, но качество очистки через Llama 3.2 3B для русского текста хуже, чем для английского. Стоит экспериментировать с Qwen.
Паттерн, важнее продукта
MumbleFlow интересен не столько как продукт, сколько как архитектурный паттерн. Цепочка «специализированная модель → языковая модель для постобработки» применима широко:
- OCR → LLM для структурирования распознанного текста
- Генерация кода → LLM для ревью и рефакторинга
- Перевод → LLM для стилистической адаптации
Общая схема: первая модель делает тяжёлую специализированную работу, вторая — приводит результат в человекочитаемый вид. На Apple Silicon с Metal обе работают локально без заметных задержек.
MumbleFlow показывает: для повседневных задач локальный AI уже не уступает облачному по качеству, выигрывая в приватности и отсутствии подписки.