Языковая инфраструктура eSpeech

 

 

Современные системы и сервисы синтеза и распознавания речи:

  • требуют многоуровнего инфраструктурного обеспечения,

  • должны быть специфицированы и стандартизированы.

Языковая инфраструктура синтеза и распознавания речи —  связная совокупность языков (протоколов, стандартов, спецификаций), задающих спецификации речевым технологиям и обеспечивающая функционирование систем, служб и сервисов синтеза и распознавания речи.

Языковая инфраструктура синтеза и распознавания речи реализуется посредством компьютерных языков:

  • протоколов взаимодействия

  • языков описания данных

  • языков разметки

  • ......................................

  • языков описания аппаратуры

  • информационных языков

  • языков программирования

 

 

Терминология

Инфраструктура (лат. infra — «ниже», «под» и лат. structura — «строение», «расположение») — комплекс взаимосвязанных объектов, обеспечивающих основу функционирования системы.

Примеры: транспортная, финансовая, энергетическая, календарная, социальная... языковая.

 

Интерфейс (англ. interface — сопряжение, поверхность раздела, перегородка) — совокупность возможностей, способов и методов взаимодействия систем, устройств или программ для обмена информацией между ними, определённая их характеристиками, характеристиками соединения, данными и т. п.

Если одна из взаимодействующих систем — человек, говорят об интерфейсе той системы, с которой человек взаимодействует (пользовательский интерфейс).

Речевой интерфейс - пользовательский интерфейс, основанный на синтезе речи по тексту и распознавании звучащей речи.

 

Протокол  — набор соглашений, которые определяют обмен данными (задают формат и способ передачи данных, обработки ошибок и др.).

Стандартизированные протоколы позволяет разрабатывать интерфейсы обмена данными, не привязанные к конкретной аппаратной платформе и производителю.

Сетевой протокол — набор правил и действий, позволяющий осуществлять соединение и обмен данными между  включёнными в сеть устройствами.

Сетевые протоколы используют 7-уровневую логическую модель OSI (Open System Interconnection — взаимодействие открытых систем):

  • на физическом уровне определяются физические (механические, электрические, оптические) характеристики линий связи;

  • на канальном уровне определяются правила использования физического уровня узлами сети;

  • сетевой уровень отвечает за адресацию и доставку сообщений;

  • транспортный уровень контролирует очередность прохождения компонентов сообщения;

  • задача сеансового уровня — координация связи между двумя прикладными программами, работающими на разных рабочих станциях;

  • уровень представления служит для преобразования данных из внутреннего формата компьютера в формат передачи;

  • прикладной уровень  обеспечивает пользовательский интерфейс.

 

Спецификация  (от лат. species — род, вид, разновидность и facio — делают) — набор требований и параметров, которым должен удовлетворять некоторый технический объект (мост через реку, система синтеза речи...).

Стандарт (от англ. standard — норма, образец)  — набор правил и соглашений, используемых в некоторой деятельности (написании кода на некотором компьютерном языке и др...).

 


Терминологическая размытость:

  • термины язык, стандарт, спецификация, протокол не являются синонимами

  • термины язык, стандарт, спецификация, протокол часто используются как синонимы

  • различие между терминами  язык, стандарт, спецификация, протокол часто ситуативно, контекстуально, коннотативно.

 

 

Common Language Infrastructure

Спецификация —   набор требований и параметров.

Спецификация описывает то, что должна делать система, а не то, как она должна это делать.

Common Language Infrastructure (CLI, Общая Языковая Инфраструктура)  — открытая спецификация (язык) которая описывает код исполнительной программы и среду выполнения.

Common Language Infrastructure разработана Microsoft.

Common Language Infrastructure подразумевает среду разрешающую нескольким языкам высокого уровня быть использованными на разных компьютерных платформах без переписи под специфику архитектур.

Структура CLI:

  • Common Type System (CTS) - набор общих для разных языков типов и операций.

  • Metadata - информация о структуре программы независима от языка и может быть использована в разных языках.

  • Common Language Specification (CLS) - грамматика (набор базовых правил), обязательных для межъязыкового CLI-общения.

  • Virtual Execution System (VES) - загружает и выполняет CLI-совместимые программы, используя метаданные чтобы совместить сгенерированные фрагменты кода во время исполнения.

Все совместимые языки компилируются в Common Intermediate Language (CIL), который является промежуточным языком который абстрагирован от платформы и железа.

Реализации CIL:

  • Microsoft .NET Framework коммерческая реализация от Microsoft для настольных систем.

  • Shared Source Common Language Infrastructure пример реализации от Microsoft , под лицензией Shared Source.

  • .NET Compact Framework коммерческая реализация от Microsoft для портативных устройств.

  • Mono development platform популярная open source реализация, спонсированная Novell.

  • Portable.NET open source реализация, входящая в dotGNU.

Актуальная версия: CLI 3.5.

 

 

Голосовые платформы

Основной инфраструктурной базой современных систем, служб и сервисов речевого интерфейса является голосовая платформа.

Голосовая платформа - программно-аппаратный комплекс, предназначенный для реализации систем голосового взаимодействия с использованием технологий распознавания и синтеза речи и протокола MRCP.

Голосовая платформа  – это комплекс решений,  для реализации голосовых сервисов.

Голосовые платформы:

  • Asterisk,

  • Microsoft Speech Platform,

  • FreeSWITCH,

  • Avaya Voice Portal,

  • Genesys Voice Platform,

  • Cisco Unified CCX,

  • Siemens OpenScape,

Основная область использования голосовых платформ - Customer Relationship Management (CRM, системы управления отношениями с клиентами).

Важнейшей частью CRM являются  call center (центры обработки звонков) и contact center.

Контакт-центры интегрируют все современные способы связи с клиентом: через фиксированные или мобильные телефонные линии,  fax, eMail, chat, IM и т.д.

По статистике:

  • 92% пользователей формируют свое мнение о компании на основании работы ее call-центра.

  • 68% клиентов могут сменить бренд в связи с плохой работой центра.

  • 20-25% персонала call-центров работники самих компаний, более 75% - аутсорсинг

  • аутсорсинг call-центров в Европе увеличивается на 15-20% ежегодно.

  • 54,3% всех call-центров осуществляют связь с клиентами посредством IVR

Лидеры рынка (более $12,2 млрд.) call-центров:

  • Avaya (40% рынка),

  • Nortel Networks (подразделение компании Alcatel)

  • Genesys

  • Cisco Systems.

 

 

 

Asterisk

Asterisk — голосовая платформа, предназначенная для создания систем самообслуживания на базе телефонных интерактивных голосовых приложений (Interactive Voice Response, IVR) с возможностями распознавания, синтеза речи и аутентификации пользователей по голосу.

Схема работы голосовой платформы Asterisk:

  • Звонок поступает на голосовую платформу.

  • Голосовая платформа активирует сценарий голосового меню, по которому происходит дальнейшее взаимодействие с абонентом.

  • Сценарий голосового меню определяет: когда система должна прочитать абоненту инструкцию, задать вопрос и как обработать его ответ.

  • VoiceNavigator принимает от голосовой платформы запросы на распознавание и синтез речи, выполняют их и возвращают результат выполнения по протоколу MRCP.

  • При распознавании речи, голосовая платформа передает SRGS-грамматику и оцифрованную речь и получает ответ в виде NLSML.

  • При синтезе речи, голосовая платформа передает plain-текст или SSML и получает в ответ синтезированную речь.

 

VoiceNavigator — модуль для голосовой платформы, предназначенный для распознавания, синтеза речи и аутентификации пользователей по голосу.

Реализации IVR (интерактивных систем голосового самообслуживания) на платформе Asterisk с помощью VoiceNavigator:

  • «Электронный секретарь» предложит звонящему в режиме речевого диалога назвать интересующую информацию, конкретную услугу или имя требуемого сотрудника и переведет звонок по назначению

  • Корпоративная система голосового самообслуживания клиентов со сложными многоуровневыми меню

  • Автоматизированная справочная система самообслуживания клиентов - позволяет организовать полноценный диалог с клиентом, в котором автоматизированная справочная система самообслуживания клиентов задает вопросы и, получая ответы клиента, адекватно на них реагирует

  • Сервисы для проведения телефонных опросов и голосований

  • Системы голосовой аутентификации пользователей при запросе персонализированной или конфиденциальной информации по телефону или web

 

 

 

Microsoft Speech Platform

Microsoft Speech Platform (Речевая платформа Microsoft) — это набор программных модулей и средств разработки, позволяющих создавать и использовать приложения и сервисы объединяющие распознавание и синтез речи на основе VoiceXML.

Microsoft Speech Platform можно установить в системе независимо от наличия MS SAPI.

Microsoft Speech Platform 11.0 предлагает голоса для 26 языков, включая русский.

Компоненты Microsoft Speech Platform для синтезатора речи :

  • Microsoft Speech Platform - Runtime – серверная часть платформы, предоставляющая API (набор функций) для программ (файл с именем "SpeechPlatformRuntime.msi").

  • Microsoft Speech Platform - Runtime Languages – набор языков для серверной части. Для каждого языка доступны для скачивания модули для распознавания речи (файлы, чьи имена начинаются с "MSSpeech_SR_") и компьютерные голоса (файлы, чьи имена начинаются с "MSSpeech_TTS_").

Microsoft Speech Platform используется преимущественно в call-центрах: клиент набирает телефонный номер, ему отвечает компьютер, задает вопросы при помощи синтезатора речи, распознает ответы человека и, в зависимости от этих ответов, действует дальше согласно командам скрипта на языке VoceXML. Поэтому компьютерные голоса предлагаются низкого качества (достаточного для ответов по телефону); а низкие системные требования речевого движка позволяют сэкономить деньги на компьютерной технике call-центра.

 

Установка Microsoft Speech Platform SDK 11:

  • Удалите из системы все предыдущие версии Microsoft Speech Platform SDK и Microsoft Speech Platform Runtime.

  • Убедитесь, что в системе установлен Microsoft. NET Framework версии 4.0. Если необходимо, то загрузите дистрибутив . NET 4.0 Frameworkпо ссылке http://www.microsoft.com/ru-ru/download/details.aspx?id=17851 и установите его.

  • Определите, какая операционная система - 32-разрядная или 64-разрядная - установлена на компьютере.

  • По нижеследующей ссылке загрузите дистрибутив Microsoft Speech Platform Runtime 11, соответствующий разрядности вашей системы: http://go.microsoft.com/fwlink/?LinkID=223568&clcid=0x409

  • Если необходимы средства разработки речевых приложений, то по нижеследующей ссылке загрузите дистрибутив Microsoft Speech Platform SDK 11,соответствующий разрядности вашей системы: http://go.microsoft.com/fwlink/?LinkID=223570&clcid=0x409

  • Установите SpeechPlatformRuntime.msi.

  • Если необходимо, то установите MicrosoftSpeechPlatformSDK.msi.

Установленные компоненты не содержат языковых модулей для распознавания или синтеза речи. Языковые модули (Language Runtime) включает в себя данные, необходимые речевому движку для распознавания или синтеза речи на конкретном языке, причём модули представлены отдельно для распознавания и синтеза для каждого языка. Версия языкового модуля должна соответствовать версии установленной речевой платформы. Загрузить языковые модули интересующих языков можно по ссылке http://go.microsoft.com/fwlink/?LinkID=223569&clcid=0x409.

 

 

 

Media Resource Control Protocol

Media Resource Control Protocol (MRCP, протокол управления медиаресурсами) - стандартный протокол (язык) реализации функционала синтеза и распознавания речи.

MRCP - используется в голосовых порталах и предоставляет доступ Windows-приложениям к

  • TTS (text-to-speech, модулям синтеза)

  • ASR (Automatic Speech Recognizer, модулям распознавания).

MRCP - простой текстовый протокол (похожий на HTTP).

MRCP разработан в 2001 году для обеспечения независимости от особенностей фирменных (Cisco, Nuance, Speechworks) механизмов обработки речи.

Первая версия MRCP (MRCPv1) имела плохую масштабируемость и недостаточную информационную безопасность.

В 2002 г. IETF была сформирована группа SpeechSC, ориентированная на решение всех этих вопросов и стандартизацию интерфейсов для сервисов распознавания речи.

Протокол MRCPv2 представляет собой реализацию этой концепции и строится на существующих протоколах IP-телефонии и передачи голосовой информации:

  • SIP (Session Initiation Protocol),

  • RTP (Real-Time Transport Protocol)

  • VoiceXML.

Большинство участников группы SpeechSC представляют компании, работающие в области систем обработки речи.

Отсутствует в списке участников SpeechSC компании Microsoft. Ее продукт Microsoft Speech Server базируется на собственном коммуникационном протоколе SAPI (Speech Application Programming Interface).

Изначально Microsoft намеревалась использовать для продукта Speech Server технологию SALT (Speech Application Language Tags). Однако в апреле 2006 г. она заявила, что Speech Server будет полностью поддерживать и SALT и VoiceXML. Возможно, будет разработан транслятор SAPI — MRCP, который эффективно решит проблему, связанную с неучастием Microsoft в проекте MRCPv2.

Принятие фирмами-производителями стандарта MRCPv2 упростит и удешевит разработку речевых приложений, сделает проще и переход от одной системы обработки речи к другой.

 

 

UniMRCP

UniMRCP – кроссплатформенное программное обеспечение с открытым исходным кодом на основе MRCP.

Библиотека UniMRCP - набор необходимых средств для реализации функций MRCP-клиента и MRCP-сервера).

Библиотека UniMRCP поддерживает версии протокола MRCPv1 и MRCPv2, работу с ресурсами распознавания, синтеза, верификации и записи речи.

 

MRCP-сервер управляет взаимодействием между используемой голосовой платформой и модулями ASR (automatic speech recognition, автоматическое распознавание речи ) и TTS (text to speech, синтез речи по тексту).

MRCP Server поддерживает различные голосовые платформы.

MRCP-запросы передаются командами протокола RTSP (real-time streaming protocol, протокол непрерывной передачи и контроля данных в реальном масштабе времени).

Для передачи звуковых данных MRCP-сервер использует протокол RTP.

RTP (Real-Time Transport Protocol, транспортный протокол реального времени) - протокол прикладного уровня, один из протоколов IPv6. Служит для доставки до пункта назначения потокового аудио и видео реального времени, предусматривает идентификацию:

  • типа передаваемой полезной нагрузки (контента),

  • нумерацию последовательностей (sequence numbering),

  • отметки времени,

  • контроль доставки.

RTP является альтернативой протоколу TCP и поддерживает многоадресные (multicast) сетевые сервисы.

Через MRCP-сервер голосовая платформа запрашивает доступ к модулям распознавания и синтеза речи, в зависимости от этого используются различные схемы взаимодействия.

Модуль ASR занимается распознаванием речи.

 

 

 

Speech Recognition Grammar Specification

SRGS (Speech Recognition Grammar Specification, грамматика системы распознавания речи) – стандарт консорциума W3C, который описывает структуру грамматики, используемой в распознавании речи.

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

SRGS позволяет задавать слова или словосочетания, которые могут быть распознаны речевым движком.

Теги SRGS позволяют строить сложные меню, например:

  • confidence level - уровень уверенности распознавания (коэффициент достоверности)

  • n-best - возврат нескольких результатов распознавания с указанием confidence level для каждого

  • instance - семантическая интерпретация произносимых клиентом равнозначных слов и выражений

SRGS имеет два эквивалентных формата (одна и та же грамматика может быть представлена одной из следующей форм):

  • XML – описание грамматики структурой XML файла;

  • ABNF – описание грамматики структурированным текстовым файлом.

ABNF (Augmented Backus-Naur Form, пополненная нормальная форма Бэкуса-Наура) - расширение нормальной формы Бэкуса-Наура (BNF) - метасинтаксис (metasyntax) для представления контекстно-свободных грамматик (context-free grammar), то есть формальный способ описания формальных языков (formal language ), имеющих собственный синтаксис и порождающие правила. Побудительным мотивом к созданию этого метаязыка (metalanguage) была необходимость описания формальной языковой системы, представляющую собой протокол.

Модуль TTS использует SSML (Speech Synthesis Markup Language, язык разметки для синтеза речи) - часть спецификации VoiceXML , которая также является стандартом консорциума W3C.

 

 

 

Speech Synthesis Markup Language

SSML (Speech Synthesis Markup Language, язык разметки синтеза речи) основанный на XML язык разметки для приложений синтеза речи.

SSML является стандартом консорциума W3C  для применения в приложениях синтеза речи.

SSML основан на языке разметки Java Synthesis Markup Language (JSML), разработанном Sun Microsystems.

 

Управление синтезом в SSML происходит с помощью тегов, с помощью которых можно определить:

  • индивидуальными голосами,

  • скоростью произнесения,

  • громкостью,

  • сменой мужского и женского голосов,

  • произношением,

  • интонацией,

  • скоростью,

  • длиной пауз,

  • правилами чтения,

  • высотой (тоном).

 

 

Теги языка SSML

Тег voice

  • Позволяет менять голос.
    Например, VoiceNavigator имеет 5 голосов: Мария, Анна, Лидия, Александр, Владимир.
    Пример:
    <voice name=\"Мария8000\">Меня зовут Мария.</voice>
     

Тег say-as

  • Определяет способ чтения заключенного в тег выражения.
    <say-as информационная часть тега> текст </say-as>

    Информационная часть тега представляет собой список вида:
    Атрибут тега = «Значение атрибута»
    На одном слове может быть не более одного тега. Вложенность тегов say-as запрещена.

    Арибут
    stress

    Задаёт номер гласной, на которой на слово ставится основное ударение.
    Нумерация считается по гласным слова, начиная с 1.
    Формат:
    <say-as stress="номер гласной"> Исходное слово</say-as>

    В случае несоответствия значения атрибута количеству гласных в слове атрибут будет
    проигнорирован.
    Пример:

    <say-as stress="2"> Компас </say-as>

    Вместо слова «ко<мпас», будет обрабатываться слово «компа<с».


    Арибут
    interpret-as

    Значение «date»
    Устанавливает значение даты в григорианском стиле. Текст внутри тега задается в виде числовых полей с разделителями. Разделителем может быть точка, дефис, двоеточие или слеш. При этом необходимо наличие атрибута format, значением которого является одна из следующих строк:
    «mdy» – месяц, день, год «ym» – год, месяц
    «dmy» – день, месяц, год «my» – месяц, год
    «ymd» – год, месяц день «m» – месяц"
    «md» – месяц, день «d» – день
    «dm» – день, месяц «y» – год
    Примеры:

    <say-as interpret-as="date" format=\"dy\"> 3/02 </say-as>
    — «март две тысячи второго года»

    <say-as interpret-as="date" format=\"mdy\"> 3/6/02 </say-as>
    — «шестого марта две тысячи второго года»

    Значение «time»
    Устанавливает значение времени. Текст внутри тега задается в виде числовых полей с разделителями или без них, в последовательности: часы, минуты, секунды. Разделителем может быть точка, дефис, двоеточие или слеш.
    Примеры:

    после <say-as interpret-as=\"time\">2230</say-as>
    — «после двадцати двух»

    сейчас <say-as interpret-as=\"time\"> 9:21:30
    </say-as> — «сейчас девять часов двадцать одна минута тридцать секунд»

    Значение «telephone»
    Задает чтение данного слова или группы слов как номеров или номера телефонов. Слово номер телефона может содержать знак «+» и круглые скобки. Номер читается как количественное числительное в именительном падеже. При этом происходит разбиение номера на двух- и трехзначные числа. Нечисловые слова, попавшие в область действия тега, при этом обрабатываются обычным способом.
    Пример:

    <say-as interpret-as=\"telephone\"> +7 (812) 1234567 добавочный 2345</say-as>

    Значение «characters»
    Задает чтение данного слова или группы слов по буквам. При этом буквы читаются как алфавитные, числительные по цифрам, как количественные в именительном падеже, специальные символы и знаки препинания заменяются соответствующими словами. Прописные и строчные буквы при этом не различаются.
    Пример:

    <say-as interpret-as=\”characters\”> Б2a24-B!Zх?#7X </say-as>
    — «бэ два а два четыре дефис би восклицательный знак зэт икс вопросительный знак решетка семь икс»
     

Тег break

  • Добавление паузы заданной длительности или типа.
    Атрибуты:
    strength — «выразительность» паузы. Допустимые значения «none», «x-weak», «weak», «medium» (по умолчанию), «strong», «x-strong».
    time – длительность паузы в миллисекундах.
    Атрибуты strength и time могут быть указаны одновременно, при этом strength влияет только на интонацию, а time на длительность паузы.
    Пример задания паузы длинной 3.6 секунды:

    Я отойду на минутку. <break time=\"3600\"/> Вы еще здесь?

Тег prosody

  • Позволяет контролировать тон, скорость и громкость речи.
    Атрибуты (все необязательные)
    pitch — среднее значение тона.
    Допустимые значения: от 0.5 до 2.
    rate — скорость речи. Допустимые значения: относительное изменение или одно из значений «x-slow», «slow», «medium», «fast», «x-fast», «default».
    volume — громкость. Допустимые значения: относительное изменение или одно из значений «silent», «x-soft», «soft», «medium», «loud», «x-loud», «default».
    Пример:

    <prosody volume=\"25\" rate=\"x-slow\"> Доброе утро!</prosody>
     

Тег phoneme

Тег обеспечивает фонемную транскрипцию
Атрибуты:
ph – транскрипция, обязательный атрибут;
alphabet – алфавит, который используется для задания фонем. VoiceNavigator поддерживает алфавит IPA.
Пример:

<phoneme alphabet="ipa" ph="Транскрипция на алфавите IPA (символы алфавита не отображаются Хабром)">
 

 

 

 

Speech Recognition Grammar Specification

SGRS (Speech Recognition Grammar Specification) – язык, который описывает структуру грамматики, используемой в распознавании речи.

SRGS является стандартом W3C.

SRGS позволяет задавать слова или словосочетания, которые могут быть распознаны речевым движком.

Грамматика SRGS  содержит правила распознавания речи.

Грамматика SRGS описывается правилами в теге rule и каждое правило имеет уникальное имя в пределах грамматики задаваемое атрибутом id.

Правило, с которого начинается распознавание в грамматике, задается атрибутом root в теге grammar.

SSML также используется для обозначения областей языка с различным местным диалектом. Он основан на JSpeech Grammar Format (JSGF).

Весь SGRS-документ описывается в теге grammar.

Грамматика содержит правила распознавания речи, описываемые в теге rule и каждое правило имеет уникальное имя в пределах грамматики задаваемое атрибутом id. Правило, с которого начинается распознавание в грамматике, задается атрибутом root в теге grammar.

Базовая структура SGRS-грамматики:

  • <?xml version="1.0" encoding="UTF-8"?>
    <grammar version="1.0"
    xmlns="http://www.w3.org/2001/06/grammar"
    mode="voice"
    xml:lang="ru-RU"
    root="velo">
    <rule id="velo">
    велосипед
    </rule>
    </grammar>

 

Альтернативные варианты позволяют распознать одно слово из заданного множества и задаются тегами one-of и item.

Например:

  • <?xml version="1.0" encoding="UTF-8"?>
    <grammar version="1.0"
    xmlns="http://www.w3.org/2001/06/grammar"
    mode="voice"
    xml:lang="ru-RU"
    root="velo">
    <rule id="velo">
    <one-of>
    <item>красный</item>
    <item>зеленый</item>
    <item>синий</item>
    </one-of>
    велосипед
    </rule>
    </grammar>

Такая «расширенная» грамматика позволяет распознать произнесения: «красный велосипед», «зеленый велосипед» или «синий велосипед».

Элемент item может содержать любой тег, который описывает правило SGRS-грамматики, включая последовательности слов или элемент one-of.

Более полная версия грамматики может содержать вес в каждой альтернативной ветви
распознавания. Вес задается с помощью тега weight элемента item.

 

Правила могут содержать в себе ссылки на другие правила. Ссылки на другие правила задаются элементом ruleref и служат для использования одного и того же правила в разных местах грамматики.

В следующем примере выделим цвет велосипеда в отдельное подправило:

  • <?xml version="1.0" encoding="UTF-8"?>
    <grammar version="1.0"
    xmlns="http://www.w3.org/2001/06/grammar"
    mode="voice"
    xml:lang="ru-RU"
    root="velo">

    <rule id="velo">
    <ruleref uri=”#color”/> велосипед
    </rule>

    <rule id="color">
    <one-of>
    <item weight="50”>красный</item>
    <item>зеленый</item>
    <item>синий</item>
    </one-of>
    </rule>

    </grammar>

 

Специальные правила SGRS имеют зарезервированые имена: NULL и GARBAGE.

Специальные правила задаются атрибутом special элемента ruleref.

Правило NULL срабатывает автоматически, если пользователь ничего не произнес.

Правило GARBAGE (использующее модель «средней речи») позволяет создавать так называемые «открытые грамматики». т.е. различать слова из грамматики и «мусор».

Например:

  • <?xml version="1.0" encoding="UTF-8"?>
    <grammar version="1.0"
    xmlns="http://www.w3.org/2001/06/grammar"
    mode="voice"
    xml:lang="ru-RU"
    root="velo">
    <rule id="velo">
    <ruleref special =”GARBAGE”/> горный <ruleref special =”GARBAGE”/> велосипед
    </rule>
    </grammar>


Если сказать «Я хочу горный красный велосипед», то система вернет в качестве результата распознавания «горный велосипед».

 

Семантическая интерпретация представляет собой механизм, который позволяет задать значение для распознанного слова, которое потом можно использовать в логике голосового приложения.

Например: можно произнести «да», «хорошо» или «согласен», но семантический результат этих слов одинаков.
В SGRS-грамматики семантика задается элементом tag. Тип содержимого этого элемента задается атрибутом tag-format элемента grammar. Спецификация Semantic Interpretation for Speech Recognition определяет стандартные значения для атрибута tag-format: semantics/1.0-literals и semantics/1.0.

Синтаксис элемента tag типа semantics/1.0-literals представляет собой простую строку.

Тип semantics/1.0 представляет собой более мощное средство в виде скриптового языка. В этом случае элемент tagсодержит код языка ECMAScript.

Пример:

  • <?xml version="1.0" encoding="utf-8"?>
    <!-- Да/Нет -->
    <grammar xml:lang="ru-RU" root="da-net" mode="voice" version="1.0" xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0-literals">
    <rule id="da-net">
    <one-of>
    <item>да<tag>yes</tag></item>
    <item>верно<tag>yes</tag></item>
    <item>правильно<tag>yes</tag></item>
    <item>хочу<tag>yes</tag></item>
    <item>ага<tag>yes</tag></item>
    <item>нет<tag>no</tag></item>
    <item>неправильно<tag>no</tag></item>
    <item>неверно<tag>no</tag></item>
    <item>не хочу<tag>no</tag></item>
    <item>назад<tag>back</tag></item>
    </one-of>
    </rule>
    </grammar>

 

 

Речевые технологии W3C Voice Browser

Рабочая группа W3C Voice Browser с 1998 г. занимается подготовкой  W3C Speech Interface Framework унифицирующих использование речевых технологий в Web.

Их задачей является расширение методов доступа и навигации в Web путем использования клавиатуры сотовых и проводных телефонов, распознавания и синтеза естественной речи человека и пр.

Для этого предлагается целый ряд спецификаций:

  • диалогового языка разметки VoiceXML,

  • синтеза речи (Speech Synthesis),

  • распознавания речи (Speech Recognition),

  • грамматики DTMF (DTMF Grammars),

  • речевой грамматики (Speech Grammars),

  • вероятностной модели языков (Stochastic Language Models) и др.

Среди них самое динамичное развитие получили язык VoiceXML и спецификация грамматики по распознаванию речи (Speech Recognition Grammar Specification ), которые находятся на этапе окончательной стандартизации. 

В 2002 г. организована рабочая группа Multimodal Interaction Activity. Ее задача — создание спецификаций, предоставляющих возможность многомодального доступа и навигации в Web, с одинаковым успехом сочетающего использование как традиционных устройств ввода-вывода (клавиатура, монитор), так и естественной речи человека, "рисующего пера" — стилусов и других нетрадиционных способов.

 

 

 

VoiceXML vs. SALT

Для создания речевых приложений разные компании поддерживают один из двух основных языков разметки:

  • VoiceXML (Voice eXtensible Markup Language, VXML — открытый XML-язык),

  • SALT (проект SALT Forum, Speech Application Language Tags — теги языка речевых приложений).

Компании не могут прийти к единому мнению о выборе главного стандарта (языка разметки) и сейчас оба направления развиваются в равной степени.

VoiceXML поддерживает группа во главе с IBM, Motorola, Nuance Communications, Opera Software. Она призывает разработчиков создавать многомодальные приложения, размечая одну и ту же страницу посредством VoiceXML для речи и XHTML для текста и графики. Данное предложение закладывает фундамент для эффективного объединения протоколов. VXML лучше подходит для телефонии.

SALT поддерживает группа во главе с Microsoft, Cisco Systems, Intel, Philips Electronics и SpeechWorks International. SALT предполагает добавление к существующим языкам Web-разметки - HTML и XML - специальных речевых тегов. SALT лучше подходит  для мультимодальных устройств (сочетающим распознавание речи с другими формами ввода информации: при помощи клавиатуры, пера или набора цифровых кнопок).

Эти стандарты пытаются решить одну и ту же проблему: органично задействовать голосовые функции при минимальных усилиях по доучиванию разработчиков. Оба подхода имеют одну цель - интеграцию Web и голоса, и они со временем сблизятся.

Берн Эллиот (аналитик фирмы Gartner):

  • Многомодальные приложения выйдут на широкую дорогу лишь через несколько лет и поэтому инициатива SALT понапрасну отвлекает внимание некоторых организаций, заинтересованных в безотлагательном развертывании речевых приложений. В нынешних условиях предложение SALT вряд ли поможет корпоративным пользователям внедрять речевые технологии. Оно может замедлить прогресс. Как правило, ранние этапы разработки стандартов протекают в тиши кабинетов, без большой огласки. А мы являемся свидетелями политизации чисто технического исследования. Самый конструктивный вариант - если бы группы SALT и XML начали совместную продуктивную работу в рамках W3C.

 

 

 

VoiceXML

VoiceXML (Voice eXtensible Markup Language, VXML) — открытый стандарт W3C на основе XML-языка, диалоговый язык разметки.

VoiceXML предназначен для разработки интерактивных голосовых приложений (Interactive Voice Response, IVR) управления медиаресурсами.

Цель создания VoiceXML — привнесение всех преимуществ web-программирования в разработку IVR-приложений.

Актуальная версия VoiceXML 3.0  (4 марта 2010).

VoiceXML имеет теги, которые являются командами для голосового браузера (voice browser), который:

  • синтезирует,

  • распознает речь,

  • осуществляет голосовую идентификацию,

  • предоставляет диалоговое управление.

Язык VXML имеет синтаксис, использует специальные дескрипторы или теги, аналогичные HTML. Теги VXML выделяются в тексте документа с помощью угловых скобок и служат инструкциями для программы, производящей интерпретацию VXML-кода.

VXML-документы принято называть сценариями. При написании сценария важно соблюдать синтаксис языка VXML, в противном случае он будет либо распознан интерпретатором неправильно, либо не будет распознан совсем.

 

Пример VoiceXML документа:

  • <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
    <form>
    <block>
    <prompt>
    Привет, мир!
    </prompt>
    </block>
    </form>
    </vxml>

     

VoiceXML интерпретатор преобразует текстовую фразу «Привет, мир!» в синтезированную речь.

VoiceXML интерпретатор — это интерпретатор языка VXML, отвечающий за распознавание исходного кода. Модуль отслеживания контекста VXML-интерпретации (VXML Interpreter context) выполняет сопутствующие операции для интерпретации документа VXML, обнаруживает и обслуживает вызов, поступивший на номер, к которому привязан VXML-сценарий. Веб-сервер хранит набор сценариев VXML. При этом каждому сценарию ставится в соответствие телефонный номер.

 

Основным применением языка VXML является создание мультимедийных услуг для предоставления их на существующей сети. От оператора связи в таком случае потребуется только установка платформы услуг, поддерживающей стандарт VXML. Такие платформы обычно имеют стандартные интерфейсы, поэтому модернизация существующей сети не требуется, что и позволит предоставлять услуги.

Для предоставления услуг такого типа требуется соответствующая платформа услуг, серверы и программное обеспечение, включающее в себя прототип услуги, разработанный на языках VXML и PHP. Язык VXML используется для написания программ, описывающих логику услуги, а язык PHP — для написания программы, собирающей информацию в Интернете и генерирующей VXML-код.

Применение синтезированной речи предоставляет оператору ряд преимуществ.

  • не нужно оплачивать услуги профессионального диктора;

  • отпадает необходимость перезаписи голосовых роликов, в случае изменения предоставляемой информации;

  • появляется возможность зачитывать большие объемы информации и при этом не требуется большого объема памяти на жестком диске сервера, так как информация хранится в виде текста;

  • появляется возможность работать с конфиденциальной информацией, которая будет предоставлена ограниченному кругу лиц после ввода ими пароля.

  • возможности системы могут быть легко расширены в случае возникновения необходимости в дополнительных языках.

Язык VXML имеет широкую область применения и может использоваться для целей, изначально не предусмотренных в стандарте, например, для систем интерактивных автоответчиков IVR и автоматического телефонного оповещения.

 

14.12.2005

W3C (World Wide Web Consortium) завершил разработку технологии VoiceXML 3.0, позволяющую осуществлять голосовую идентификацию, что позволит увеличить скорость и надежность онлайновых сделок.

 

 

Простейшее приложение на VXML

 

Пример простейшего приложения HelloWorld.xml, в котором пользователю озвучивается фраза "Привет! Это мое первое голосовое меню".

Код:

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml" xml:lang="ru-RU">
<form id="hello">
<block>
<prompt>
Привет! Это мое первое голосовое меню
</prompt>
</block>
</form>
</vxml>

После написания кода, понадобится веб-сервер, куда необходимо поместить данный файл.

После размещения приложение будет доступно по ссылке http://YourIp/HelloWorld.xml,
и его необходимо будет развернуть на какой-либо голосовой платформе (например, Avaya, Genesys, Cisco).

После этого приложение будет доступно по указанному в голосовой платформе номере.

 

 

 

 

Голосовое меню на платформе Cisco

здесь

 

 

 

VXML.RU

03.06.2013

«Центр речевых технологий» (ЦРТ) разработал и запустил первый в Рунете специализированный сайт (http://vxml.ru/) для системных интеграторов и разработчиков голосовых приложений в IVR, которые работают с языком программирования VoiceXML.

VoiceXML – специальный диалоговый язык программирования, который позволяет создавать IVR-меню для контактных центров. VXML позволяет подключать речевые технологии распознавания речи, синтеза речи и голосовой биометрии (поиск и подтверждение личности по голосу) и поддерживается всеми основными поставщиками контактных центров: Genesys, Avaya, Cisco, Voxeo и другие.

IVR-системы с применением речевых технологий обладают бОльшими возможностями по сравнению с устаревшими IVR-меню, использующими технологию тонового набора (DTMF). Однако, несмотря на это, количество внедрений современных систем голосового самообслуживания пока не велико. По мнению аналитиков ЦРТ, это связано с тем, что в России не хватает квалифицированных специалистов, обладающих необходимой компетенцией и опытом для разработки удобных и эффективных речевых приложений в IVR.

Во многом такая ситуация сложилась из-за отсутствия информации по VXML на русском языке. На сайте VXML.ru на русском(!) языке  размещена справочная информация по VXML, описание всех тегов, примеры речевых приложений и комментарии к ним. Здесь же можно задавать вопросы специалистам ЦРТ и оперативно получить консультацию.

 

 

 

SALT

Speech Application Language Tags (SALT, Язык тегов речевых приложений ), позволяет использовать речь для навигации по Интернету и взаимодействия со всемирной сетью посредством телефонов и многомодальных устройств.

Многомодальные устройства (сочетают распознавание речи с другими формами ввода информации: при помощи клавиатуры, пера или набора цифровых кнопок - мобильные ПК, планшеты, смартфоны).

SALT позволяет: 

  • конечному пользователю — одновременно работать с речью, текстом и графикой; 

  • разработчику — использовать теги SALT с помощью привычных редакторов и утилит в уже существующих или только создаваемых HTML-, xHTML- и XML-страницах; 

  • бизнесу — без создания специальных приложений и технологий получить унифицированный метод добавления голосовых возможностей в самые разные Интернет-сервисы, что уменьшит стоимость их разработки и сопровождения. 

Консорциум SALT Forum (от Speech Application Language Tags) в 2001 г. компании Intel, Microsoft, Cisco, Comverse, Philips и SpeechWorks. SALT Forum, основанный компаниями Cisco, Comverse, Intel, Microsoft, Philips и SpeechWorks.

SALT Forum объединяет 57 участников, которые создали открытый, бесплатный, независимый от платформ стандарт для использования речи в многомодальных и телефонных приложениях. 

SALT не является новым языком, а служит для расширения таких языков, как HTML, XHTML и XML за счет введения дополнительных тегов и добавления в них поддержки голосовых сервисов.

С внедрением SALT пользователь вместе с традиционным графическим интерфейсом получает речевой способ взаимодействия с веб-порталами. Используя обычный компьютер, КПК, сотовый или проводной телефон, он может голосом запрашивать необходимую информацию, которая будет представлена ему в виде синтезированной речи. 

Для работы с SALT совсем необязательно разбираться в тонкостях распознавания или синтеза речи. Язык построен на основе модели событий, что позволяет запрограммировать различного уровня сложности диалоги с пользователем. Вставлять теги SALT в уже существующие или только создаваемые HTML-, XHTML- и XML-страницы можно с помощью привычных редакторов. 

Первая версия спецификации SALT затрагивает три возможности многомодальных систем:

  • телефонный доступ,

  • синтез,

  • распознавание речи. 

В первой версии спецификации выделяются три основных тега:

  • <listen …>— конфигурирует распознаватель голоса, распознает звуки, речь;

  • <prompt …>— конфигурирует речевой синтезатор, выводит звуки;

  • <dtmf …>— конфигурирует и контролирует DTFM в телефонных приложениях.

Теги listen и dtmf могут содержать теги <grammar>и <bind>, listen может также содержать тег <record>.

SALT также показывает способы конфигурирования и обеспечения контроля за телефонными звонками при помощи речи и разметки. 

 

Тег <listen> используется для ввода речи (например для навязывания "речевых" ссылок объектов).

Он содержит <grammar>, <record>и <bind>.

Он также содержит методы активации-деактивации, начала и прекращения распознавания речи. 

Пример использования тега <listen>: 

  • <salt:listen id="travel"> 
    <salt:grammar src="./city.xml" /> 
    <salt:bind targetElement="txtBoxOriginCity" 
    value="/result/origin_city" /> 
    </salt:listen> 
     


Тег <prompt> используется для определения выхода. Он может содержать обычный текст, речевую исходящую разметку, переменные значения, ссылку на аудиофайлы и любую их комбинацию. 
Пример: 

  • <salt:prompt id="ConfirmTravel"> 
    So you want to travel from 
    <salt:value targetElement="txtBoxOriginCity" targetAttribute="value" /> 
    to 
    <salt:value targetElement="txtBoxDestCity" targetAttribute="value" /> 

    </salt:prompt> 
     


Тег <dtmf> используется в телефонных приложениях для спецификации DTMF и для связи нажатия клавиши на клавиатуре с вводом и других событий. Как и <listen>, его основные элементы — <grammar>и <bind> 
Пример: 

  • <salt:dtmf id="dmtfPhoneNumber"> 
    <salt:grammar src="7digits.gram" /> 
    <salt:bind value="/result/phoneNumber" targetElement="iptPhoneNumber" /> 
    </salt:dtmf> 

Теэги в SALT — XML-объекты в документной объектной модели (DOM) страницы. Поэтому каждый SALT-тeг содержит методы, свойства и хранители событий, которые доступны скрипту и из-за этого могут взаимодействовать с другими событиями и процессами при выполнении (загрузке) веб-страницы. Это позволяет речевому интерфейсу SALTа быть полностью интегрированным в веб-приложения. 

Для телефонных диалогов SALT поддерживает механизмы контроля вызова для управления телефонными подключениями, включающие: 

  • прослушивание, принятие и отклонение входящих звонков;

  • переадресация вызова;

  • разъединение перевод звонков;

  • конференц-связь.

 

 11.03.2017

kmp