Улучшенный алгоритм распознавания с помощью Yandex SpeechKit Cloud — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
Строка 28: Строка 28:
  
  
Компонент "'''Приветствие'''".
+
Компонент "'''API ключ'''". Определяет ключ для использования сервиса выделения смысла в web-запросе.
 +
* переменной '''key''' (строковая) присвойте строку с вашим API-ключом.  
  
Компонент "'''ding'''".
+
Компонент "'''Приветствие'''". Воспроизводит приветствие и задает вопрос абоненту, с кем его соединить. Используется синтез речи 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'''"
+
*Текст -  строка '''Секретарь'''
 +
*Адресат - выберите вашего пользователя
  
Компонент "'''на секретаря'''"
+
Компонент "'''Сообщение 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)


Реализация сценария

Рассмотрим алгоритм на примере сценария входящей маршрутизации. Позвонив в компанию, система спрашивает абонента с кем он хочет соединиться. Ответ клиента распознается, а дальше анализируется согласно вышеописанному алгоритму.

Сценарий выглядит следующим образом:

Алгоритм распознавания - 001.png


Компонент "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)