Спецификация грамматики распознавания речи (SRGS) - это стандарт W3C для определения грамматик распознавания речи . Грамматика распознавания речи - это набор шаблонов слов, который сообщает системе распознавания речи, чего ожидать от человека. Например, если вы вызываете приложение автосекретаря , оно предложит вам ввести имя человека (с ожиданием, что ваш звонок будет переведен на телефон этого человека). Затем он запустит распознаватель речи, присвоив ему грамматику распознавания речи. Эта грамматика содержит имена людей в каталоге автосекретаря и набор шаблонов предложений, которые являются типичными ответами вызывающих абонентов на приглашение.
SRGS определяет два альтернативных, но эквивалентных синтаксиса, один на основе XML , а другой - на расширенном формате BNF . На практике синтаксис XML используется чаще.
И ABNF, и XML-форма обладают выразительной силой контекстно-свободной грамматики . Грамматический процессор, не поддерживающий рекурсивные грамматики, обладает выразительной силой конечного автомата или языка регулярных выражений .
Если бы распознаватель речи возвратил только строку, содержащую фактические слова, произнесенные пользователем, голосовое приложение должно было бы проделать утомительную работу по извлечению семантического значения из этих слов. По этой причине грамматики SRGS могут быть украшены элементами тегов , которые при выполнении создают семантический результат. SRGS не определяет содержимое элементов тега: это делается в сопутствующем стандарте W3C, Семантическая интерпретация для распознавания речи (SISR). SISR основан на ECMAScript , а операторы ECMAScript внутри тегов SRGS создают объект семантического результата ECMAScript, который легко обрабатывается голосовым приложением.
И SRGS, и SISR являются Рекомендациями W3C, заключительным этапом трека стандартов W3C. Стандарт W3C VoiceXML , который определяет, как указываются голосовые диалоги, сильно зависит от SRGS и SISR.
Примеры
Вот пример расширенного BNF SRGS, который можно использовать в приложении автосекретаря:
#ABNF 1.0 ISO-8859-1 ; // Язык грамматики по умолчанию - английский (США) en-US ; // Одноязычное присоединение к токенам // Обратите внимание, что «fr-CA» (канадский французский) применяется только // к слову «oui» из-за правил приоритета $ yes = yes | oui! fr-CA ; // Прикрепление к расширению на одном языке $ people1 = ( Michel Tremblay | André Roy ) ! Fr-CA ; // Обработка языкового произношения одного и того же слова // Способный распознаватель речи будет прослушивать мексиканские испанские и // английские варианты произношения. $ people2 = Jose! en-US | Jose! Es-MX ; / ** * Возможен многоязычный ввод * @example могу я поговорить с Андре Роем * @example могу я поговорить с Хосе * / public $ request = могу я поговорить с ( $ people1 | $ people2 ) ;
Вот тот же пример SRGS с использованием формы XML:
xml version = "1.0" encoding = "ISO-8859-1"?> "http://www.w3.org/TR /speech-grammar/grammar.dtd "> xmlns = "http://www.w3.org/2001/06/grammar" xmlns: xsi = "http://www.w3.org/ 2001 / XMLSchema-instance " xsi: schemaLocation = " http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd " xml: lang = "en-US" version = "1.0" > одноязычное присоединение к токенам «yes» наследует американский английский язык «oui» является канадским французским языком -> id = "yes" > yes xml : lang = "fr-CA" > oui Одноязычное приложение к расширению -> id = "people1" > xml: lang = "fr-CA" > Michel Tremblay André Roy < / элемент> Обработка языкового произношения одного и того же слова Способный распознаватель речи будет прослушивать мексиканский испанский и американский английский варианты произношения. -> id = "people2" > xml: lang = "en-US" > Хосе xml: lang = "es-MX" > Хосе id = "request" scope = "public" > можно мне поговорить с Андре Роем? можно поговорить с Хосе могу ли я поговорить с -
uri = "# people1" /> -
uri = "# people2" /> < / грамматика>