TheSpeech Application Programming Interface orSAPI is anAPI developed byMicrosoft to allow the use ofspeech recognition andspeech synthesis withinWindows applications. To date, a number of versions of the API have been released, which have shipped either as part of a SpeechSDK or as part of the WindowsOS itself. Applications that use SAPI includeMicrosoft Office,Microsoft Agent andMicrosoft Speech Server.
In general, all versions of the API have been designed such that a software developer can write an application to perform speech recognition and synthesis by using a standard set of interfaces, accessible from a variety of programming languages. In addition, it is possible for a 3rd-party company to produce their own Speech Recognition andText-To-Speech engines or adapt existing engines to work with SAPI. In principle, as long as these engines conform to the defined interfaces they can be used instead of the Microsoft-supplied engines.
In general, the Speech API is a freely redistributable component which can be shipped with any Windows application that wishes to use speech technology. Many versions (although not all) of the speech recognition and synthesis engines are also freely redistributable.
There have been two main 'families' of the Microsoft Speech API. SAPI versions 1 through 4 are all similar to each other, with extra features in each newer version. SAPI 5, however, was a completely new interface, released in 2000. Since then several sub-versions of this API have been released.
The Speech API can be viewed as an interface or piece of middleware which sits betweenapplications and speechengines (recognition and synthesis). In SAPI versions 1 to 4, applications could directly communicate with engines. The API included an abstractinterface definition which applications and engines conformed to. Applications could also use simplified higher-level objects rather than directly call methods on the engines.
In SAPI 5 however, applications and engines do not directly communicate with each other. Instead, each talks to aruntime component (sapi.dll). There is an API implemented by this component which applications use, and another set of interfaces for engines.
Typically in SAPI 5 applications issue calls through the API (for example to load a recognition grammar; start recognition; or provide text to be synthesized). The sapi.dll runtime component interprets these commands and processes them, where necessary calling on the engine through the engine interfaces (for example, the loading of grammar from a file is done in the runtime, but then the grammar data is passed to the recognition engine to actually use in recognition). The recognition and synthesis engines also generate events while processing (for example, to indicate an utterance has been recognized or to indicate word boundaries in the synthesized speech). These pass in the reverse direction, from the engines, through the runtime DLL, and on to anevent sink in the application.
In addition to the actual API definition and runtime DLL, other components are shipped with all versions of SAPI to make a complete SpeechSoftware Development Kit. The following components are among those included in most versions of the Speech SDK:
Xuedong Huang was a key person who led Microsoft's early SAPI efforts.
The first version of SAPI was released in 1995, and was supported onWindows 95 andWindows NT 3.51. This version included low-level Direct Speech Recognition and Direct Text To Speech APIs which applications could use to directly control engines, as well as simplified 'higher-level' Voice Command and Voice Talk APIs.
SAPI 3.0 was released in 1997. It added limited support for dictation speech recognition (discrete speech, not continuous), and additional sample applications and audio sources.
SAPI 4.0 was released in 1998. This version of SAPI included both the coreCOM API; together withC++ wrapper classes to make programming from C++ easier; andActiveX controls to allow drag-and-dropVisual Basic development. This was shipped as part of an SDK that included recognition and synthesis engines. It also shipped (with synthesis engines only) inWindows 2000.
The main components of the SAPI 4 API (which were all available in C++, COM, and ActiveX flavors) were:
TheSpeech SDK version 5.0, incorporating theSAPI 5.0 runtime was released in 2000. This was a complete redesign from previous versions and neither engines nor applications which used older versions of SAPI could use the new version without considerable modification.
The design of the new API included the concept of strictly separating the application and engine so all calls were routed through the runtime sapi.dll. This change was intended to make the API more 'engine-independent', preventing applications from inadvertently depending on features of a specific engine. In addition, this change was aimed at making it much easier to incorporate speech technology into an application by moving some management and initialization code into the runtime.
The new API was initially a pure COM API and could be used easily only from C/C++. Support for VB and scripting languages were added later. Operating systems fromWindows 98 andNT 4.0 upwards were supported.
Major features of the API include:
This version shipped in late 2000 as part of the Speech SDK version 5.0, together with version 5.0 recognition and synthesis engines. The recognition engines supported continuous dictation and command & control and were released in U.S. English, Japanese andSimplified Chinese versions. In the U.S. English system, special acoustic models were available for children's speech and telephony speech. The synthesis engine was available in English and Chinese. This version of the API and recognition engines also shipped in Microsoft Office XP in 2001.
This version shipped in late 2001 as part of the Speech SDK version 5.1. Automation-compliant interfaces were added to the API to allow use from Visual Basic, scripting languages such asJScript, andmanaged code. This version of the API and TTS engines were shipped inWindows XP.Windows XP Tablet PC Edition and Office 2003 also include this version but with a substantially improved version 6 recognition engine andTraditional Chinese.
This was a special version of the API for use only in theMicrosoft Speech Server which shipped in 2004. It added support forSRGS andSSML mark-up languages, as well as additional server features and performance improvements. The Speech Server also shipped with the version 6 desktop recognition engine and the version 7 server recognition engine.
This is the version of the API that ships inWindows Vista together with new recognition and synthesis engines. AsWindows Speech Recognition is now integrated into the operating system, the Speech SDK and APIs are a part of theWindows SDK. SAPI 5.3 includes the following new features:
This is an updated version of the API that ships inWindows 7.
Microsoft Sam is a commonly shipped SAPI 5 voice. In addition,Microsoft Office XP andOffice 2003 installedL&H Michael and Michelle voices. The SAPI 5.1 SDK installs 3 more voices,Mike,Mary, and an additional testing voice known asSample TTS Voice that uses prerecorded voice recordings instead of synthesized voices.Windows Vista and7 includesMicrosoft Anna which replaces Microsoft Sam and sounds more natural and intelligible; it is also installed on Windows XP byMicrosoft Streets & Trips 2006 and later versions. The Chinese version of Vista and 7 also includes a female voice namedMicrosoft Lili.Windows 8 and later Windows client versions includesMicrosoft David,Zira, andHazel, the latter of which is only included by default on Windows 8 and8.1. These voices replaced Microsoft Anna and sounds more natural and intelligible than previous voices.
Amanaged code API ships as part of the.NET Framework 3.0.[1] It has similar functionality to SAPI 5 but is more suitable to be used by managed code applications. The new API is available onWindows XP,Windows Server 2003,Windows Vista, andWindows Server 2008.
The existing SAPI 5 API can also be used from managed code to a limited extent by creating a COM Interop code (helper code designed to assist in accessing COM interfaces and classes). This works well in some scenarios however the new API should provide a more seamless experience equivalent to using any other managed code library.
However, major obstacle towards transitioning from the COM Interop is the fact that the managed implementation has subtlememory leaks which lead to memory fragmentation and exclude the use of the library in any non-trivial applications. As a workaround, Microsoft has suggested using a different API, which has fewer voices.[2]
Windows Vista includes a number of new speech-related features including:
Microsoft Agent most notably, and all other Microsoft speech applications use SAPI 5.
The Speech API is compatible with the following operating systems:[3][4]
List as of SAPI version 5.1:[3][4]
Later versions of SAPI 5 (e.g. SAPI 5.3 and above) are compatible with the following operating systems: