Мы строим SlovoAI - сервис, который учит продавать.

Эта статья — первая глава нашего рассказа о выборе технологий, ошибках, неудачных решениях и неожиданных находках — всём, что обычно остаётся за кадром стартапов.

Введение: куда мы идём:

Мы строим SlovoAI — сервис, который учит продавать лучше. Не через теорию и вебинары, а через разбор реальных звонков. Как это работает: менеджер поговорил с клиентом, мы взяли запись и показываем — вот тут ты не дал клиенту договорить, тут забыл спросить про бюджет, здесь слишком торопился. И главное — что с этим делать на следующем звонке. Цель на год — 100 000 активных продавцов в неделю получают такой коучинг.

Чтобы это построить, нужна архитектура из нескольких слоёв:

Каждый слой зависит от предыдущего. Без качественного ASR не посчитаешь темп речи. Без аналитики не дашь рекомендации. Без рекомендаций нет ценности для пользователя.
Каждый слой зависит от предыдущего. Без качественного ASR не посчитаешь темп речи. Без аналитики не дашь рекомендации. Без рекомендаций нет ценности для пользователя.

И вся эта архитектура нужна лишь ради одного: чтобы после звонка продавец понимал, что надо улучшить, чтобы продажа точно состоялась. Так что вся последующая аналитика начинается с одного шага: правильного превращения аудио в текст, разделением, кто это сказал, как и когда. Качество и глубина ASR определяет ценность, которую сервис может предоставить нашему клиенту. Ошибемся здесь — дальше потеряем на качестве во всех этапах: неправильно считается темп речи, путаются реплики клиента и продавца, рекомендации становятся менее глубокими и полезными, система выявляет меньше инсайдов. Поэтому прежде чем переходить к разработке аналитического и рекомендательных блоков, мы поставили себе цель разобраться в конкурентных технологиях на рынке, протестировать все, выявить качество каждой по отдельности, сравнить между собой и выбрать финальный вариант, который будем использовать в продакшене (+ один запасной fall-back вариант, на случай не-предусмотренных рисков).  

Почему ASR — это первый реальный выбор:

Вся аналитика — темп речи, слова-паразиты, прошёл ли менеджер по этапам продажи — начинается с одного — с превращения аудио в текст, разделением кто что сказал и когда. Звучит просто. Но на практике  это выбор, который определяет качество всего продукта среди множества конкурентных решений, каждый из которых обладает своими как сильными, так и слабыми сторонами. Среди базовых критериев того, что нам нужно мы изначально сформулировали: ● Транскрипция — перевод аудио в текст ● Диаризация — кто говорит: менеджер или клиент (причем нам нужна была именно встроенная система диаризации, на случай, если клиент загружает аудио не из телефонии (там предустановлено разделение сторон разговора), а из других источников) ● Word-level timestamps — когда произнесено каждое слово (для расчёта темпа, пауз, перебиваний) ● Низкая доля ошибок транскрибации из аудио в текст на русском (наш главный рынок), то есть стандартная метрика Words Error Rate, которую учитывают при сравнении ASR.

Кандидаты:

Определились с задачей, определились с критериями и пошли ресерчить. Нашли большое количество площадок сравнения различных ASR сервисов с различными метриками, сделали предварительную оценку и остановились на следующих наиболее вероятных вариантах - Yandex SpeechKit, Deepgram, AssemblyAI, OpenAI Whisper API.

Как тестировали:   Нам было важно проверить сервисы не в теоретических рамках, а в реальных разговорах — с шумом, перебиваниями и возможно плохим качеством связи. Ведь продукту все равно придется работать с реальными, иногда грязными записями звонков. Взяли реальные записи из CRM бизнес-партнёров. Усложнили себе задачу, для чего выбрали файлы без преднамеренной диаризации. Никакого разделения на каналы «агент слева, клиент справа» из телефонии. Один аудиопоток, несколько голосов — разбирайтесь сами. Тестовая выборка получилась такой: ● 27 записей общей длительностью 4.5 часа ● Длина аудиозвонков от 3 до 25 минут ● От 2 до 3 участников в разговоре ● Разное качество записей: чистые записи, фоновый шум, телефонное сжатие Для оценки качества на части аудио сделали ручную разметку — ground truth. Прослушали, расставили границы реплик, отметили кто говорит. Потом  уже сравнивали с тем, что выдают провайдеры. Проверяли: ● Распознаёт ли текст корректно (особенно русский) ● Разделяет ли спикеров и сколько их находит ● Есть ли таймстемпы по словам ● Скорость обработки ● Цена

Первые грабли: Yandex и публичный доступ:

Начали с Yandex — логично для русского языка. Качество транскрипции отличное. Но v2 API требует загрузить аудио в Object Storage. Загрузили, отправили запрос — 403 Permission Denied. Два часа дебага. Проверяли права, перепроверяем ключи.Оказалось, файлы в бакете просто приватные по умолчанию. SpeechKit не может их прочитать. Нужно явно указывать ACL=“public-read” при загрузке. Мелочь, но нигде это явно не подсвечено, в итоге потерян почти час времени. Хоть разовая настройка и не влияет на выбор с точки зрения долгосрочных «отношений» с сервисом, работа с Yandex оказалась чуть более сложной, чем хотелось. У этого решения очень хорошее качество транскрипции, точного WER не рассчитывали, определяли на глаз, но вот их главная проблема Yandex это отсутствие встроенной диаризации. Все реплики приходят от одного speaker_id. Для нашего решения, где критично разделить менеджера и клиента, такой вариант не подходит. Возможно, в будущем мы вернемся к этому решению и попробуем его совместить с некоторой другой моделью (одна модель будет делать диаризацию, другая транскрибировать и выставлять временные отметки), но пока решили отложить.

Deepgram vs AssemblyAI: скорость против точности:

Скорость:

Deepgram — в 66 раз быстрее реального времени. Час аудио за 55 секунд. AssemblyAI — в 17 раз быстрее. Час за 3.5 минуты. С точки зрения скорости оба варианта нас устраивали. Решение в итоге упёрлось в качество диаризации.

Диаризация — ключевой тест:

На файлах с 3+ спикерами:

Мы строим SlovoAI - сервис, который учит продавать.

И именно здесь скорость перестала быть главным фактором. Deepgram стабильно терял одного человека в групповых звонках. Это критично — мы не поймём, кто что сказал. AssemblyAI корректно разделял всех участников и правильно группировал реплики.

Цена:

Разница — $2.50 на 1000 минут. Несущественно для качества диаризации.
Разница — $2.50 на 1000 минут. Несущественно для качества диаризации.

OpenAI:

Попробовали новый gpt-4o-transcribe с диаризацией. Результат: диаризация не работает. API возвращает один сегмент без разделения спикеров. Плюс галлюцинации — в конце русского текста появлялись английские фразы. Закрыли вопрос. Локальные модели не тестировали заведомо, т. к. это сильное усложнение и от этого решения нет никакого потенциального преимущества.

Итоговая таблица:

Мы строим SlovoAI - сервис, который учит продавать.

Решение: AssemblyAI:

После нескольких раундов тестов стало понятно: именно AssemblyAI даёт тот стабильный результат, который нам нужен для создания отличного продукта. Почему выбрали в итоге AssemblyAI: ● Единственный с надёжной диаризацией на 2+ спикеров ● Word-level timestamps с confidence score ● Автоматическая пунктуация — текст сразу читаемый ● Простая интеграция — pip install assemblyai, 10 строк кода ● Цена разумная — $0.90 в час Deepgram оставили как fallback — если критична скорость или AssemblyAI упадёт.

Что дальше:

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

3
1
Начать дискуссию