Аудиозапись совещания →
готовый протокол
Загрузите запись — сервис выделит темы, решения и задачи с ответственными и сроками и сделает полную расшифровку. Не нужно вести заметки во время встречи.
Сначала распознаётся речь, затем нейросеть составляет протокол. Это может занять несколько минут — не закрывайте страницу.
Протокол готов
Темы
Решения и итоги
Краткое содержание
Задачи
| Что сделать | Ответственный | Срок |
|---|
Задач не зафиксировано
Полная расшифровка
Почему я создал этот проект
Идея появилась на встрече сообщества ODS в Москве. Мы с парой участников разговорились о задачах на стыке NLP и звука — один из ребят учится в ВШЭ, и у него как раз было такое учебное задание.
Потом разговор ушёл в практическую сторону: как было бы удобно не отвлекаться на заметки во время встречи. Не бояться что-то пропустить или забыть, не сидеть потом и не вспоминать, о чём говорили, — а просто загрузить запись и сразу получить краткий конспект, где собраны все темы и всё понятно.
Я решил сделать такой инструмент — бесплатный и работающий прямо на компьютере, чтобы записи разговоров никуда не уходили. Заодно прошёл путь от моделей к продукту: распознавание речи → работа с LLM и промптами → сравнение моделей на эталонной записи → бэкенд на FastAPI → интерфейс.
Три шага от звука к протоколу
Распознавание речи
Модель Whisper переводит звук в текст. Паузы вырезаются заранее, чтобы модель не «додумывала» фразы в тишине.
Анализ нейросетью
Локальная языковая модель читает расшифровку и выделяет темы, решения и задачи — строго по тексту и в заданной структуре.
Протокол
Результат появляется на странице, его можно скачать одним файлом. Запись удаляется сразу после обработки — сервер ничего не хранит.
Что внутри
Что было интересно
Промпт за 3 итерации
Первая версия путала решения и задачи. Помогли чёткие определения полей, порядок полей в JSON-схеме и правило «отложенный вопрос — не решение и не задача».
num_ctx = 8192
По умолчанию Ollama берёт маленький контекст и молча обрезает длинную расшифровку. Сервис явно задаёт размер окна и логирует, сколько токенов модель прочитала.
def, а не async def
Обработка тяжёлая и синхронная. Обычная функция выполняется в отдельном потоке, поэтому сервер не «замирает» на время распознавания.
av==18.1.0
За несколько дней до старта проекта вышла PyAV 19 и сломала faster-whisper. Нашёл причину по трейсбеку и зафиксировал совместимую версию.
Сравнил две модели — выбрал по фактам
| Проверка (2 прогона) | qwen2.5:3b | gemma3:4b |
|---|---|---|
| Найдены все 4 задачи | 2 из 2 | 2 из 2 |
| Отложенный вопрос не превращён в задачу | 1 из 2 | 2 из 2 |
| В решениях нет поручений | 1 из 2 | 2 из 2 |
| Задача записана полностью | 0 из 2 | 2 из 2 |
| Срок не выдуман, если его не называли | 1 из 2 | 1 из 2 |
| Краткое содержание без выдуманных фактов | 0 из 2 | 2 из 2 |
| Время конспекта (запись 3 мин) | ~50 с | ~50 с |
Тест — запись планёрки с заранее известными ответами и «ловушками»: задача без ответственного, задача без срока, вопрос, который отложили.
Ограничения
- Маленькая модель иногда «додумывает» срок, если он упомянут косвенно. Протокол стоит проверять.
- Нет разделения по спикерам — в расшифровке не видно, кто именно говорит.
- Ошибки распознавания в именах, терминах и окончаниях.
- Записи до 15 минут — более длинные не помещаются в контекст модели.
Ярослав Жежу
Около года занимаюсь машинным обучением, интересуюсь ML, LLM, NLP, статистикой и новыми технологиями.
Открыт к стажировкам и работе в ML.
Sleep Quality Tracker
Экспресс-тест сна на ML: 10 вопросов о дне — и модели XGBoost и CatBoost оценивают качество сна прямо в браузере.