语音合成技术和文本语音转换 - Synthetic voice and Text to Speech technology - Синтетический голос и технологии преобразования текста в речь
 
TTS книги  Проверялка  ФорумФорум  RSS  ПоискПоиск  РегистрацияРегистрация  ВходВход  

Речевые технологии для разработчиков

Предыдущая тема Следующая тема Перейти вниз
АвторСообщениеРечевые технологии для разработчиков
bot
Гость


Сообщений : 317
Репутация : 12

 bot :: Вт Ноя 11 2008, 22:19
Вт Ноя 11 2008, 22:19

Речевые технологии для разработчиков
Анатолий Камынин

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

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

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

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

В нижеследующих частях этой статьи будет представлен краткий обзор одного из самых популярных на сегодняшний день программных продуктов, позволяющих снабдить приложения необходимыми средствами речевого ввода и вывода. Этим продуктом является Microsoft Speech Api™.

Microsoft SAPI™ SDK
Microsoft SAPI™ - это программный продукт, созданный фирмой Microsoft специально для работы с речью. SAPI - это сокращение английского словосочетания speech application programming interface, которое подразумевает, что указанный программный продукт предоставляет интерфейсные функции (в данном случае для речевого ввода и вывода) другим приложениям. Следуя своим правилам Microsoft, оформила SAPI в виде набора COM интерфейсов. Однако наличие на компьютере одного только Microsoft SAPI™ (в операционную систему Microsoft Windows Xp этот компонент входит как элемент операционной системы) является необходимым, но недостаточным условием того, чтобы компьютер начал синтезировать или распознавать речь.

Что же еще необходимо для этого? Важным, если не сказать фундаментальным, элементом речевой системы являются так называемые речевые "движки" (speech engine), которые и отвечают за то, насколько естественно будет звучать речь или насколько правильно будут распознаваться слова при диктовке.

Для того чтобы просмотреть, какие движки установлены на вашем компьютере и какие языки они поддерживают, в Microsoft SAPI 5 нужно обратиться к Панели управления (элемент "Речь" или "Speech"). В Microsoft SAPI версии 4 для той же цели можно воспользоваться программой SpeechControl Center (~900 Кб).

"Движки", по своему назначению, подразделяются на две большие группы:

  • для синтеза речи по тексту (Text-To-Speech или TTS Engine);
  • для распознавания речи (Speech Recognition).

В свою очередь "движки" для распознавания речи подразделяются на:

  • для распознавания устных команд (Speech Recognition или SR Engine for PC
    command&control applications);
  • для диктовки текста (Speesh Recognition или SR Engine for Dictation).


Microsoft бесплатно предоставляет разработчикам "движков" свой программный продукт Microsoft SAPI™ и SAPI SDK, который представляет собой набор средств, описаний и примеров, необходимых разработчику для применения речевых технологий в своих приложениях, работающих в среде Microsoft Windows™.

Ознакомиться и получить эти программные продукты можно на сайте Microsoft. На сегодняшний день последней версией SAPI SDK является версия 5.1 (до нее были 2.0, 3.0, 4.0 и 5.0). Для версии 4.0 существуют несколько русскоязычных "движков" синтеза речи по тексту (text-to-speech engine).

Как видим, Microsoft SAPI прошел уже немалый путь в своем развитии, что обусловило не только интерес сторонних разработчиков к этому программному продукту, но и способствовало появлению множества "движков", поддерживающих различные языки, и многочисленных программ, использующих речевой интерфейс для ввода и вывода информации. Среди этих программ есть и такие, которые ориентированы на нужды незрячих и слабовидящих. Следует заметить, что пользующаяся особой популярностью программа Jaws for Windows™ не нуждается в Microsoft SAPI, но может взаимодействовать с "движками" установленными в нем.

Что же позволяет делать SAPI SDK и кому он может быть полезен? В первую очередь разработчикам все тех же "движков", так как снабжает их необходимым инструментарием, позволяющим не ломать голову над совместимостью программ, а заниматься лишь улучшением качества синтеза и распознавания речи. Во-вторых, разработчикам приложений, которые используют речь, как средство общения с пользователем, так как в этом случае разработчик может не задумываться о том, как реализовать ввод и вывод речи на низком уровне (ибо это уже решено в "движках"), а целиком заняться обработкой полученных речевых данных, преобразованных в текстовый формат, или формированием текстовых сообщений, которые будут преобразованы в речь средствами SAPI. В версии SAPI 5.1 декларируется поддержка таких языков программирования, как Visual C++, Visual Basic, Microsoft C#, JScript, но поскольку SAPI реализован на базе технологии COM, то любая среда программирования, поддерживающая работу с OLE и COM приложениями, может получить доступ к Microsoft SAPI.

Для разработчиков Microsoft создала и поддерживает новостные группы Microsoft Newsgroups, где на форумах можно найти ответы на многие вопросы. Также консультационную помощь можно получить, направив запрос по электронной почте: sapi5@microsoft.com. Множество материалов и статей, посвященных Microsoft SAPI,можно найти на странице Microsoft Speech.NET Technologies.

Если вы относитесь к разработчикам "движков" или создаете приложения, использующие речевые технологии, то имеет смысл поближе познакомиться с Microsoft SAPI SDK. Если вы еще не решили, к чему приложить свои знания и способности, то речевые технологии могут стать для вас возможной сферой деятельности. На сегодняшний день речевые технологии являются передовым краем технологий компьютерных. Как синтез, так и распознавание речи невозможны без систем искусственного интеллекта, так как произношение (а оно нередко определяет смысл слова) зависит от речевого контекста. Что это означает? Всего лишь то, что для полноценных синтеза и распознавания речи компьютер должен понимать(!), о чем идет речь...

Системы, взаимодействующие с человеком при помощи речи, считаются весьма перспективным направлением компьютерной индустрии, а само это направление является престижным, но... не в России. У нас в стране этот сегмент рынка остается малонаселенным. Может быть, там не хватает вас?!

Что касается нас, то мы планируем разместить на сайте некоторые материалы, касающиеся Microsoft SAPI в частности и вопросов обработки речи вообще. Надеемся, что наш посильный вклад в решение задач распознавания и синтеза именно русской речи подвигнет людей способных (а в чем-то даже талантливых) на разработку отечественных "движков". Если вы уже имеете практический опыт работы с речевыми технологиями и желаете поделиться им с другими, то воспользуйтесь нашими страницами для публикации ваших статей.

Вернуться к началу Перейти вниз
bot
Гость


Сообщений : 317
Репутация : 12

 bot :: Вт Ноя 11 2008, 22:19
Вт Ноя 11 2008, 22:19

Синтез речи в Microsoft SAPI 5.1
Для того чтобы получить все необходимые компоненты для использования MS SAPI 5.1 в своих программах, а также чтобы получить полную документацию, следует обратиться на страницу Microsoft Speech - Speech SDK 5.1 for Windows® applications.

Приложения, использующие Microsoft SAPI, могут управлять синтезом речи, используя COM (component object model) интерфейс ISpVoice.

После того как приложение создало объект ISpVoice, ему достаточно вызвать ISpVoice::Speak, чтобы произвести речевой вывод какого-либо текста. Кроме того, интерфейс IspVoice также содержит несколько методов, позволяющих изменить голос и параметры синтеза. Например, скорость речи (ISpVoice:: SetRate), громкость звука (ISpVoice::SetVolume), или вообще сменить голос (ISpVoice:: SetVoice).

Microsoft SAPI поддерживает специальные управляющие конструкции, которые могут быть помещены в текст, предназначенный для синтеза. Эти конструкции позволяют в реальном времени контролировать параметры синтеза (например, голос, высота тона, паузы, произношение, скорость и громкость). Такая речевая разметка текста (sapi xsd) использующая стандарты формата XML, является простым и одновременно мощным средством настройки параметров синтезируемой речи, независимо от используемого речевого "движка" или текущего голоса.

Метод IspVoice::Speak может синтезировать речь синхронно, т.е. вернуть управление только после окончания синтеза, либо асинхронно, т.е. вернуть управление немедленно, при этом процесс синтеза речи будет идти параллельно работе основного приложения. В асинхронном режиме (SPF_ASYNC) информация о состоянии синтеза и текущем положении указателя синтезируемого текста можно получить при помощи метода ISpVoice:: GetStatus. В этом режиме речевой синтез нового текста может прервать текущий речевой фрагмент и воспроизвести текст немедленно (SPF_PURGEBEFORESPEAK), или новый текст может быть автоматически добавлен в конец текущего текстового блока.

Кроме интерфейса ISpVoice, SAPI обладает еще рядом COM интерфейсов, позволяющих выполнять более сложную обработку текста и синтез речи по нему.

События
Microsoft SAPI взаимодействует с приложениями, генерируя события и используя стандартные механизмы направления сообщений в оконную процедуру обработки сообщений. При синтезе речи по тексту события используются преимущественно для синхронизации вывода речи. Приложения могут реагировать на события в реальном времени, поскольку события возникают на границах слов, фонем, на закладках, помещенных самим приложением, и т.п. Приложения могут получать дескрипторы этих событий, используя интерфейсы ISpNotifySource, ISpNotifySink, ISpNotifyTranslator, ISpEventSink, ISpEventSource, ISpNotifyCallback.

Словари
Приложения могут изменять произношение слов для речевого "движка", используя методы, предоставляемые объектами ISpContainerLexicon, ISpLexicon и ISpPhoneConverter.

Ресурсы
Поиск и отбор SAPI данных (файлов голоса или словарей) осуществляются при помощи интерфейсов ISpDataKey,ISpRegDataKey, ISpObjectTokenInit, ISpObjectTokenCategory, ISpObjectToken, IEnumSpObjectTokens, ISpObjectWithToken, ISpResourceManager и ISpTask.

Звук
Также существует интерфейс для управления параметрами звуковоспроизведения (например, для телефонии или специальной аппаратуры): ISpAudio, ISpMMSysAudio, ISpStream, ISpStreamFormat, ISpStreamFormatConverter.

Распознавание речи в Microsoft SAPI 5.1
ISpRecoContext является главным COM интерфейсом для распознавания речи. Так же, как ISpVoice, этот интерфейс использует ISpEventSource, чтобы уведомить приложение о всех событиях, происходящих в процессе распознавания речи.

Приложение может выбрать один из двух типов "движков" распознавания речи ( ISpRecognizer).

Общий ресурс распознавания речи, который может быть поделен между несколькими приложениями и который рекомендуется использовать в большинстве случаев. Чтобы создать ISpRecoContext с общим ресурсом ISpRecognizer, приложению достаточно вызвать CoCreateInstance с указанием CLSID_SpSharedRecoContext. В этом случае SAPI установит параметры звукового ввода, согласно установкам по умолчанию.

Для больших серверных приложений, которые используют все ресурсы системы, не разделяя их ни с кем и для которых производительность является наиболее важным показателем, должен быть создан ISPRECOCONTEXT с InProc ISpRecognizer. Приложение должно вызвать CoCreateInstance с CLSID_SpInprocRecoInstance, чтобы создать его собственный InProc ISpRecognizer. Тогда приложение должно обратиться к ISpRecognizer:: SetInput, чтобы задать параметры звукового ввода. Наконец, приложение может вызвать ISpRecognizer:: CreateRecoContext и получить ISPRECOCONTEXT.

На следующем шаге приложение должно выбрать те события, в уведомлении о которых оно заинтересовано. Как ISpRecognizer, так и ISpEventSource, Которым в свою очередь является ISpNotifySource, приложение может вызвать один из методов ISpNotifySource для его ISpRecoContext, чтобы указать, те события, о которых ISpRecoContext должен сообщить. Для этого нужно вызвать ISpEventSource:: SetInterest, чтобы указать события, о которых надо уведомлять. Наиболее важным является SPEI_RECOGNITION, которое указывает, что ISpRecognizer распознал фрагмент речи для этого ISpRecoContext.

Информацию об остальных событиях, возникающих при распознавании речи, можно найти в описании структуры SPEVENTENUM в Microsoft SAPI SDK.

Наконец, приложение должно создать, загрузить и активировать ISpRecoGrammar, который указывает тип распознавания речи, т.е. диктовку или голосовое управление.

Сначала приложение создает ISpRecoGrammar, используя ISpRecoContext::CreateGrammar. Затем приложение загружает соответствующую грамматику, вызывая ISpRecoGrammar::LoadDictation Для диктовки или один из методов ISpRecoGrammar::LoadCmdxxx для голосового управления.

Теперь, чтобы активировать эти грамматики и приступить к распознаванию речи, приложение вызывает ISpRecoGrammar:: SetDictationState для диктовки или ISpRecoGrammar:: SetRuleState Или ISpRecoGrammar:: SetRuleIdState для голосового управления.

Когда распознавание речи уведомляет приложение о событии, то параметр lParam в структуре SPEVENT содержит ISpRecoResult, с помощью которого приложение может определить, для какого ISpRecoGrammar из какого ISpRecoContext было произведено распознавание. Это необходимо потому, что любой ISpRecognizer, общий или InProc, может быть связанным с несколькими ISpRecoContextsс, каждый из которых может уведомлять о своих событиях ISpRecoContext может иметь несколько ISpRecoGrammars, чтобы распознавать различные виды речевого ввода.

На этом в рамках данной статьи завершается обзор Microsoft SAPI. Мы надеемся, что приведенных материалов достаточно, чтобы получить представление о возможностях этого программного продукта, а также понять общий подход к вопросам взаимодействия приложений и Microsoft SAPI.

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

  • Digital Equipment Corporation
  • Elan Speech
  • Digalo (популярный "движок" от ELAN)
  • EloquentTechnology
  • IBM
  • Lernout &Hauspie
  • Lucent
  • Telephonica I+D
  • TELES

Среди разработчиков на территории бывшего СНГ своими разработками наиболее заметна компания Сакрамент (г.Минск).

Вернуться к началу Перейти вниз

Речевые технологии для разработчиков

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

Создать форум | ©phpBB | Бесплатный форум поддержки | Сообщить о нарушении
Как создать форум на Forum2x2 | © phpBB | Бесплатный форум поддержки | Сообщить о нарушении | Создать он-лайн дневник