Speech Application Programming Interface

Speech Application Programming Interface（Speech API、SAPI）は、Windowsアプリケーションで音声認識や音声合成を使うためにマイクロソフトが開発したAPI。このAPIには様々なバージョンがあり、Speech SDK の一部として出荷されたものもあれば、Windows OS 自体の一部としてリリースされたものもある。SAPI を使ったアプリケーションとしては、Microsoft Office、Microsoft Agent、Microsoft Speech Server などがある。
一般にどのバージョンのAPIであっても、様々な言語で音声合成/認識機能を使ったアプリケーションを書くための標準インタフェースを提供している。また、サードパーティがSAPI対応の音声認識エンジンや音声合成エンジンを開発することも可能となっている。原則として、それらエンジンが定義されたインタフェースに準拠している限り、マイクロソフト提供のエンジンの代替として使うことが可能である。
Speech API は自由に再配布可能なコンポーネントであり、それを使っているアプリケーションと同梱させることが可能である。音声認識/合成エンジンの多くも自由に再配布可能である。
SAPI には2つのファミリがある。バージョン1から4までは互いによく似ていて、新しいバージョンほど新機能が追加されている。しかし2000年にリリースされた SAPI 5 のインタフェースは従来とは全く異なる。その後、SAPI 5 のマイナーチェンジ版がいくつかリリースされている。
基本アーキテクチャ.
SAPIは言わば、アプリケーションと音声（合成/認識）エンジンの間のインタフェースあるいはミドルウェアである。SAPIバージョン1から4では、アプリケーションは直接エンジンとやり取りできる。APIには、アプリケーションとエンジンが準拠すべき抽象「インタフェース定義」も含まれる。アプリケーションはエンジンのメソッドを直接呼び出す代わりに、単純化された高レベルのオブジェクトを使うこともできる。
一方、SAPI 5 ではアプリケーションとエンジンは直接やり取りできない。その代わり、両者が1つのランタイムコンポーネント（sapi.dll）とやり取りする。このコンポーネントにアプリケーション向けAPIとエンジン向けインタフェースが実装されている。
SAPI 5 アプリケーションは、認識文法のロード、認識開始、合成すべき文を提供するなどといった作業にこのAPIを使う。sapi.dll はそのコマンドを解釈して処理し、必要に応じてエンジンインタフェースを通してエンジンを呼び出す（例えば、ファイルからの文法のロードは sapi.dll で行われるが、文法データは実際に認識を行う認識エンジンに渡される）。処理中、認識エンジンや合成エンジンもイベントを生成することがある（例えば、発声を認識したことを示す場合や、合成音声内の単語境界を示す場合など）。そのような逆方向の経路で、エンジンから dll を経由してアプリケーションにイベントが通知される。
実際のAPIと sapi.dll に加えて、Speech SDK を構成する他のコンポーネントが SAPI の一部としてリリースされている。ほとんどのバージョンの Speech SDK に以下のコンポーネントが含まれている。
バージョン.
SAPI 1-4 API ファミリ.
SAPI 4 API（C++、COM、ActiveX）の主なコンポーネントは以下の通り。
SAPI 5 API ファミリ.
SAPI 5.0 ランタイムを含む Speech SDK version 5.0 は2000年にリリースされた。従来のバージョンとは完全に異なる設計で、従来の SAPI 用アプリケーションやエンジンはかなり改造しないと使えないようになっていた。
設計思想として、エンジンとアプリケーションを厳密に分離しようとしたため、全ての呼び出しはランタイムである sapi.dll を経由するようになった。これによってAPIがエンジン独立になり、アプリケーションが不用意に特定のエンジンの機能に依存してしまうようなことがなくなった。また、管理や初期化のコードがランタイムに移されたことで、音声技術を使ったアプリケーションが書きやすくなった。
新APIは当初 COM API のみであり、C/C++ からのみ使えるようになっていた。VB やスクリプト言語のサポートは後から追加された。OSとしては、Windows 98 と NT 4.0 以降でサポートされた。
主な機能は以下の通り:
Windows Vista の音声機能.
Windows Vista には、以下のような音声関連の新たな機能が含まれている。
互換性.
以下のオペレーティングシステムの SAPI は互換性がある。