Введение
Интерфейс программирования приложений для 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. Документация.
API definition files in MIDL and as C or C++ header files. Runtime components e. g. sapi. dll. Control Panel applet to select and configure default speech recognizer and synthesizer. Text To Speech engines in multiple languages. Speech Recognition engines in multiple languages. Redistributable components to allow developers to package the engines and runtime with their application code to produce a single installable application. Sample application code. Sample engines implementations of the necessary engine interfaces but with no true speech processing which could be used as a sample for those porting an engine to SAPI. Documentation.
Версии
Сюэдун Хуан был ключевой фигурой, руководившей первыми разработками 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, в котором меньше голосов.