[Управление проектами, Голосовые интерфейсы] Зачем нам потребовалось написать свою реализацию MRCP-сервера. Часть 1
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Привет, Хабр! Сегодня мы хотели бы поделиться кейсом создания собственного MRCP-сервера. Это протокол передачи данных, используемый серверами для предоставления различных услуг (таких как распознавание речи и синтез речи) для своих клиентов. MRCP опирается на другие протоколы, в частности, потоковый протокол реального времени (протокол RTSP) или протокол установления сеанса связи (протокол SIP) для установления и управления сеансом аудиопотоков между клиентом и сервером. О том, что нас привело к созданию собственной реализации этого сервера - под катом. Во второй части расскажем об особенностях своего проекта, с подробным разбором возможностей. UniMRCP - хорошо, но может быть и лучше Первая версия сервера была построена на UniMRCP. Почему? Да просто потому, что это стандарт, и практически его все и используют. Альтернативы практически нет.UniMRCP - кроссплатформенное ПО с открытым исходным кодом, которое включает все необходимое для реализации функций MRCP-клиента и MRCP-сервера. Распространяется под лицензией Apache License 2.0. Все бы ничего, но при работе с UniMRCP у нас возникло несколько проблем.Проблема 1. Дорого! Если использовать просто сервер - то все отлично, но для наших целей был необходим плагин к серверу. Плагин называется UMS Transcribe Plugin, а нужен он для распознавания речи. Все бы ничего, но стоит он $50 за канал. А когда нужно несколько тысяч каналов, как в нашем случае, то такой вариант не очень подходит.Все дело в том, что работа с собеседниками осуществляется по многим тысячам каналов одновременно. Голосовые агенты могут, например, общаться с десятками тысяч клиентов крупной компании, но в этом случае сумма, которую необходимо заплатить производителю плагина, становится просто непомерной.Проблема 2. Паузы Для того, чтобы голосовой агент работал нормально и воспринимался собеседником без проблем, он должен моментально реагировать во время разговора. А в случае использования UniMRCP с этим возникали проблемы, которые мешали нормальному общению с собеседниками-людьми. Сложности появились даже в случае пауз в разговоре.
В документации говорится о назначении speech-complete-timeout - это время, после которого должен вернуться результат распознавания, если абонент молчит. В UniMRCP, как мы не пытались, мы не могли этим управлять. Наш собственный VAD к этому параметру восприимчив.Пример запросаMRCP/2.0 304 RECOGNIZE 1
Channel-Identifier: 230f4b33-fcdc-1239-d5a6-d00ddfa58be9@speechrecog
Content-Type: text/uri-list
Cancel-If-Queue: false
Recognition-Timeout: 30000
Start-Input-Timers: true
No-Input-Timeout: 5000
Speech-Complete-Timeout: 750
Content-Length: 25builtin:speech/transcribeПараметром speech-complete-timeout управлять никак не удавалось - такое впечатление, что это просто не предусмотрено разработчиками. Единственный таймаут, который нормально работал в UniMRCP - это recognition-timeout.Пример разговора (HR-сценарий)Бот: Здравствуйте! Меня зовут Елена, звоню по поводу вашего резюме. Подскажите, предложение по вакансии актуально для вас?
Абонент: Да, здравствуйте
Бот: Смотрите, сейчас у нас открыта вакансия специалиста офиса продаж. В обязанности входит консультация абонентов, продажа оборудования и работа с кассой. Оформление идет полностью официальное, белая зарплата, средний уровень дохода N рублей, максимальный уровень практически не ограничен, есть возможность карьерного роста. График 5 рабочих дней с двумя плавающими выходными. Также предоставляем все социальные гарантии, дмс, бонусы и скидки от компании. Рассмотрите такие условия для себя?
Абонент: А еще раз, откуда вы звоните?
Бот: Это розничная сеть NNN
Абонент: А какой у вас график?
Бот: График работы формируется программой автоматически с учетом потока клиентов и нагрузки на офис с двумя плавающими выходными, то есть смены рабочие 6 8 10 12 часов в день могут быть и не более 40 часов в неделю. При этом график составляется заранее на 2 недели, то есть вы заранее знаете ваш график, ваши выходные, и можете уже планировать.
Абонент: Ну хорошоЭто лишь начало разговора. И если абонент делал большие паузы, то у бота возникали проблемы, возникали большие задержки в работе бота, а это не просто критично, а очень критично. Разговор мог прерваться, не начавшись.Проблема 3. Сложности с реакцией на отказ Речь идет о возможности управлять логикой отправки (START-OF-INPUT) - сообщение, которое сигнализирует о том, что начался ввод и надо бы прервать воспроизведение.
Так, система проигрывает определенный скрипт пользователю.
Бот: Здравствуйте! Меня зовут Валентин и я хочу вам предложить супер-пупер предложение …
Абонент: не-не-не, ниче не надо
Мы должны остановиться и среагировать на это “не-не-не...”. И здесь как раз возникала проблема с возможностью управления логикой отправки.Проблема 4. Необходимость кастомизации UMS Transcribe Plugin - проприетарный плагин, в нем ничего нельзя менять и настраивать. Да, можно связаться с разработчиками, что-то там предложить, но такое взаимодействие требует немало сил и, главное, времени. А его никогда ни у кого нет.Нам же нужно было реализовать не одну кастомную фичу, а сразу несколько, включая:
- распознавание пола.
- разделение кредов по проектам.
- кэширование синтеза.
Хватит это терпеть! Помучавшись с UniMRCP, мы решили, что не хотим больше проблем, поэтому решили найти выход из положения. И лучшим выходом стало написание собственного сервера/плагина.Написали мы его за несколько месяцев - не много и не мало. Столько времени понадобилось потому, что нам нужно было тщательно все разрабатывать с нуля, чтобы потом не решать возникающие из ниоткуда проблемы.Недостатки UniMRCP мы превратили в достоинства собственного продукта, который получил:
- Собственный NLU-алгоритм, способный обучаться на небольшом объеме данных.
- Короткие паузы в диалогах.
- Умную систему реагирования на прерывания разговора со стороны собеседника.
- Возможность создания любого количества каналов.
- Возможность кастомизации - систему можно подстраивать под нужды любого проекта.
Решение стать самостоятельными стало более чем правильным. Кроме того, что мы сами его используем во всех проектах, так им еще и заинтересовались многие компании. Сейчас наша разработка, MRCP-сервер, успешно продается на рынке, ее используют крупные банки и телеком-операторы.
===========
Источник:
habr.com
===========
Похожие новости:
- [Управление проектами, Лайфхаки для гиков] Групповые чаты не работают: как мы сделали форум внутри таск-трекера
- [Алгоритмы, Управление проектами, Agile] ДНК (Деление на команды) – визуализация взаимосвязей людей и команд
- [Машинное обучение, Голосовые интерфейсы] Обновление для Google Assistant: помощник стал лучше понимать имена и контексты
- [Анализ и проектирование систем, Big Data, Хранилища данных, Управление проектами] Создаём компанию мечты: управление качеством данных
- [JavaScript, Интерфейсы, Natural Language Processing, Голосовые интерфейсы] От дизайна до разработки: как делать качественные смартапы для виртуальных ассистентов Салют
- [Голосовые интерфейсы] Google тестирует активацию голосового помощника без кодовой фразы
- [Управление проектами, Медийная реклама, Управление продуктом, Управление медиа, Финансы в IT] Российские власти обсуждают запрет закупки рекламы в зарубежных сервисах для госкомпаний или юрлиц
- [Управление проектами, Управление продуктом, Законодательство в IT, IT-компании] После объявления о нерабочих майских у РЖД упали сайт и приложение
- [Системное администрирование, PHP, Программирование, Разработка систем связи] Голосовое меню своими руками
- [Программирование, Управление проектами, Облачные сервисы, Микросервисы] О мифологии миграции монолита в облака
Теги для поиска: #_upravlenie_proektami (Управление проектами), #_golosovye_interfejsy (Голосовые интерфейсы), #_neuro.net, #_ivr, #_mrcp, #_blog_kompanii_neuro.net (
Блог компании Neuro.net
), #_upravlenie_proektami (
Управление проектами
), #_golosovye_interfejsy (
Голосовые интерфейсы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 11:32
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Привет, Хабр! Сегодня мы хотели бы поделиться кейсом создания собственного MRCP-сервера. Это протокол передачи данных, используемый серверами для предоставления различных услуг (таких как распознавание речи и синтез речи) для своих клиентов. MRCP опирается на другие протоколы, в частности, потоковый протокол реального времени (протокол RTSP) или протокол установления сеанса связи (протокол SIP) для установления и управления сеансом аудиопотоков между клиентом и сервером. О том, что нас привело к созданию собственной реализации этого сервера - под катом. Во второй части расскажем об особенностях своего проекта, с подробным разбором возможностей. UniMRCP - хорошо, но может быть и лучше Первая версия сервера была построена на UniMRCP. Почему? Да просто потому, что это стандарт, и практически его все и используют. Альтернативы практически нет.UniMRCP - кроссплатформенное ПО с открытым исходным кодом, которое включает все необходимое для реализации функций MRCP-клиента и MRCP-сервера. Распространяется под лицензией Apache License 2.0. Все бы ничего, но при работе с UniMRCP у нас возникло несколько проблем.Проблема 1. Дорого! Если использовать просто сервер - то все отлично, но для наших целей был необходим плагин к серверу. Плагин называется UMS Transcribe Plugin, а нужен он для распознавания речи. Все бы ничего, но стоит он $50 за канал. А когда нужно несколько тысяч каналов, как в нашем случае, то такой вариант не очень подходит.Все дело в том, что работа с собеседниками осуществляется по многим тысячам каналов одновременно. Голосовые агенты могут, например, общаться с десятками тысяч клиентов крупной компании, но в этом случае сумма, которую необходимо заплатить производителю плагина, становится просто непомерной.Проблема 2. Паузы Для того, чтобы голосовой агент работал нормально и воспринимался собеседником без проблем, он должен моментально реагировать во время разговора. А в случае использования UniMRCP с этим возникали проблемы, которые мешали нормальному общению с собеседниками-людьми. Сложности появились даже в случае пауз в разговоре. В документации говорится о назначении speech-complete-timeout - это время, после которого должен вернуться результат распознавания, если абонент молчит. В UniMRCP, как мы не пытались, мы не могли этим управлять. Наш собственный VAD к этому параметру восприимчив.Пример запросаMRCP/2.0 304 RECOGNIZE 1 Channel-Identifier: 230f4b33-fcdc-1239-d5a6-d00ddfa58be9@speechrecog Content-Type: text/uri-list Cancel-If-Queue: false Recognition-Timeout: 30000 Start-Input-Timers: true No-Input-Timeout: 5000 Speech-Complete-Timeout: 750 Content-Length: 25builtin:speech/transcribeПараметром speech-complete-timeout управлять никак не удавалось - такое впечатление, что это просто не предусмотрено разработчиками. Единственный таймаут, который нормально работал в UniMRCP - это recognition-timeout.Пример разговора (HR-сценарий)Бот: Здравствуйте! Меня зовут Елена, звоню по поводу вашего резюме. Подскажите, предложение по вакансии актуально для вас? Абонент: Да, здравствуйте Бот: Смотрите, сейчас у нас открыта вакансия специалиста офиса продаж. В обязанности входит консультация абонентов, продажа оборудования и работа с кассой. Оформление идет полностью официальное, белая зарплата, средний уровень дохода N рублей, максимальный уровень практически не ограничен, есть возможность карьерного роста. График 5 рабочих дней с двумя плавающими выходными. Также предоставляем все социальные гарантии, дмс, бонусы и скидки от компании. Рассмотрите такие условия для себя? Абонент: А еще раз, откуда вы звоните? Бот: Это розничная сеть NNN Абонент: А какой у вас график? Бот: График работы формируется программой автоматически с учетом потока клиентов и нагрузки на офис с двумя плавающими выходными, то есть смены рабочие 6 8 10 12 часов в день могут быть и не более 40 часов в неделю. При этом график составляется заранее на 2 недели, то есть вы заранее знаете ваш график, ваши выходные, и можете уже планировать. Абонент: Ну хорошоЭто лишь начало разговора. И если абонент делал большие паузы, то у бота возникали проблемы, возникали большие задержки в работе бота, а это не просто критично, а очень критично. Разговор мог прерваться, не начавшись.Проблема 3. Сложности с реакцией на отказ Речь идет о возможности управлять логикой отправки (START-OF-INPUT) - сообщение, которое сигнализирует о том, что начался ввод и надо бы прервать воспроизведение. Так, система проигрывает определенный скрипт пользователю. Бот: Здравствуйте! Меня зовут Валентин и я хочу вам предложить супер-пупер предложение … Абонент: не-не-не, ниче не надо Мы должны остановиться и среагировать на это “не-не-не...”. И здесь как раз возникала проблема с возможностью управления логикой отправки.Проблема 4. Необходимость кастомизации UMS Transcribe Plugin - проприетарный плагин, в нем ничего нельзя менять и настраивать. Да, можно связаться с разработчиками, что-то там предложить, но такое взаимодействие требует немало сил и, главное, времени. А его никогда ни у кого нет.Нам же нужно было реализовать не одну кастомную фичу, а сразу несколько, включая:
=========== Источник: habr.com =========== Похожие новости:
Блог компании Neuro.net ), #_upravlenie_proektami ( Управление проектами ), #_golosovye_interfejsy ( Голосовые интерфейсы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 11:32
Часовой пояс: UTC + 5