Обзор Yogurt: локальный AI для записи встреч
Разбираем Yogurt — open-source приложение для транскрибации и суммаризации встреч с использованием локальных AI-моделей для обеспечения приватности данных.
Возможности Yogurt для работы с аудио
Возможности Yogurt для работы с аудио
Транскрибация и создание резюме
Во-первых, Yogurt позволяет превратить любой звук — запись встречи, интервью или презентации — в текст без передачи данных в облако. Это особенно удобно, когда разговоры содержат конфиденциальную информацию.
Для базовой транскрибиции достаточно указать аудиофайл и путь к результату:
bashyogurt transcribe -i /home/alexey/meetings/2024-09-15.wav -o /home/alexey/meetings/transcript.txt
Ключевые параметры:
-i— путь к аудио‑файлу (поддерживаются wav, mp3, m4a);-o— файл, в который будет записана расшифровка;--model— optional, путь к локальной модели HuggingFace (по умолчанию используется небольшая модель Whisper‑tiny, что обеспечивает хорошую скорость на CPU).
После получения расшифровки можно автоматически сформировать краткое резюме. Yogurt использует встроенный LLM‑модуль, который принимает текст транскрипции и выдаёт список ключевых пунктов:
bashyogurt summarize -i /home/alexey/meetings/transcript.txt -o /home/alexey/meetings/summary.md
Пример вывода summary.md:
markdown# Краткое резюме встречи 15.09.2024
- **Продолжительность:** 45 минут
- **Участники:** 5 человек
- **Основные темы:**
1. План проекта на квартал Q4
2. Описание текущей архитектуры микросервисов
3. Планируемые сроки релизов
- ** Действия:**
- Запланировать ревью кода на 22 сентября
- Подготовить техническое задание для модуля «отчёты»
Справедливо, резюме генерируется локально, поэтому никакие данные не покидают ваш домашний сервер. Это соответствует принципу приватности, который является основной целью Yogurt.
Интерактивный чат с записями встреч
С практической точки зрения Yogurt не ограничивается однократной транскрипцией. После создания текста можно запустить интерактивный чат, который позволяет задавать вопросы к конкретным фрагментам записи.
Запуск сервера чата выглядит так:
bashyogurt chat -i /home/alexey/meetings/2024-09-15.wav --model /home/alexey/models/whisper-base
В режиме чата вы видите приглашение:
[Yogurt] Чат готов. Введите запрос, например: «Какие сроки обсуждались?»
Ответ приходит мгновенно, потому что модель работает в режиме online над уже загруженным аудио‑файлом, а не перезагружается каждый раз. Пример диалога:
[Yogurt] Какие сроки обсуждались?
[Yogurt] Речь шла о релизах 1‑го и 15‑го октября, а также о предварительном тесте в конце сентября.
Для удобства можно сохранить диалог в файл:
bashyogurt chat -i /home/alexey/meetings/2024-09-15.wav --model /home/alexey/models/whisper-base --output /home/alexey/meetings/chat.log
Таким образом, Yogurt превращает обычные аудиозаписи в интерактивный источник информации, где каждый участник может уточнять детали без необходимости вручную прослушивать весь файл. Это особенно полезно в небольших командах, где важна предсказуемость доступа к ключевым решениям.
Если вам нужен более глубокий анализ — например, выделение решений, ответственных лиц или сроков — достаточно добавить параметр --details, который расширит вывод, включив в него метаданные из аудио (говорящий, длительность реплики и т.д.).
Итого: Yogurt обеспечивает полностью локальную транскрибицию и суммирование, а также интерактивный чат, что делает его надёжным инструментом для работы с аудио на домашних серверах без компромисса в приватности.
Приватность и локальная обработка данных
Приватность и локальная обработка данных
Когда речь заходит о записи рабочих встреч, главный вопрос — где окажется аудиодорожка после нажатия кнопки «Стоп». Если вы используете популярные облачные сервисы, вы фактически передаёте интеллектуальную собственность компании и детали обсуждений на сторонние серверы. В контексте корпоративной безопасности или работы с чувствительными данными это всегда риск.
Yogurt решает эту проблему через архитектуру, где обработка происходит исключительно на вашем оборудовании. Это не просто маркетинговое обещание, а технический подход, исключающий утечку данных на этапе транскрибации.
Использование on-device AI моделей
В основе Yogurt лежит принцип локального исполнения. Вместо того чтобы отправлять аудиофайл по API в OpenAI или Google, приложение использует модели семейства Whisper для распознавания речи и локальные LLM (Large Language Models) для суммаризации.
С практической точки зрения это означает, что вам не нужен постоянный доступ к интернету для работы сервиса. Все вычисления ложатся на ваш CPU или GPU. Если вы разворачиваете Yogurt в своей домашней лаборатории или на рабочем сервере, данные не покидают периметр вашей сети.
Для обеспечения предсказуемости работы я рекомендую запускать подобные инструменты через Docker. Это позволяет изолировать среду выполнения и точно контролировать, какие ресурсы потребляет нейросеть. Например, если вы хотите ограничить использование памяти, чтобы процесс транскрибации не «съел» всё на вашем сервере «Пятачок», используйте следующий конфиг в docker-compose.yml:
yamlservices:
yogurt:
image: yogurt-ai:latest
deploy:
resources:
limits:
memory: 8G # Резервируем 8 ГБ под веса моделей и контекст
volumes:
- ./models:/app/models # Путь к локальным весам моделей
- ./recordings:/app/recordings # Папка с записями встреч
restart: unless-stopped
Важно понимать: качество суммаризации напрямую зависит от того, какую модель вы скачали. Для простых задач достаточно моделей малого размера, но если вам нужна высокая точность в сложных технических дискуссиях, придётся выделить больше видеопамяти под более тяжёлые веса.
Сравнение с облачными решениями
Если мы сравним Yogurt с облачными аналогами, разница будет не только в приватности, но и в архитектурной гибкости.
Во-первых, облачные решения работают по модели «черного ящика». Вы не знаете, как именно обрабатываются ваши данные, как долго они хранятся в кэше и не используются ли они для дообучения глобальных моделей. В случае с локальным запуском вы полностью контролируете жизненный цикл данных.
Во-вторых, экономическая предсказуемость. Облачные API берут плату за каждую минуту записи или за каждый токен. При масштабировании на десятки встреч в день расходы могут стать неконтролируемыми. В случае с локальным развёртыванием ваши затраты ограничены только стоимостью «железа» и электричеством.
Сравнительная таблица подходов:
| Характеристика | Облачные сервисы (SaaS) | Yogurt (On-device) |
|---|---|---|
| Конфиденциальность | Низкая (данные уходят в облако) | Максимальная (данные внутри сети) |
| Зависимость от сети | Полная | Отсутствует |
| Стоимость | Подписка или оплата за токены | Разовые затраты на оборудование |
| Настройка | Не требуется | Требуется подбор моделей и ресурсов |
Однако стоит учитывать и обратную сторону. Локальная обработка требует ресурсов. Если вы попытаетесь запустить тяжелую модель на слабом одноплатнике вроде Raspberry Pi, транскрибация часовой встречи может занять несколько часов. Для комфортной работы лучше использовать сервер с дискретной видеокартой или современный процессор с поддержкой инструкций для ускорения нейросетевых вычислений.
Если ваша инфраструктура построена на Linux, важно следить за тем, чтобы системные компоненты были актуальны. Хотя проблемы с патчами в ядре Linux могут замедлить работу некоторых драйверов, в целом стабильность системы обеспечивается правильным управлением ресурсами через systemd и Docker.
Технические особенности проекта
Архитектура и лицензия MIT
Если смотреть на Yogurt с точки зрения системного инженера, перед нами классическое модульное приложение, которое пытается решить сложную задачу — запуск тяжелых нейросетевых моделей без обращения к облачным API. Это критически важно для приватности: когда вы записываете рабочую встречу, отправка аудиопотока на сторонние серверы превращается в огромную дыру в безопасности.
Архитектура проекта построена на разделении задач: захват аудио, транскрибация (преобразование речи в текст) и последующая суммаризация (сжатие текста с помощью LLM). В качестве движка для работы с моделями Yogurt использует Whisper от OpenAI, но запускает его локально.
С точки зрения распространения, проект использует лицензию MIT. Это делает его максимально предсказуемым для интеграции в любые домашние или корпоративные системы: вы можете модифицировать код, встраивать его в свои скрипты или разворачивать на собственных серверах без юридических сложностей.
Требования к системным ресурсам
Здесь важно понимать: локальный AI — это не «легкая надстройка», а полноценная вычислительная нагрузка. Если вы планируете запустить Yogurt на старом ноутбуке или слабой Raspberry Pi, вы получите не транскрибацию, а бесконечное ожидание.
С практической точки зрения, требования сильно зависят от выбранной модели Whisper. Для комфортной работы я рекомендую ориентироваться на следующие параметры:
- Процессор (CPU): Минимум 4 ядра с поддержкой инструкций AVX2. Если планируете использовать только CPU, готовьтесь к тому, что обработка часовой встречи может занять столько же времени, сколько длилась сама встреча.
- Оперативная память (RAM):
- 8 ГБ — необходимый минимум для работы базовых моделей.
- 16 ГБ и выше — если вы хотите использовать более точные модели (например,
large-v3) и одновременно держать запущенной LLM для суммаризации.
- Видеокарта (GPU): Это ключевой фактор. Наличие NVIDIA с поддержкой CUDA превращает процесс из «мучительного ожидания» в «мгновенный результат». Для моделей среднего размера желательно иметь от 6–8 ГБ видеопамяти (VRAM).
Если вы разворачиваете Yogurt через Docker, убедитесь, что у вас настроен проброс GPU в контейнер. Для этого на хостовой системе должен быть установлен nvidia-container-toolkit.
Пример проверки доступности GPU в контейнере:
bash# Проверяем, видит ли контейнер вашу видеокарту
docker run --rm --gpus all nvidia/cuda:12.0-base-ubuntu22.04 nvidia-smi
Если вы используете Linux-дистрибутивы вроде Ubuntu, всегда следите за актуальностью драйверов. Недавние проблемы с патчами безопасности в ядре Linux могут косвенно влиять на стабильность работы низкоуровневых драйверов, что критично при работе с высоконагруженными задачами вроде инференса нейросетей.
Для мониторинга потребления ресурсов во время работы Yogurt я советую использовать htop для CPU и nvtop для видеокарты. Это позволит увидеть, не упирается ли система в лимиты памяти, что часто приводит к внезапному завершению процесса (OOM Killer).
Заключение
Когда Yogurt оправдан
С практической точки зрения Yogurt — это не универсальный комбайн, а узкоспециализированный инструмент. Если вам нужно быстро набросать заметки после созвона, не отправляя аудиозапись на серверы сторонних компаний, решение работает отлично. Локальный запуск моделей Whisper гарантирует, что конфиденциальная информация останется внутри вашей домашней лаборатории.
Однако стоит учитывать аппаратные ограничения. Транскрибация — процесс ресурсоёмкий. Если вы запустите Yogurt на слабом одноядерном процессоре или старой Raspberry Pi, процесс может затянуться на часы, превратившись в бесконечный цикл ожидания. Для предсказуемого результата я рекомендую использовать системы с поддержкой GPU или хотя бы современные процессоры с хорошей поддержкой инструкций AVX.
Ограничения и риски
Главная проблема любого open-source решения, работающего с AI, — это баланс между качеством и скоростью. Вы можете выбрать модель large-v3 для максимальной точности, но тогда приготовьтесь к тому, что сервер будет загружен на 100 % длительное время. Если же выбрать tiny или base, вы получите мгновенный результат, но точность распознавания специфических терминов или акцентов заметно упадет.
Также не стоит забывать о безопасности самой операционной системы. Даже если приложение работает локально, уязвимости в ядре могут поставить под удар всю инфраструктуру. Если вы используете Ubuntu для развёртывания подобных сервисов, следите за обновлениями безопасности. Как мы видели на примере уязвимости 0day RCE в ядре Linux, задержки в выпуске патчей могут создать серьёзные риски для ваших данных.
Итоговая конфигурация для стабильной работы
Чтобы Yogurt не превратил ваш сервер в «печку», я советую запускать его через Docker с чётко ограниченными ресурсами. Это позволит избежать ситуации, когда процесс транскрибации съедает всю оперативную память и вызывает OOM Killer, который прибьёт что-нибудь более важное, например, ваш основной хранилище.
Пример файла docker-compose.yml с ограничениями для обеспечения стабильности системы:
yamlservices:
yogurt:
image: yogurt-app:latest
container_name: yogurt-service
deploy:
resources:
limits:
cpus: '4' # Ограничиваем использование процессора
memory: 8G # Резервируем память под веса моделей
volumes:
- ./data:/app/data
- ./models:/app/models
restart: unless-stopped
При таком подходе вы сохраняете предсказуемость работы всей домашней лаборатории. Если ресурсов не хватает, сервис просто замедлится, но не обрушит соседние контейнеры.
FAQ
FAQ
Нужен ли интернет для работы Yogurt?
Нет, для основной работы Yogurt интернет не требуется. В этом и заключается главное преимущество подхода с использованием локальных моделей: все процессы транскрибации и суммаризации происходят непосредственно на вашем оборудовании. Это гарантирует приватность данных, так как аудиозаписи встреч не покидают пределы вашей домашней лаборатории.
Интернет понадобится только один раз — чтобы скачать веса моделей при первом запуске приложения. Если вы работаете в полностью изолированном контуре, вам придётся подготовить образы моделей заранее и перенести их на сервер вручную.
Какие модели используются для транскрибации?
Yogurt опирается на семейство моделей Whisper от OpenAI. Это индустриальный стандарт для распознавания речи, который отлично справляется с разными языками и акцентами. В зависимости от ваших вычислительных мощностей, вы можете выбирать разные версии:
- Tiny / Base — работают молниеносно, но могут ошибаться в сложных терминах.
- Medium — золотая середина для большинства задач.
- Large-v3 — обеспечивает максимальную точность, но требует значительного объёма видеопамяти (VRAM) или оперативной памяти.
Выбор конкретной модели обычно настраивается в конфигурационном файле приложения. Например, чтобы зафиксировать использование модели medium, отредактируйте config.yaml:
yamltranscription:
model: "medium" # Использование medium обеспечивает баланс скорости и точности
device: "cuda" # Если есть GPU от NVIDIA, указываем cuda для ускорения
Можно ли использовать Yogurt на Linux?
Да, Linux является приоритетной платформой для этого приложения. Поскольку Yogurt активно использует контейнеризацию и системные ресурсы, развёртывание через Docker на Debian или Ubuntu — самый предсказуемый способ.
Если вы используете Ubuntu, убедитесь, что ваше ядро актуально и стабильно. В последнее время в сообществе обсуждались задержки с обновлениями безопасности, например, патч для ядра Linux в Ubuntu не вышел три недели, что критично для систем, работающих с чувствительными данными.
Для запуска через Docker Compose используйте следующий пример:
yamlservices:
yogurt:
image: yogurt-app:latest
container_name: yogurt-service
volumes:
- ./data:/app/data
- ./models:/app/models
restart: unless-stopped
Насколько сильно нагружается процессор при обработке?
Нагрузка зависит от того, как именно вы запускаете обработку: на CPU или на GPU.
Если у вас нет дискретной видеокарты, вся тяжесть ложится на центральный процессор. В этом случае во время транскрибации вы увидите практически 100 % загрузку всех доступных ядер. С практической точки зрения, это нормально: нейросети требуют интенсивных математических вычислений.
Если вы планируете использовать Yogurt на домашнем сервере в режиме постоянной работы, я рекомендую:
- Использовать GPU (NVIDIA с поддержкой CUDA) — это снизит нагрузку на CPU в разы и ускорит процесс в несколько раз.
- Настроить лимиты ресурсов в Docker, чтобы процесс транскрибации не «задушил» другие сервисы, например, ваш Plex или Nextcloud.
Пример ограничения ресурсов в docker-compose.yml:
yamldeploy:
resources:
limits:
cpus: '4' # Ограничиваем использование не более чем 4 ядрами
memory: 8G
Часто задаваемые вопросы
Как установить Yogurt на локальный сервер?
Для установки Yogurt достаточно выполнить несколько простых команд. Сначала убедитесь, что на сервере установлен Python 3.8 и новее и наличен pip. Затем запустите: python3 -m pip install yogurt. После установки проверьте работу, выполнив yogurt --version.
Какие аудио‑форматы поддерживает Yogurt?
Yogurt поддерживает несколько распространённых аудио‑форматов: wav, mp3, m4a и ogg. При передаче файла через параметр -i указывайте путь к выбранному файлу, приложение автоматически распознает его тип. Это упрощает работу с записями, сделанными на разных устройствах.
Нужно ли подключать GPU для ускорения транскрибирования?
Для базовой транскрибиции достаточно CPU, так как используется небольшая модель Whisper‑tiny, которая работает быстро даже на однопоточном процессоре. Если планируется использовать более крупные модели, например Whisper‑base, рекомендуется GPU с поддержкой CUDA для ускорения. В этом случае указывайте путь к модели через --model и убедитесь, что установлены драйверы NVIDIA.
Как экспортировать резюме в PDF или другой формат?
Yogurt генерирует резюме в формате markdown, его можно легко преобразовать в PDF с помощью Pandoc: pandoc summary.md -o summary.pdf. Если требуется другой формат, например DOCX, достаточно изменить расширение в параметре -o. Это позволяет интегрировать результат в любые документы без дополнительного программного обеспечения.