Зачем начинать не с голосового робота, а с обработки завершённых звонков
У малого и среднего бизнеса часто уже есть записи разговоров из телефонии, но полезная информация остаётся внутри аудио. Менеджер вручную переносит обещания клиента в CRM, руководитель выборочно слушает звонки, а причины отказов собираются по памяти. Локальный ИИ может превратить запись в расшифровку, краткое резюме и черновик карточки — без отправки исходного аудио во внешний сервис.
Самый безопасный первый сценарий — пакетная обработка завершённых звонков. Он проще живого голосового бота: задержка в несколько минут обычно допустима, ошибка не вмешивается в разговор, а результат можно показать сотруднику до записи в CRM. Компания получает данные для пилота и понимает реальное качество распознавания на своей телефонии.
Важно не обещать «понимание всех разговоров». Автоматическое распознавание речи ошибается на шуме, одновременной речи, именах, артикулах и отраслевых терминах. Модельная карточка Whisper прямо предупреждает о неравномерном качестве по языкам и акцентам, возможных повторах и тексте, которого не было в аудио. Поэтому архитектура должна сохранять связь каждого вывода с фрагментом записи и уметь отказаться от сомнительного результата.
Контур данных начинается в телефонии
Первая интеграция — не LLM, а событие из АТС или контакт-центра. Для каждого завершённого звонка система должна получить стабильный идентификатор, ссылку на аудиофайл и минимум метаданных: время, длительность, направление, внутренний номер и идентификатор сделки или обращения, если он уже известен.
Исходную запись лучше сохранять неизменной в защищённом объектном хранилище. Для обработки создаётся рабочая копия в формате и частоте дискретизации, которые ожидает выбранный ASR-стек. Если телефония отдаёт собеседников по разным каналам, каналы нельзя преждевременно смешивать: это самый надёжный способ понять, кто говорил. Диаризация нужна прежде всего для одноканальной записи и не должна подменять доказанную идентичность человека.
До пилота владелец процесса вместе с юристом или ответственным за персональные данные определяет правовое основание обработки, порядок информирования, цели, сроки хранения, роли доступа и удаление. Запись, номер телефона, имя и содержание разговора могут относиться к персональным данным. Локальное развёртывание уменьшает число внешних получателей, но само по себе не делает обработку законной и безопасной.
Практический конвейер из девяти этапов
Рабочая схема выглядит так:
1. АТС публикует событие о завершении звонка.
2. Приёмщик проверяет тип файла, длительность, контрольную сумму и связывает запись с бизнес-объектом.
3. Декодер создаёт рабочую аудиокопию, не меняя оригинал.
4. Voice Activity Detection выделяет речевые интервалы и длинные паузы.
5. ASR расшифровывает речь и возвращает временные метки.
6. Для одноканального аудио отдельный модуль размечает реплики условными говорящими.
7. Нормализатор применяет словарь товаров, фамилий и сокращений, сохраняя исходный вариант.
8. Локальная LLM формирует структурированный черновик резюме с доказательствами по тайм-кодам.
9. Сотрудник подтверждает или исправляет карточку, после чего детерминированный исполнитель обновляет CRM.
Каждый этап получает собственный статус и версию модели. Если обработка прервалась, задача продолжается с последней подтверждённой точки. Ключ идемпотентности можно строить из идентификатора звонка, контрольной суммы аудио и версии конвейера. Тогда повторное событие от АТС не создаст вторую заметку в CRM.
VAD экономит вычисления, но не должен вырезать смысл
Детектор голосовой активности отделяет речь от тишины и не отправляет длинные паузы в распознавание. Silero VAD — один из локальных вариантов: официальный репозиторий описывает 8 и 16 кГц, PyTorch и ONNX и лицензию MIT.
Порог нужно проверять на телефонном наборе с музыкой ожидания, тихими ответами и перебиваниями. Агрессивная настройка обрежет слова и номера, мягкая увеличит очередь. Сохраняйте поля контекста вокруг речи и неизменный оригинал: сегментацию должно быть можно пересчитать.
ASR: модель выбирают на своих звонках, а не по общей таблице
Whisper — удобная отправная точка для локального прототипа: официальный проект публикует код и веса под MIT, несколько размеров модели, многоязычное распознавание и временные метки. Приведённые требования к памяти и относительная скорость приблизительны; реальный результат зависит от языка, речи и оборудования.
Выбирайте модель по собственному корпусу: в продажах правильные товар, сумма, дата и обязательство важнее среднего балла на публичном датасете. Возвращайте сегменты с тайм-кодами и сигналами качества. Словарь терминов допустим как подсказка или прозрачная постобработка, но не должен молча менять исходную гипотезу.
Диаризация отвечает «когда говорил спикер», а не «кто это был»
Если каналы не разделены, диаризация группирует интервалы условных говорящих. pyannote.audio поддерживает локальный запуск; для Community-1 официальный проект требует принять условия и использовать токен Hugging Face при загрузке, после чего сохранённые файлы могут работать локально. Лицензию кода и условия checkpoint проверяют отдельно.
Метка `SPEAKER_00` не доказывает личность. Роль связывают по каналам, метаданным или ручной проверке. Если достаточно общего резюме, диаризация может не окупить сложность; если нужно разделять обещания сторон, измеряйте ошибки атрибуции на своём наборе.
LLM получает текст, но не право писать в CRM
После ASR полезно передавать модели не бесформенный транскрипт, а пакет сегментов: время начала и конца, условный говорящий, текст, сигнал качества и ссылки на аудио. Модель возвращает строгую структуру, например:
- тема и исход звонка;
- потребность клиента;
- возражения;
- обещания каждой стороны;
- следующие действия, ответственный и срок;
- факты для полей CRM;
- список доказательств с тайм-кодами;
- неопределённости и причина для ручной проверки.
Детерминированный код проверяет схему, допустимые значения и даты. Ни одно поле не записывается автоматически, если у него нет подтверждающего фрагмента или уверенность ниже выбранного порога. На первом этапе LLM создаёт только черновик, а сотрудник нажимает «подтвердить».
Не стоит просить ASR или LLM определять честность, настроение, национальность, состояние здоровья или личностный тип собеседника. Модельная карточка Whisper отдельно предостерегает от субъективной классификации и высокорисковых решений. Для бизнеса надёжнее извлекать наблюдаемые факты: прозвучала ли дата, цена, согласие или конкретное обязательство.
Как изолировать чувствительный контент
Локальный контур имеет смысл только при нормальной дисциплине данных: зашифрованное хранилище и журнал доступа, отдельные сервисные роли, сегментация сети между телефонией, вычислителем и CRM-шлюзом, проверенные версии весов и разные сроки хранения для аудио, транскрипта и резюме. Удаление должно находить все производные артефакты по идентификатору звонка.
В технический журнал достаточно писать идентификатор задачи, версии компонентов, длительность этапов и коды ошибок. Полный транскрипт в обычных application logs создаёт ещё одну неконтролируемую базу разговоров, поэтому содержимое по умолчанию лучше не логировать. Для аналитики, где полные идентификаторы не нужны, данные следует редактировать или обезличивать до передачи в следующий контур.
Как посчитать требуемую мощность
Главная измеряемая величина — real-time factor: сколько минут вычисления требуется на минуту аудио. Если 60 минут записи обрабатываются за 15 минут, RTF равен 0,25. Это значение нужно измерить на выбранной модели, формате звонков и конкретном сервере.
Модельный пример: компания получает 1200 минут аудио в день и хочет разобрать ночной пакет за 240 минут. При RTF 0,25 требуется 300 минут вычисления, или в среднем 1,25 параллельного потока. С запасом на пики, повторные попытки и диаризацию это может означать два–три рабочих слота. Это не спецификация оборудования, а способ перевести замер пилота в план мощности.
Полная стоимость включает хранение и резервные копии, декодирование, VAD, ASR, диаризацию, LLM, интеграции, ручную проверку, мониторинг и повторную обработку. Часто именно проверка и эксплуатация, а не GPU, определяют цену принятой карточки.
Для редких и непредсказуемых объёмов внешний API может оказаться дешевле собственного простаивающего сервера. Локальный контур особенно оправдан, когда аудио чувствительно, нагрузка регулярна, есть подходящая инфраструктура и команда готова поддерживать весь pipeline, а не только модель.
Какие метрики действительно нужны пилоту
Word Error Rate — стандартная метрика ASR, используемая и в оценках NIST, но одного WER недостаточно. Ошибка в предлоге и ошибка в сумме влияют на бизнес по-разному.
На пилоте измеряйте:
- WER или CER на репрезентативной выборке;
- точность имён, артикулов, сумм, дат и адресов;
- ошибку разметки говорящих и перекрывающейся речи;
- долю выводов с корректным тайм-кодом;
- полноту обязательств и следующих действий;
- долю карточек, принятых без исправления и после небольшой правки;
- минуты ручной проверки на один принятый результат;
- p95 задержки от окончания звонка до черновика;
- долю задач, ушедших в карантин или на повторную обработку.
Корпус должен отражать реальные каналы, гарнитуры, регионы, фон, длительность и типы звонков. Рекламная студийная запись почти ничего не говорит о качестве на восьмикилогерцовом телефонном аудио.
Пилот на 50–100 звонках
Выберите один процесс с понятным результатом — например, входящие продажи или подтверждение заказа. Соберите 50–100 звонков, законно доступных для теста, и разметьте ключевые поля вручную. Разделите набор на настройку и финальную проверку; не подбирайте пороги по тем же записям, на которых отчитываетесь о качестве.
Первый релиз должен создавать черновик, не менять CRM автоматически. Раз в неделю разбирайте ошибки по этапам: плохое аудио, VAD, ASR, диаризация, словарь, LLM или бизнес-правило. Так становится понятно, что исправлять. Замена большой LLM не поможет, если фамилия потерялась ещё в распознавании речи.
Что взять руководителю
Локальная расшифровка звонков — это не одна модель, а управляемый конвейер с доказательствами и ответственным человеком в конце. Самая разумная точка входа — завершённые звонки, пакетная обработка и черновик CRM с тайм-кодами.
Практический следующий шаг: измерьте объём аудио, выберите 50–100 типичных звонков, зафиксируйте пять критичных полей и посчитайте стоимость одной карточки, принятой сотрудником. Если пилот не умеет показать фрагмент, на котором основан вывод, автоматическую запись в CRM включать рано. Внутрик может слушать быстро, но право обещать от имени компании всё ещё остаётся у людей.
