Введение

Интерфейс программирования приложений для Microsoft Windows

Speech API

Интерфейс программирования приложений речи, или SAPI, — это API, разработанный Microsoft для обеспечения возможности использования распознавания и синтеза речи в приложениях Windows. На сегодняшний день выпущено несколько версий API, которые поставлялись либо как часть Speech SDK, либо как часть операционной системы Windows. Приложения, использующие SAPI, включают Microsoft Office, Microsoft Agent и Microsoft Speech Server. В целом, все версии API разработаны таким образом, чтобы разработчик программного обеспечения мог создавать приложения для выполнения распознавания и синтеза речи, используя стандартный набор интерфейсов, доступных из различных языков программирования. Кроме того, сторонние компании могут создавать собственные движки распознавания речи и преобразования текста в речь или адаптировать существующие движки для работы с SAPI. В принципе, пока эти движки соответствуют определенным интерфейсам, их можно использовать вместо движков, поставляемых Microsoft. В целом, Speech API является свободно распространяемым компонентом, который можно поставлять с любым приложением Windows, желающим использовать технологии речи. Многие версии (хотя и не все) движков распознавания и синтеза речи также свободно распространяются. Существуют два основных "семейства" Microsoft Speech API. Версии SAPI 1–4 во многом похожи друг на друга, с добавлением новых функций в каждой последующей версии. Однако SAPI 5 представлял собой совершенно новый интерфейс, выпущенный в 2000 году. С тех пор было выпущено несколько подверсий этого API.

Основная архитектура

API речи можно рассматривать как интерфейс или промежуточное программное обеспечение, расположенное между приложениями и речевыми движками (распознавания и синтеза). В версиях SAPI 1–4 приложения могли напрямую взаимодействовать с движками. API включал абстрактное определение интерфейса, которому соответствовали приложения и движки. Приложения также могли использовать упрощенные объекты более высокого уровня вместо непосредственного вызова методов движков. Однако в SAPI 5 приложения и движки не взаимодействуют друг с другом напрямую. Вместо этого каждый из них взаимодействует с компонентом времени выполнения (sapi.dll). Этот компонент предоставляет API, который используют приложения, и отдельный набор интерфейсов для движков. Как правило, в SAPI 5 приложения выполняют вызовы через API (например, для загрузки грамматики распознавания, запуска распознавания или предоставления текста для синтеза). Компонент времени выполнения sapi.dll интерпретирует эти команды и обрабатывает их, при необходимости обращаясь к движку через его интерфейсы (например, загрузка грамматики из файла выполняется в компоненте времени выполнения, но затем данные грамматики передаются движку распознавания для фактического использования в процессе распознавания). Движки распознавания и синтеза также генерируют события в процессе обработки (например, для указания на распознавание речевого фрагмента или для обозначения границ слов в синтезированной речи). Эти события передаются в обратном направлении: от движков, через DLL времени выполнения и далее – в обработчик событий приложения. Помимо определения API и DLL времени выполнения, в состав всех версий SAPI входят и другие компоненты, формирующие полноценный комплект разработки программного обеспечения для работы с речью. В состав большинства версий Speech SDK входят следующие компоненты: файлы определения API в формате MIDL, а также файлы заголовков C или C++. Компоненты времени выполнения, например, sapi.dll. Элемент панели управления для выбора и настройки движка распознавания и синтезатора речи по умолчанию. Движки преобразования текста в речь на нескольких языках. Движки распознавания речи на нескольких языках. Перераспределяемые компоненты, позволяющие разработчикам упаковывать движки и среду времени выполнения вместе с кодом приложения для создания единого установочного пакета. Пример кода приложения. Пример движков – реализации необходимых интерфейсов движка, но без реальной обработки речи, которые можно использовать в качестве образца при портировании движка на SAPI. Документация.

Версии

Сюэдун Хуан был ключевой фигурой, руководившей первыми разработками SAPI в Microsoft.

SAPI 1

Первая версия SAPI была выпущена в 1995 году и поддерживалась в Windows 95 и Windows NT 3.51. Эта версия включала низкоуровневые API прямого распознавания речи и преобразования текста в речь, которые приложения могли использовать для непосредственного управления движками, а также упрощенные API голосовых команд и голосового взаимодействия более высокого уровня.

SAPI 3

SAPI 3.0 был выпущен в 1997 году. Он добавил ограниченную поддержку распознавания речи для диктовки (дискретная, а не непрерывная речь), а также дополнительные примеры приложений и источники звука.

SAPI 5.0

Эта версия была выпущена в конце 2000 года как часть Speech SDK версии 5.0, вместе с движками распознавания и синтеза версии 5.0. Движки распознавания поддерживали непрерывный диктант и управление голосом, и были выпущены на американском английском, японском и упрощенном китайском языках. В системе американского английского языка были доступны специальные акустические модели для детской речи и телефонной речи. Движок синтеза был доступен на английском и китайском языках. Эта версия API и движков распознавания также была включена в Microsoft Office XP в 2001 году.

SAPI 5.1

Эта версия была выпущена в конце 2001 года как часть Speech SDK версии 5.1. В API были добавлены интерфейсы, поддерживающие автоматизацию, для использования из Visual Basic, скриптовых языков, таких как JScript, и управляемого кода. Эта версия API и движков TTS поставлялась вместе с Windows XP. Windows XP Tablet PC Edition и Office 2003 также включают эту версию, но с существенно улучшенным движком распознавания версии 6 и поддержкой традиционного китайского языка.

SAPI 5.2

Это была специальная версия API, предназначенная исключительно для использования в Microsoft Speech Server, выпущенном в 2004 году. Она добавила поддержку языков разметки SRGS и SSML, а также дополнительные серверные функции и улучшения производительности. Speech Server поставлялся также с движком распознавания речи 6-й версии для настольных компьютеров и движком распознавания речи 7-й версии для серверов.

SAPI 5.4

Это обновленная версия API, поставляемая с Windows 7.

SAPI 5 голосов

Microsoft Sam (Speech Articulation Module) — это обычно поставляемый голос для SAPI 5. Кроме того, Microsoft Office XP и Office 2003 устанавливали голоса L&H Michael и Michelle. Пакет SDK SAPI 5.1 устанавливает ещё два голоса — Майка и Мэри. Windows Vista включает в себя Microsoft Anna, которая заменяет Microsoft Sam и звучит более естественно и разборчиво. Она также устанавливается на Windows XP вместе с Microsoft Streets & Trips 2006 и более поздними версиями. Китайская версия Vista и последующие версии Windows также включают женский голос Microsoft Lili.

Управляемый код API речи

Управляемый API поставляется в составе .NET Framework 3.0. Он обладает аналогичной функциональностью, что и SAPI 5, но лучше подходит для использования в управляемых приложениях. Новый API доступен в Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008. Существующий API SAPI 5 также можно использовать из управляемого кода в ограниченной степени, создавая COM Interop (вспомогательный код, предназначенный для доступа к COM-интерфейсам и классам). Это работает в некоторых случаях, однако новый API должен обеспечивать более удобную работу, сопоставимую с использованием любой другой управляемой библиотеки. Тем не менее, основным препятствием для перехода от COM Interop является наличие незначительных утечек памяти в управляемой реализации, приводящих к фрагментации памяти и исключающих возможность использования библиотеки в сколько-нибудь сложных приложениях. В качестве обходного решения Microsoft предложила использовать другой API, в котором меньше голосов.