Собственная практика (internal tool) · 18 августа 2026 г.

Локальный ИИ-конвейер транскрипции созвонов: 74 минуты аудио за 7 минут на чипе Mac

74 мин звонка → 7 мин на M2 Pro

Собственная практика: автоматический пайплайн от Audio Hijack до саммари и базы знаний. 74 минуты аудио за 7 минут, 61 секунда на Neural Engine и двухканальное разделение микрофона.

Автоматический конвейер транскрипции и обработки звонков

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 и без ручных действий.

Проблема

  1. Тормоза диаризации: Классический Pyannote на Python упирался в однопоточный CPU при расчете спектрограмм и извлечении эмбеддингов, тратя 16 минут на часовой звонок, пока остальные 11 ядер и нейрочип бездействовали.
  2. Таймауты Metal Shader на GPU: При попытке запустить диаризацию на GPU через MPS происходил GPU Command Buffer Timeout из-за слишком длинных окон обработки.
  3. Путаница при перебиваниях: Когда люди говорят одновременно, одноканальные модели часто смешивают реплики и не могут уверенно определить, кому принадлежит фраза.

Подход

  1. Перенос на Apple Neural Engine (ANE): Скомпилировали нативный Swift CLI на базе FluidAudio, использующий CoreML для сегментации и извлечения эмбеддингов WeSpeaker. Вычисления ушли на специализированный чип ANE — 74 минуты диаризируются за 61,3 секунды, кулеры ноутбука молчат.
  2. Оптимизация окна внимания Parakeet: Подобрали «золотую середину» нарезки аудио — 60 секунд с нахлестом 5 секунд. Это сократило квадратичную сложность матриц внимания $O (L^2)$ в 4 раза и уложило пиковое потребление RAM в 1520 МБ.
  3. Двухканальное стерео в Audio Hijack: Развели микрофон в левый канал, а звук Zoom/Meet — в правый. Скрипт транскрипции автоматически определяет стерео-формат, помечает левый канал как автора звонка (100% точность) и независимо диаризирует только правый канал.

Маршрутизация каналов в Audio Hijack

  1. Сквозная интеграция с Hazel и CRM: Готовый Markdown подхватывается Hazel, прогоняется через LLM-суммаризатор для выделения Action Items и автоматически раскладывается по папкам проектов в Git и базе знаний G-Brain.

Результат

  • Полное время обработки: 7 минут 35 секунд на 74 минуты аудио (в 10 раз быстрее реального времени).
  • Стоимость: 0 рублей за облачные ASR-транскрипции.
  • Приватность: Все сырые аудиозаписи и стенограммы остаются на локальном диске.
  • Автоматизм: Никаких кнопок «загрузить» или «экспортировать» — всё происходит само в фоне сразу после завершения звонка.

Не пользуетесь Telegram? Напишите здесь — сообщение придёт мне на почту, отвечу в течение рабочего дня.

← ко всем кейсам

Написать в Telegram Telegram