← cd /thoughts
AIАрхитектура

Как превратить запись встречи в задачи

Одной расшифровки мало. Полезный продукт должен провести разговор через несколько независимых этапов и вернуть результат туда, где команда уже работает.

TL;DR

pipeline.txt
Аудио → подготовка → распознавание → спикеры → структура → задачи → CRM

• Каждый этап должен быть повторяемым и наблюдаемым
• Длинное аудио обрабатывается в фоне, а не внутри одного HTTP-запроса
• Резюме не заменяет исходный текст и таймкоды
• Последний шаг — доставка результата в рабочий процесс

Проблема не в записи

Записать встречу сегодня несложно. Телефон, компьютер или браузер сохранят аудио. Настоящая проблема начинается после: часовой файл лежит в папке, никто не хочет переслушивать его целиком, а важные решения всё равно остаются в памяти участников.

Поэтому полезность системы определяется не качеством кнопки «Записать», а тем, насколько надёжно она превращает неструктурированный разговор в проверяемые действия.

Расшифровка отвечает на вопрос «что было сказано». Рабочая система должна ответить ещё на два: «что решили» и «что теперь делать».

Этап 1. Принять аудио и не потерять его

Клиентское приложение не должно держать длинное соединение, пока сервер обрабатывает запись. Оно загружает файл, получает идентификатор задачи и дальше отслеживает состояние: загружено, подготовка, распознавание, резюме, готово или ошибка.

Сам файл разумно отправлять напрямую в объектное хранилище по временной подписанной ссылке. API при этом управляет правами и метаданными, но не становится узким местом для гигабайтов аудио.

Этап 2. Подготовить звук

Записи приходят в разных форматах, с разной громкостью и количеством каналов. Перед распознаванием их нужно привести к предсказуемому виду: нормализовать, при необходимости преобразовать частоту дискретизации и проверить длительность.

Подготовка кажется технической мелочью, но именно здесь отсекаются повреждённые файлы и большая часть труднообъяснимых ошибок следующих этапов.

Этап 3. Распознать речь и сохранить таймкоды

Для русской речи мы используем GigaAM-v3 как основную модель, а Whisper — как резервный вариант для отдельных сценариев. Важно хранить не только итоговый текст, но и сегменты с временными границами.

Таймкоды позволяют открыть исходный фрагмент из поиска, проверить спорную формулировку и позже пересобрать текст без повторного распознавания всего файла.

💡

AI-резюме должно быть проверяемым. Ссылка от вывода модели к исходной реплике важнее ещё одного красивого абзаца.

Этап 4. Понять, кто говорил

Диаризация делит аудио на голоса и связывает сегменты с условными спикерами. Это отдельная задача: модель распознавания отвечает за слова, а модель диаризации — за границы голосов.

Автоматическая подпись «Спикер 1» уже полезна, но продукт должен позволять пользователю один раз указать имя и применить его ко всем репликам. Здесь интерфейс исправления важен не меньше точности модели.

Этап 5. Получить структуру, а не пересказ

Большой текст отправляется в языковую модель с конкретной схемой результата: тема, решения, риски, вопросы без ответа и задачи. Для каждой задачи нужны формулировка, ответственный и срок — если они действительно прозвучали.

Модель не должна придумывать отсутствующие данные. Если срок не назван, система пишет «не указан», а не подставляет удобную дату. Такой результат менее эффектен на демо, зато ему можно доверять.

Этап 6. Вернуть результат в работу

Даже хорошее резюме быстро станет ещё одним архивом, если за ним нужно специально заходить. Поэтому последняя часть конвейера — интеграция: добавить итог звонка в таймлайн сделки Битрикс24, создать задачи или отправить ответственному уведомление.

Именно здесь AI-функция становится частью процесса. Человек продолжает работать в привычной CRM, а система незаметно убирает ручной конспект и перенос договорённостей.

Надёжность конвейера

01Идемпотентность. Повторный запуск этапа не создаёт дубли и не портит готовый результат.
02Наблюдаемость. Для каждой задачи видны текущий этап, время выполнения и причина ошибки.
03Восстановление. Зависшие задачи возвращаются в очередь, а временные ошибки повторяются с ограничением.
04Приватность. Доступ к аудио ограничен владельцем, передача защищена, срок хранения управляем.

Главный вывод

Ценность создаёт не отдельная AI-модель, а весь маршрут данных. Если загрузка нестабильна, пользователь не дождётся распознавания. Если нет таймкодов, он не доверяет резюме. Если результат не попал в CRM, задачи снова придётся переносить вручную.

Хорошая архитектура делает каждый этап заменяемым. Можно улучшить модель распознавания, поменять LLM или добавить новую интеграцию, не пересобирая продукт целиком.

Посмотреть реализацию

В кейсе Verba показаны архитектура, клиентские приложения, интерфейс и технические решения такого конвейера.