От телефонной записи к структурированной аналитике
Система обработки телефонных разговоров: ASR, diarization, speaker identification и LLM-анализ. Распознаёт речь, определяет участников, проверяет содержание по заданным критериям и формирует отчёты с привязкой к исходному аудио.
Цель
Автоматизировать анализ телефонных переговоров и превратить записи в структурированные данные для контроля договорённостей, качества коммуникации и регулярной отчётности.
Для этого потребовалось объединить несколько ML-задач: speech recognition, diarization, speaker identification и семантический анализ разговора.
Выбор ASR
Начинал с экспериментов с Whisper и WhisperX. На реальных телефонных записях качество оказалось неоднородным: шум, короткие реплики и особенности каналов иногда приводили к пропускам и галлюцинациям текста.
После сравнительных прогонов основным ASR выбрал GigaAM v3 e2e RNN-T. Для выделения речи использую pyannote VAD, а word-level timestamps позволяют сопоставлять текст с исходной записью.
Stereo-записи обрабатываются по каналам. Для mono применяется диаризация, чтобы разделять реплики участников внутри одного аудиопотока.
Diarization не равна identification
Диаризация определяет, какие реплики принадлежат одному голосу в пределах звонка. Но для корпоративной аналитики часто нужно установить конкретного сотрудника.
Для этого я построил speaker identification pipeline на embeddings NeMo TitaNet, галерее эталонных голосов, k-NN и дополнительных оценках сходства.
Важное ограничение — качество enrollment data. Если в голосовой эталон попадут реплики клиента, эмбеддинги перестанут надёжно представлять нужного сотрудника. Поэтому для отбора образцов понадобился отдельный процесс проверки и подготовки чистых голосовых сегментов.
LLM-анализ и отчёты
После распознавания транскрипт передаётся LLM для анализа по конкретным критериям: договорённости, факт уведомления клиента, выполненные и пропущенные действия, подтверждающие реплики.
Результаты анализа привязываются к фрагментам транскрипта, которые можно проверить по записи.
Интерактивный HTML-отчёт объединяет участников, текст, временные отметки и выводы. Пользователь может перейти к нужной реплике и проверить основание для заключения.
Интеграция в бизнес-процессы
Отдельный сценарий использует звонки из Bitrix24. Через Airflow собираются записи и контекст CRM, после чего результаты ASR и LLM-анализа сопоставляются с клиентами, сотрудниками и данными 1С.
Например, можно проверять, сообщил ли менеджер клиенту необходимую информацию, и собирать сводную аналитику по обработанной выборке звонков.
Результат
Система объединяет VAD, ASR, diarization, speaker identification и LLM-based quality analysis в один pipeline.
Стек: Python, PyTorch, GigaAM v3, pyannote, NeMo TitaNet, k-NN, PLDA, LLM, FastAPI, Airflow, Bitrix24.
Демонстрация SONAR
На главной странице — фрагмент интервью А. Н. Иванова на MediaMetrics от 19 сентября 2017 года. Автор публикации: Alexey Arkhipov. Оригинальная запись · CC0 1.0. Использован отрывок 1:24.70–1:52.15, аудио сокращено и перекодировано.