TL; DR
- Построил полностью автономный локальный конвейер транскрипции звонков на Mac: от записи в Audio Hijack до саммари в репозитории и базе знаний G-Brain.
- Диаризация (разделение спикеров) ускорена в 16 раз: с 16 минут на CPU до 61 секунды благодаря переносу модели WeSpeaker/CoreML на Apple Neural Engine (ANE).
- Транскрипция через Parakeet TDT 0.6B v3 оптимизирована окном 60s с нахлестом 5s: 74 минуты речи расшифровываются за 6,4 минуты на Metal GPU с пиковым потреблением памяти всего 1,5 ГБ RAM.
- Двухканальная запись в Audio Hijack (Левый = микрофон, Правый = собеседники) дала 100% точность идентификации автора звонка без единого сбоя при перебиваниях.
Контекст
После каждого делового созвона (клиентские интервью, стратегические сессии, планирование) требуется зафиксировать договоренности, задачи и контекст. Делать это вручную — отнимает часы. Отправлять аудио в облачные сервисы — дорого при десятках часов звонков в месяц и небезопасно с точки зрения конфиденциальности клиентов.
Задача была сделать систему, которая работает полностью на локальном железе Mac, без единого облачного вызова на этапе ASR и без ручных действий.
Проблема
- Тормоза диаризации: Классический Pyannote на Python упирался в однопоточный CPU при расчете спектрограмм и извлечении эмбеддингов, тратя 16 минут на часовой звонок, пока остальные 11 ядер и нейрочип бездействовали.
- Таймауты Metal Shader на GPU: При попытке запустить диаризацию на GPU через MPS происходил GPU Command Buffer Timeout из-за слишком длинных окон обработки.
- Путаница при перебиваниях: Когда люди говорят одновременно, одноканальные модели часто смешивают реплики и не могут уверенно определить, кому принадлежит фраза.
Подход
- Перенос на Apple Neural Engine (ANE): Скомпилировали нативный Swift CLI на базе FluidAudio, использующий CoreML для сегментации и извлечения эмбеддингов WeSpeaker. Вычисления ушли на специализированный чип ANE — 74 минуты диаризируются за 61,3 секунды, кулеры ноутбука молчат.
- Оптимизация окна внимания Parakeet: Подобрали «золотую середину» нарезки аудио — 60 секунд с нахлестом 5 секунд. Это сократило квадратичную сложность матриц внимания $O (L^2)$ в 4 раза и уложило пиковое потребление RAM в 1520 МБ.
- Двухканальное стерео в Audio Hijack: Развели микрофон в левый канал, а звук Zoom/Meet — в правый. Скрипт транскрипции автоматически определяет стерео-формат, помечает левый канал как автора звонка (100% точность) и независимо диаризирует только правый канал.

- Сквозная интеграция с Hazel и CRM: Готовый Markdown подхватывается Hazel, прогоняется через LLM-суммаризатор для выделения Action Items и автоматически раскладывается по папкам проектов в Git и базе знаний G-Brain.
Результат
- Полное время обработки: 7 минут 35 секунд на 74 минуты аудио (в 10 раз быстрее реального времени).
- Стоимость: 0 рублей за облачные ASR-транскрипции.
- Приватность: Все сырые аудиозаписи и стенограммы остаются на локальном диске.
- Автоматизм: Никаких кнопок «загрузить» или «экспортировать» — всё происходит само в фоне сразу после завершения звонка.