, ,
Язык описания сценария диалога для речевого управления
Аннотация
Статья посвящена проблеме организации речевого управления прикладными системами, основанного на речевом диалоге компьютера с пользователем. Рассматриваются вопросы взаимодействия модулей распознавания речи, синтеза сообщений и собственно управления прикладной системой на примере демонстрационной программы речевого заполнения анкеты и выдачи результата в зависимости от введенных параметров. Дается определение языка описания сценария диалога речевого управления.
Введение
Современное состояние автоматического распознавания речи позволяет использовать речевой ввод для управления прикладными системами. В настоящее время появляются дикторонезависимые системы распознавания речи, которые дают высокое качество распознавания на ограниченном словаре в 200-300 слов. Независимость от диктора, и достаточное качество распознавания дает возможность использовать такие системы для речевого управления прикладными системами, т. к. количество вариантов вводимых команд в каждом конкретном узле диалога прикладной системой с пользователем достаточно невелико. При переходе к следующей стадии диалога требуется перенастроить систему распознавания на ввод команд из другого списка распознавания. Для организации такого взаимодействия требуется построить сценарий диалога и описать его в терминах специального языка описания.
Сценарий речевого диалога с компьютером
Речевым диалогом между системой, представляющей собой комплекс специально разработанных программ, и пользователем будем называть последовательность речевых сообщений, произнесенных системой и пользователем. Здесь предлагается такая организация речевого диалога, которая использует предварительно построенный сценарий диалога.
Сценарий диалога можно представить в виде конечного ориентированного графа G=(V, R), где V={vi} - множество вершин, а R={ri} - множество ребер. Этот граф имеет одну начальную вершину и одну конечную вершину. Каждой вершине графа поставлена в соответствие некоторая информационная структура.
Реализацией сценария будем называть путь в графе, ведущий из начальной вершины в конечную. Для каждой конкретной реализации сценария диалога выбор ребра, ведущего из некоторой вершины в последующую, определяется значением функции выбора, которая является одним из элементов информационной структуры, соответствующей данной вершине.
Для того чтобы иметь возможность задавать тот или иной сценарий диалога, был разработан язык описания сценария. Изложим те предположения, которые принимались во внимание при разработке языка описания.
Предполагается, что ведущим субъектом в речевом диалоге является система. Она начинает диалог и может выдавать сообщения следующих двух типов:
- сообщения типа C, требующие реакции пользователя;
- сообщения типа A, не требующие реакции пользователя.
Речевой образ текста, соответствующего сообщению системы или сообщению пользователя, представлен в виде оцифрованной звуковой волны. При этом характер произнесения текста пользователем, с точки зрения языка описания сценария диалога, не имеет значения. Это может быть дискретная речь, когда текст произносится с короткими, отчетливо выделяемыми паузами между отдельными словами, или непрерывная речь, при которой текст произносится обычным образом, без специальных пауз между словами. Также не имеет значения, является ли речь читаемой или спонтанной, произносимой экспромтом. Характер произнесения текста имеет значение лишь для механизмов распознавания речи, реализованных в системе.
Допускается возможность отсутствия речевых образов сообщений системы. В этом случае сообщения системы выдаются только в текстовом виде, например, на экран.
Предполагается, что механизмы распознавания речевых сообщений пользователя являются словарно-зависимыми. Поэтому каждому сценарию диалога соответствует свое множество словарей. Получив сообщение пользователя, распознающий механизм системы, используя соответствующий этому сообщению словарь, выбирает один из заданных в сценарии возможных альтернативных вариантов результатов распознавания. В зависимости от выбранного варианта выдается то или другое очередное сообщение системы, либо диалог вообще заканчивается. Все множество вариантов результатов распознавания сообщения пользователя может быть заранее разбито на некоторое количество групп таким образом, что на любой вариант, входящий в одну и ту же группу, система должна выдавать одно и то же сообщение, а вариантам, входящим в разные группы, соответствуют разные сообщения системы. В частности, каждый вариант может образовывать отдельную группу.
С учетом изложенных предположений о характере интерфейса между системой и пользователем в речевом диалоге каждой вершине графа, представляющего сценарий, можно поставить в соответствие некоторое сообщение системы. Будем называть C-вершиной вершину, которой соответствует сообщение типа C, и A-вершиной - вершину, которой соответствует сообщение типа A. При этом с каждой вершиной связывается некоторая информационная структура. Характер информации, содержащийся в этой структуре, зависит от типа сообщения системы.
Для сообщений типа C информационная структура должна содержать:
· информацию о тексте сообщения;
· информацию о речевом образе сообщения;
· информацию о словаре, в соответствии с которым будет распознаваться ответ пользователя на это сообщение;
· информацию о множестве вариантов результатов распознавания ответа пользователя;
· информацию о количестве различных реакций системы на ответы пользователя;
· информацию об алгоритме, сопоставляющем ответу пользователя соответствующую реакцию системы.
Для сообщений типа A информационная структура должна содержать:
· информацию о тексте сообщения;
· информацию о речевом образе сообщения;
· имя C-вершины, которой соответствует сообщение, выдаваемое системой после данного сообщения типа A.
Язык описания сценария
В соответствии с изложенными выше соображениями о структуре сценария диалога и его информационном содержании разработан синтаксис языка описания сценария.
Описание сценария представляет собой последовательность строк операторов. Каждый оператор начинается с новой строки.
В первой строке описания сценария записывается количество C-вершин графа, соответствующего данному сценарию. Каждая следующая строка содержит некоторый оператор. Операторы располагаются группами, каждая из которых относится к определенной C-вершине и содержит соответствующую ей последовательность операторов. Будем называть такую группу C-группой. Каждая C-группа в описании сценария должна иметь уникальное имя.
Рассмотрим операторы C-группы и их форматы.
#C <имя C-группы>.
#M <имя файла, содержащего текст сообщения>.
Если текст сообщения отсутствует, то вместо имени файла записывается 0.
#W <имя wav-файла, содержащего речевой образ сообщения>.
Если речевой образ отсутствует, то вместо имени файла пишется 0.
#V <название словаря, который используется при распознавании ответа пользователя на данное сообщение>.
#T <номер таблицы, которая ставит в соответствие каждому элементу множества вариантов ожидаемых ответов пользователя номер группы разбиения этого множества>.
Такая таблица должна быть подготовлена заранее. При этом в одну группу должны быть собраны варианты ожидаемых ответов пользователя, которые системы трактует как один ответ. Например, ответы пользователя «серого» и «серые» на вопрос системы: «Какого цвета Ваши глаза?» трактуются ею как одинаковые.
#G <количество различных реакций системы (сообщений типа A) на ответы пользователя>.
#F <номер функции, отображающей множество групп разбиения вариантов ожидаемых ответов пользователя в множество сообщений системы типа A, соответствующих данному сообщению типа C>.
В процессе работы интерпретатора языка описания сценария диалога этот оператор преобразуется в вызов программы, реализующей эту функцию. Предполагается, что такая программа должна быть написана заранее. Она должна активизировать соответствующую реакцию системы на тот или иной ответ пользователя.
За C-группой операторов может следовать ряд A-групп операторов. Каждая A-группа состоит из операторов, описывающих сообщение типа A системы, которое является реакцией на ответ пользователя на сообщение типа C, описанное в данной C-группе. Количество таких A-групп, следующих за C-группой, не должно превышать количества групп, указанного в операторе #G описания данной C-группы.
Опишем форматы операторов для A-группы.
#A <номер группы>|<номер группы> (<кратность группы>).
Второй вариант записи операнда в операторе #A удобно использовать в том случае, когда для нескольких ответов пользователя на сообщение типа C должна следовать одна и та же реакция системы. Это дает возможность сокращать описание сценария. В этом случае запись одной такой A-группы операторов эквивалентно записи нескольких A-групп с номерами от <номер группы> по (<номер группы> + <кратность группы> –1) включительно.
#M <имя файла, содержащего текст сообщения типа A>.
Если текст сообщения отсутствует, то вместо имени файла записывается число 0.
#W <имя wav-файла, содержащего речевой образ сообщения типа A>.
Если речевой образ отсутствует, то вместо имени файла записывается число 0.
#N <имя C-группы с описанием сообщения типа C, которое должно быть выдано системой после данного сообщения типа A>.
Если вместо имени стоит слово “quit”, то это означает окончание диалога.
Сценарий диалога, описанный с использованием приведенных выше операторов, записывается в файл и затем обрабатывается с помощью специальной программы-интерпретатора. Сценарий можно частично менять без изменения интерпретирующих программ.
В частности, можно вставлять новые C-группы операторов. Однако при этом надо позаботиться о том, чтобы было обеспечено наличие, в случае необходимости, соответствующих файлов с текстами новых сообщений системы и их речевых образов, словарей, используемых при распознавании ответов пользователя, таблиц соответствия между ожидаемыми вариантами результатов распознавания и номерами групп разбиения множества этих вариантов. В некоторых случаях, возможно, потребуется дополнительно написать программу функции, связывающей эти варианты с реакцией системы на них.
Можно удалять A-группы операторов или добавлять новые, естественно, обеспечив наличие файлов, требующихся при описании этих операторов.
С целью исследования способов описания сценариев диалога, а также для отработки программного обеспечения их выполнения была построена специальная модель. Эта модель демонстрировалась на выставке «КОМТЕК-97». Проблемы, связанные с задачей распознавания речевых сообщений, которые отрабатывались на этой модели, обсуждаются в работе [1]. Приведем в общих чертах описание сценария диалога для этой модели.
Диалог начинает система с некоторого приглашения, в котором предлагает пользователю принять участие в диалоге. Пользователь может ответить “нет”, и система, поблагодарив пользователя, завершит диалог, или ответить “да”, и в этом случае система продолжит диалог.
В случае продолжения диалога система просит пользователя назвать месяц, в котором он родился. Получив ответ, система просит назвать число, когда он родился. На основании этих двух ответов пользователя система сообщает ему, кто он по гороскопу и какой драгоценный камень ему покровительствует.
Затем система просит пользователя сказать, какого цвета у него глаза. В зависимости от ответа, она в некоторых случаях может попросить пользователя уточнить свой ответ. Например, если пользователь сказал, что у него глаза “карие”, система попросит уточнить, какие именно, “светло-карие” или “темно-карие”.
После этого система на основании цвета глаз выдает сообщение о чертах характера пользователя.
И, наконец, система спрашивает пользователя, распечатать ли для него текст диалога. Получив ответ, система благодарит пользователя, выполняет соответствующие действия и завершает диалог.
Теперь приведем точное описание сценария этого диалога в терминах языка описания, изложенного ранее. При этом в левой части строки записывается оператор, а справа от него краткий комментарий.
6 в сценарии 6 C-вершин, требующих ответа пользователя
#C pre предложение пользователю принять участие в диалоге
#M preambul. dia файл с текстом сообщения системы
#W 0 речевой образ этого сообщения отсутствует
#V yes словарь для распознавания ответа на это сообщение
#T 1 таблица 1 разбиения ответов пользователя на группы
#G 2 ожидается 2 группы вариантов ответов
#F 0 функция с номером 0 соответствия реакциям системы
#A 1 реакция системы, если пользователь отвечает «да»
#M 0 текст сообщения отсутствует
#W 0 речевой образ сообщения отсутствует
#N mon переход к C-вершине с именем «mon»
#A 2 реакция системы, если пользователь отвечает «нет»
#M thank. dia текст сообщения системы (благодарит пользователя)
#W thank. wav речевой образ сообщения системы
#N quit окончание диалога
#C mon система просит пользователя назвать месяц рождения
#M month. dia текст сообщения системы
#W month. wav речевой образ сообщения системы
#V month словарь для распознавания названий месяцев
#T 1 таблица 1 разбиения ответов пользователя на группы
#G 12 возможно 12 групп вариантов ответов пользователя
#F 0 функция с номером 0 соответствия реакциям системы
#A 1 (12) реакция системы на название пользователем месяца
#M 0 текст сообщения отсутствует
#W 0 речевой образ отсутствует
#N num переход к C-вершине с именем «num»
#C num система просит пользователя назвать число рождения
#M number. dia текст сообщения системы
#W number. wav речевой образ сообщения системы
#V number словарь для распознавания чисел
#T 1 таблица 1 разбиения ответов пользователя на группы
#G 12 12 типов реакции системы на ответы пользователя
#F 3 функция 3 соответствия ответов реакциям системы
#A 1 реакция системы, если пользователь – «водолей»
#M vod21_01.txt текст сообщения системы
#W vod21_01.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 2 реакция системы, если пользователь – «рыба»
#M rib20_02.txt текст сообщения системы
#W rib20_02.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 3 реакция системы, если пользователь – «овен»
#M ove22_03.txt текст сообщения системы
#W ove22_03.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 4 реакция системы, если пользователь – «телец»
#M tel21_04.txt текст сообщения системы
#W tel21_04.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 5 реакция системы, если пользователь – «близнец»
#M bli22_05.txt текст сообщения системы
#W bli22_05.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 6 реакция системы, если пользователь – «рак»
#M rak22_06.txt текст сообщения системы
#W rak22_06.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 7 реакция системы, если пользователь – «лев»
#M lev23_07.txt текст сообщения системы
#W lev23_07.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 8 реакция системы, если пользователь – «дева»
#M dev24_08.txt текст сообщения системы
#W dev24_08.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 9 реакция системы, если пользователь – «весы»
#M ves24_09.txt текст сообщения системы
#W ves24_09.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 10 реакция системы, если пользователь – «скорпион»
#M sko24_10.txt текст сообщения системы
#W sko24_10.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 11 реакция системы, если пользователь – «стрелец»
#M str23_11.txt текст сообщения системы
#W str23_11.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#A 12 реакция системы, если пользователь – «козерог»
#M koz23_12.txt текст сообщения системы
#W koz23_12.wav речевой образ сообщения системы
#N eye переход к C-вершине с именем «eye»
#C eye система просит пользователя назвать цвет своих глаз
#M color. dia текст сообщения системы
#W color.wav речевой образ сообщения системы
#V color словарь для распознавания цветов глаз
#T 1 таблица 1 разбиения ответов пользователя на группы
#G 7 7 типов реакции системы на ответы пользователя
#F 0 функция с номером 0 соответствия реакциям системы
#A 1 реакция системы, если глаза типа зеленых
#M zelenie. txt текст сообщения системы
#W zelenie. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 2 реакция системы, если глаза типа серых
#M serie. txt текст сообщения системы
#W serie. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 3 реакция системы, если глаза типа синих или голубых
#M sinie. txt текст сообщения системы
#W sinie. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 4 реакция системы, если глаза типа черных
#M chernie. txt текст сообщения системы
#W chernie. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 5 реакция системы, если глаза типа темно-карих
#M tem_kar. txt текст сообщения системы
#W tem_kar. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 6 реакция системы, если глаза типа светло-карих
#M svet_kar. txt текст сообщения системы
#W svet_kar. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 7 реакция системы, если глаза карие
#M 0 текст сообщения отсутствует
#W 0 речевой образ отсутствует
#N kar переход к C-вершине с именем «kar»
#C kar система просит уточнить оттенок карих глаз
#M karie. dia текст сообщения системы
#W karie. wav речевой образ сообщения системы
#V color словарь для распознавания цветов глаз
#T 1 таблица 1 разбиения ответов пользователя на группы
#G 2 2 типа реакции системы на ответы пользователя
#F 5 функция с номером 5 соответствия реакциям системы
#A 1 реакция системы, если глаза темно-карие
#M tem_kar. txt текст сообщения системы
#W tem_kar. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#A 2 реакция системы, если глаза светло-карие
#M svet_kar. txt текст сообщения системы
#W svet_kar. wav речевой образ сообщения системы
#N end переход к C-вершине с именем «end»
#C end система спрашивает, печатать ли текст диалога
#M print. dia текст сообщения системы
#W print. wav речевой образ сообщения системы
#V yes словарь для распознавания ответа на это сообщение
#T 1 таблица 1 разбиения ответов пользователя на группы
#G 2 2 типа реакции системы на ответы пользователя
#F 0 функция с номером 0 соответствия реакциям системы
#A 1 реакция системы, если пользователь отвечает «да»
#M end. dia текст сообщения системы
#W end. wav речевой образ сообщения системы
#N quit окончание диалога
#A 2 реакция системы, если пользователь отвечает «нет»
#M 0 текст сообщения отсутствует
#W 0 речевой образ отсутствует
#N quit окончание диалога
Для реализации речевых диалогов с использованием представленного здесь языка описания сценария диалога, помимо программы распознавания речевых сообщений, необходимо наличие комплекса программ для организации речевого интерфейса и реализации его функций. Основными частями этого комплекса являются:
· программа-интерпретатор описания сценария речевого диалога между системой и пользователем;
· программы для реализации ввода-вывода текстовых или речевых сообщений;
· программы, устанавливающие соответствие между возможными вариантами сообщений пользователя и классами разбиения множества этих вариантов.
Программа, интерпретирующая описание сценария речевого диалога, является, по существу, управляющей программой. Она считывает описание сценария из файла, в который это описание должно быть предварительно помещено, и затем интерпретирует каждый оператор описания. В зависимости от типа оператора программа-интерпретатор самостоятельно осуществляет навигацию по сценарию и передает управление программам, реализующим те или иные функции сценария.
Программы, реализующие вывод текстовых или речевых сообщений системы, используют в качестве исходных данных файлы, содержащие эти сообщения. Файлы с сообщениями должны быть подготовлены заранее. Речевые образы сообщений системы могут быть созданы либо при произнесении текстов сообщений диктором либо сгенерированы с помощью программ речевого синтезатора. Когда в соответствии со сценарием диалога требуется реализовать функцию ответа пользователя, работает программа ввода речевого сообщения, а затем это сообщение распознается.
Программы, которые устанавливают соответствие между предполагаемыми вариантами сообщений пользователя и классами разбиений множества этих вариантов, а, тем самым, множеством различных реакций системы, вообще говоря, зависят от того, каковы эти классы разбиения, и поэтому для каждого такого разбиения должны писаться заново. Однако в систему могут быть встроены программы, которые реализуют такое соответствие, если его можно установить, заполняя таблицы соответствия, описанные в сценарии диалога. В этом случае достаточно лишь указать в описании сценария номера функций, совпадающих с номерами соответствующих столбцов этих таблиц.
Список литературы
1. , и др. Инструментальная система для исследования и обработки речевых сигналов и создания речевых баз данных / В сб. Интеллектуальные технологии ввода и обработки информации М., Эдиториал УРСС, 1998
2. , , Фарсобина речевых фрагментов русского языка ISABASE / В сб. Интеллектуальные технологии ввода и обработки информации М., Эдиториал УРСС, 1998
3. Появление нового пользовательского интерфейса. Ввод речи и текста, PC Magazine, март 25, 1997


