Speech Application Programming Interface или 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.
Speech API можно рассматривать как интерфейс или часть промежуточного программного обеспечения, которая находится между приложениями и речевыми движками (распознавание и синтез). В версиях SAPI с 1 по 4 приложения могли напрямую взаимодействовать с движками. API включал абстрактное определение интерфейса , которому соответствовали приложения и движки. Приложения также могли использовать упрощенные объекты более высокого уровня, а не напрямую вызывать методы движков.
Однако в SAPI 5 приложения и движки не взаимодействуют друг с другом напрямую. Вместо этого каждый из них взаимодействует с компонентом среды выполнения ( sapi.dll ). Существует API, реализованный этим компонентом, который используют приложения, и другой набор интерфейсов для движков.
Обычно в приложениях SAPI 5 вызовы выполняются через API (например, для загрузки грамматики распознавания, запуска распознавания или предоставления текста для синтеза). Компонент среды выполнения sapi.dll интерпретирует эти команды и обрабатывает их, при необходимости вызывая движок через интерфейсы движка (например, загрузка грамматики из файла выполняется во время выполнения, но затем данные грамматики передаются движку распознавания для фактического использования при распознавании). Движки распознавания и синтеза также генерируют события во время обработки (например, для указания того, что высказывание было распознано, или для указания границ слов в синтезированной речи). Они передаются в обратном направлении, от движков, через библиотеку среды выполнения DLL и далее в приемник событий в приложении.
В дополнение к фактическому определению API и исполняемой DLL, другие компоненты поставляются со всеми версиями SAPI для создания полного набора средств разработки речевого ПО . Следующие компоненты входят в число тех, которые включены в большинство версий Speech SDK:
Сюэдун Хуан был ключевой фигурой, руководившей ранними разработками SAPI в Microsoft.
Первая версия SAPI была выпущена в 1995 году и поддерживалась в Windows 95 и Windows NT 3.51 . Эта версия включала низкоуровневые API прямого распознавания речи и прямого преобразования текста в речь, которые приложения могли использовать для прямого управления движками, а также упрощенные API голосовых команд и голосового общения «более высокого уровня».
SAPI 3.0 был выпущен в 1997 году. Он добавил ограниченную поддержку распознавания диктованной речи (дискретной, а не непрерывной), а также дополнительные примеры приложений и аудиоисточников.
SAPI 4.0 был выпущен в 1998 году. Эта версия SAPI включала как основной COM API; вместе с классами-оболочками C++ для упрощения программирования на C++; и элементы управления ActiveX для поддержки разработки Visual Basic методом перетаскивания . Это было поставлено как часть SDK, включавшего механизмы распознавания и синтеза. Оно также поставлялось (только с механизмами синтеза) в Windows 2000 .
Основными компонентами API SAPI 4 (все они были доступны в вариантах C++, COM и ActiveX) были:
Версия Speech SDK 5.0 , включающая среду выполнения SAPI 5.0, была выпущена в 2000 году. Это была полная переработка предыдущих версий, и ни движки, ни приложения, которые использовали старые версии SAPI, не могли использовать новую версию без значительных изменений.
Дизайн нового API включал концепцию строгого разделения приложения и движка, поэтому все вызовы направлялись через среду выполнения sapi.dll. Это изменение было призвано сделать API более «независимым от движка», предотвращая непреднамеренную зависимость приложений от функций конкретного движка. Кроме того, это изменение было направлено на то, чтобы значительно упростить включение речевой технологии в приложение путем перемещения некоторого кода управления и инициализации в среду выполнения.
Новый API изначально был чистым COM API и мог легко использоваться только из C/C++. Поддержка VB и скриптовых языков была добавлена позже. Поддерживались операционные системы от Windows 98 и NT 4.0 и выше.
Основные возможности API включают в себя:
Эта версия была выпущена в конце 2000 года как часть Speech SDK версии 5.0 вместе с движками распознавания и синтеза версии 5.0. Движки распознавания поддерживали непрерывную диктовку и управление и были выпущены в версиях на американском английском, японском и упрощенном китайском языках . В системе американского английского были доступны специальные акустические модели для детской речи и телефонной речи. Движок синтеза был доступен на английском и китайском языках. Эта версия API и движков распознавания также поставлялась в Microsoft Office XP в 2001 году.
Эта версия была выпущена в конце 2001 года как часть Speech SDK версии 5.1. Интерфейсы, совместимые с автоматизацией, были добавлены в API, чтобы разрешить использование из Visual Basic, языков сценариев, таких как JScript , и управляемого кода . Эта версия API и движков TTS была выпущена в Windows XP . Windows XP Tablet PC Edition и Office 2003 также включают эту версию, но с существенно улучшенным движком распознавания версии 6 и традиционным китайским языком .
Это была специальная версия API для использования только в Microsoft Speech Server , которая была выпущена в 2004 году. Она добавила поддержку языков разметки SRGS и SSML , а также дополнительные серверные функции и улучшения производительности. Speech Server также поставлялся с движком распознавания рабочего стола версии 6 и движком распознавания сервера версии 7.
Это версия API, которая поставляется в Windows Vista вместе с новыми движками распознавания и синтеза. Поскольку Windows Speech Recognition теперь интегрирована в операционную систему, Speech SDK и API являются частью Windows SDK . SAPI 5.3 включает следующие новые функции:
Это обновленная версия API, поставляемая в Windows 7 .
Microsoft Sam (модуль артикуляции речи) — это обычно поставляемый голос SAPI 5. Кроме того, Microsoft Office XP и Office 2003 устанавливают голоса L&H Michael и Michelle. SAPI 5.1 SDK устанавливает еще 2 голоса, Mike и Mary . Windows Vista включает Microsoft Anna , который заменяет Microsoft Sam и звучит более естественно и разборчиво. Он также устанавливается на Windows XP Microsoft Streets & Trips 2006 и более поздних версий. Китайская версия Vista и более поздние версии клиента Windows также включают женский голос по имени Microsoft Lili .
API управляемого кода поставляется как часть .NET Framework 3.0 . [1] Он имеет схожую функциональность с SAPI 5, но больше подходит для использования приложениями управляемого кода. Новый API доступен в Windows XP , Windows Server 2003 , Windows Vista и Windows Server 2008 .
Существующий API SAPI 5 также может быть использован из управляемого кода в ограниченной степени путем создания кода COM Interop (вспомогательного кода, предназначенного для помощи в доступе к интерфейсам и классам COM). Это хорошо работает в некоторых сценариях, однако новый API должен обеспечить более плавный опыт, эквивалентный использованию любой другой библиотеки управляемого кода.
Однако основным препятствием к переходу от COM Interop является тот факт, что управляемая реализация имеет тонкие утечки памяти , которые приводят к фрагментации памяти и исключают использование библиотеки в любых нетривиальных приложениях. В качестве обходного пути Microsoft предложила использовать другой API, который имеет меньше голосов. [2]
Windows Vista включает в себя ряд новых функций, связанных с речью, в том числе:
В частности, Microsoft Agent и все другие речевые приложения Microsoft используют SAPI 5.
Speech API совместим со следующими операционными системами: [3]
Список по версии SAPI 5.1: [3]
Более поздние версии SAPI 5 (например, SAPI 5.3 и выше) совместимы со следующими операционными системами: