Улучшенный алгоритм распознавания с помощью Yandex SpeechKit Cloud — различия между версиями
Строка 28: | Строка 28: | ||
− | Компонент "''' | + | Компонент "'''API ключ'''". Определяет ключ для использования сервиса выделения смысла в web-запросе. |
+ | * переменной '''key''' (строковая) присвойте строку с вашим API-ключом. | ||
− | Компонент "''' | + | Компонент "'''Приветствие'''". Воспроизводит приветствие и задает вопрос абоненту, с кем его соединить. Используется синтез речи Yandex. |
+ | * Режим - Воспроизвести | ||
+ | * Текст - Здравствуйте. С кем вас соединить | ||
+ | * Голос - Zahar | ||
+ | * Эмоция - по умолчанию | ||
+ | * Кэш - использовать | ||
− | Компонент "''' | + | Компонент "'''ding'''". Воспроизводит короткий сигнал для абонента, соответствующий началу записи. |
+ | * Режим - Файл полностью | ||
+ | * Файл - ding.wav | ||
− | + | <span style="color:red">ВНИМАНИЕ: Вместо компонентов "Приветствие" и "ding" вы можете использовать свой звуковой файл с записанной информацией. Синтез речи приведен в сценарии для примера.</span> | |
− | Компонент "'''Ув1'''" | + | Компонент "'''Распознавание речи'''". Записывает и распознает речь абонента. После 1 секунды тишины воспроизводит ding.wav и переходит к следующему компоненту. |
+ | * Режим - Записать | ||
+ | * Символы прерывания - * | ||
+ | * Прервать при обнаружении тишины - Включить | ||
+ | * Интервал тишины, с - 1 | ||
+ | * Настройки голосового детектора - по умолчанию | ||
+ | * Сигнал окончания записи - ding.wav | ||
+ | * Сохранение файла записи - Не сохранять | ||
+ | * Тема - queries | ||
+ | * Текст в переменную - переменная '''parse_bestText''' (строковая) | ||
+ | |||
+ | Компонент "'''Запрос на выделение смысла'''". Отправляет распознанный текст на сервис Yandex и получает размеченную JSON-структуру. | ||
+ | * URL - выражение | ||
+ | 'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[parse_bestText]+'&layers=Fio,Morph,GeoAddr&key='+[key] | ||
+ | * Метод - GET | ||
+ | * Режим работы - Обрыв по таймауту | ||
+ | * Таймаут, сек - 30 | ||
+ | * Ответ в переменную - переменная '''response''' (строковая) | ||
+ | |||
+ | <span style="color:red">ВНИМАНИЕ: Если по истечению таймаута сервис Yandex не ответит на запрос произойдет обрыв связи. Вам нужно самостоятельно обработать этот момент.</span | ||
+ | |||
+ | Компонент "'''Ув1'''". Отладочное уведомление с выводом полученной JSON структуры. | ||
+ | *Отладочный режим - Да | ||
+ | *Текст - выражение: | ||
+ | 'Текст '+[parse_bestText]+endline+'Смысл '+[response] | ||
+ | *Адресат - выберите вашего пользователя | ||
Компонент "'''id_morph=0'''" | Компонент "'''id_morph=0'''" | ||
Строка 56: | Строка 89: | ||
Компонент "'''text'''" | Компонент "'''text'''" | ||
− | Компонент "'''Ув2'''" | + | Компонент "'''Ув2'''". Отладочное уведомление администратору с выводом текущей леммы. |
+ | *Отладочный режим - Да | ||
+ | *Текст - переменная '''text''' | ||
+ | *Адресат - выберите вашего пользователя | ||
Компонент "'''Выбор варианта'''" | Компонент "'''Выбор варианта'''" | ||
Строка 62: | Строка 98: | ||
Компонент "'''id_lemmas++'''" | Компонент "'''id_lemmas++'''" | ||
− | Компонент "'''Секретарь'''". | + | Компонент "'''Секретарь'''". Отладочное уведомление администратору с выводом выбранного направления. |
− | + | *Отладочный режим - Да | |
− | + | *Текст - строка '''Секретарь''' | |
+ | *Адресат - выберите вашего пользователя | ||
− | Компонент "''' | + | Компонент "'''Сообщение 1'''". Воспроизводит абоненту, что соединяет его с секретарем. |
+ | * Режим - Воспроизвести | ||
+ | * Текст - Секретарь. Соединяю. | ||
+ | * Голос - Zahar | ||
+ | * Эмоция - по умолчанию | ||
+ | * Кэш - использовать | ||
− | Компонент "''' | + | Компонент "'''на секретаря'''". Переключает на требуемого сотрудника. |
+ | * Назначение - Внутрь | ||
+ | * Номер - 601 | ||
+ | * Тип вызова - Обычный | ||
− | Компоненты "Техподдержка", "Сообщение 2", "на техподдержку" аналогично ветке "Секретарь" - "на секретаря". | + | Компоненты "'''Техподдержка'''", "'''Сообщение 2'''", "'''на техподдержку'''" настраиваются аналогично ветке "'''Секретарь'''" - "'''на секретаря'''". |
Компонент "'''->'''" | Компонент "'''->'''" | ||
Строка 76: | Строка 121: | ||
Компонент "'''id_morph++'''" | Компонент "'''id_morph++'''" | ||
− | Компонент "'''Ув3'''" | + | Компонент "'''Ув3'''". Отладочное уведомление администратору о том, что сервис не нашел ключевых слов во фразе. |
+ | *Отладочный режим - Да | ||
+ | *Текст - строка ''Не определил'' | ||
+ | *Адресат - выберите вашего пользователя | ||
− | Компонент "'''Неизвестная фраза'''" | + | Компонент "'''Неизвестная фраза'''". Воспроизводит абоненту сообщение, что не смог разобрать его фразу. |
+ | * Режим - Воспроизвести | ||
+ | * Текст - Я вас не понял, повторите еще раз пожалуйста | ||
+ | * Голос - Zahar | ||
+ | * Эмоция - по умолчанию | ||
+ | * Кэш - использовать | ||
Компонент "'''ding2'''" | Компонент "'''ding2'''" |
Версия 09:15, 16 января 2015
Содержание
Введение
В данной статье показывается пример улучшения анализа распознанной речи с помощью сервиса выделения смысла.
На данный момент анализ текста проводится в компоненте "Распознавание речи" с помощью свойства "Предопределенные значения". Это может быть неудобным для анализа длинных выражений, так как чтобы получить код группы должно быть полное совпадение распознанного выражения с одним из предопределенных. Например, чтобы соединиться с инженерами техподдержкой, клиент может сказать:
- Соедините меня с отделом технической поддержки
- Переключите меня на инженеров
- Мне срочно нужны ваши программисты
Очевидно, что одна и та же фраза может содержать существительные в разных падежах, иметь разную длину и предугадать все возможные комбинации почти невозможно. Отметим однако, что встроенные возможности компонента легко решают задачу распознавания одного слова.
Идея улучшения анализа заключается в применении сервиса выделения смысла. Сервис разбивает фразу на отдельные слова (леммы), преобразовывая существительные в именительный падеж, а глаголы в инфинитив. После этого сценарий в цикле просматривает каждую лемму и ищет совпадение с ключевым словом. В каком бы падеже не стояло искомое слово, если оно есть во фразе, алгоритм найдет его. Как только совпадение сработает происходит переключение на требуемый отдел.
Скачать файл: Yandex_SpeechKit_Cloud_улучшенный_алгоритм.oscr (собрано на версии 2.11.2.141230)
Реализация сценария
Рассмотрим алгоритм на примере сценария входящей маршрутизации. Позвонив в компанию, система спрашивает абонента с кем он хочет соединиться. Ответ клиента распознается, а дальше анализируется согласно вышеописанному алгоритму.
Сценарий выглядит следующим образом:
Компонент "API ключ". Определяет ключ для использования сервиса выделения смысла в web-запросе.
- переменной key (строковая) присвойте строку с вашим API-ключом.
Компонент "Приветствие". Воспроизводит приветствие и задает вопрос абоненту, с кем его соединить. Используется синтез речи Yandex.
- Режим - Воспроизвести
- Текст - Здравствуйте. С кем вас соединить
- Голос - Zahar
- Эмоция - по умолчанию
- Кэш - использовать
Компонент "ding". Воспроизводит короткий сигнал для абонента, соответствующий началу записи.
- Режим - Файл полностью
- Файл - ding.wav
ВНИМАНИЕ: Вместо компонентов "Приветствие" и "ding" вы можете использовать свой звуковой файл с записанной информацией. Синтез речи приведен в сценарии для примера.
Компонент "Распознавание речи". Записывает и распознает речь абонента. После 1 секунды тишины воспроизводит ding.wav и переходит к следующему компоненту.
- Режим - Записать
- Символы прерывания - *
- Прервать при обнаружении тишины - Включить
- Интервал тишины, с - 1
- Настройки голосового детектора - по умолчанию
- Сигнал окончания записи - ding.wav
- Сохранение файла записи - Не сохранять
- Тема - queries
- Текст в переменную - переменная parse_bestText (строковая)
Компонент "Запрос на выделение смысла". Отправляет распознанный текст на сервис Yandex и получает размеченную JSON-структуру.
- URL - выражение
'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[parse_bestText]+'&layers=Fio,Morph,GeoAddr&key='+[key]
- Метод - GET
- Режим работы - Обрыв по таймауту
- Таймаут, сек - 30
- Ответ в переменную - переменная response (строковая)
ВНИМАНИЕ: Если по истечению таймаута сервис Yandex не ответит на запрос произойдет обрыв связи. Вам нужно самостоятельно обработать этот момент."
Компонент "id_morph++"
Компонент "Ув3". Отладочное уведомление администратору о том, что сервис не нашел ключевых слов во фразе.
- Отладочный режим - Да
- Текст - строка Не определил
- Адресат - выберите вашего пользователя
Компонент "Неизвестная фраза". Воспроизводит абоненту сообщение, что не смог разобрать его фразу.
- Режим - Воспроизвести
- Текст - Я вас не понял, повторите еще раз пожалуйста
- Голос - Zahar
- Эмоция - по умолчанию
- Кэш - использовать
Компонент "ding2"
Скачать файл: Yandex_SpeechKit_Cloud_улучшенный_алгоритм.oscr (собрано на версии 2.11.2.141230)