音声アプリケーションプログラミングインターフェイス(SAPI)は、 Windowsアプリケーション内で音声認識と音声合成を使用できるようにするためにMicrosoftが開発したAPIです。現在までに、Speech SDKの一部として、またはWindows OS自体の一部として、複数のバージョンのAPIがリリースされています。SAPIを使用するアプリケーションには、Microsoft Office、Microsoft Agent、Microsoft Speech Serverなどがあります。
一般的に、APIのすべてのバージョンは、ソフトウェア開発者がさまざまなプログラミング言語からアクセスできる標準的なインターフェースセットを使用して、音声認識と音声合成を実行するアプリケーションを作成できるように設計されています。さらに、サードパーティ企業が独自の音声認識エンジンやテキスト読み上げエンジンを開発したり、既存のエンジンをSAPIに対応させたりすることも可能です。原則として、これらのエンジンが定義されたインターフェースに準拠している限り、Microsoftが提供するエンジンの代わりに使用できます。
一般的に、Speech APIは自由に再配布可能なコンポーネントであり、音声技術を利用したいWindowsアプリケーションであればどれでも同梱できます。音声認識および音声合成エンジンの多くのバージョン(すべてではありませんが)も自由に再配布可能です。
Microsoft Speech APIには、大きく分けて2つの「ファミリー」が存在します。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に同梱されています。音声SDKのほとんどのバージョンに含まれるコンポーネントには、次のものがあります。
黄雪東は、マイクロソフトの初期のSAPI開発を主導した重要人物だった。
SAPIの最初のバージョンは1995年にリリースされ、Windows 95とWindows NT 3.51でサポートされました。このバージョンには、アプリケーションがエンジンを直接制御するために使用できる低レベルの直接音声認識APIと直接テキスト読み上げAPIに加え、簡素化された「高レベル」の音声コマンドAPIと音声通話APIが含まれていました。
SAPI 3.0は1997年にリリースされました。このバージョンでは、音声認識(連続音声ではなく、離散音声)に対する限定的なサポートが追加され、サンプルアプリケーションやオーディオソースも追加されました。
SAPI 4.0は1998年にリリースされました。このバージョンのSAPIには、コアとなるCOM APIに加え、C++からのプログラミングを容易にするC++ラッパークラス、そしてドラッグ&ドロップによるVisual Basic開発を可能にするActiveXコントロールが含まれていました。これは、認識エンジンと合成エンジンを含むSDKの一部として提供されました。また、 Windows 2000にも(合成エンジンのみを搭載した形で)同梱されていました。
SAPI 4 APIの主要コンポーネント(すべてC++、COM、ActiveXの各バージョンで利用可能)は以下のとおりです。
SAPI 5.0ランタイムを組み込んだSpeech SDKバージョン5.0は2000年にリリースされました。これは以前のバージョンから完全に再設計されたものであり、古いバージョンのSAPIを使用していたエンジンやアプリケーションは、大幅な変更なしには新しいバージョンを使用できませんでした。
新しいAPIの設計には、アプリケーションとエンジンを厳密に分離するというコンセプトが盛り込まれており、すべての呼び出しはランタイムのsapi.dllを経由してルーティングされます。この変更は、APIの「エンジン非依存度」を高め、アプリケーションが特定のエンジンの機能に意図せず依存してしまうことを防ぐことを目的としていました。さらに、この変更は、一部の管理コードと初期化コードをランタイムに移動することで、音声認識技術をアプリケーションに容易に組み込めるようにすることも目的としていました。
新しいAPIは当初は純粋なCOM APIであり、C/C++からのみ容易に利用できました。VBやスクリプト言語のサポートは後から追加されました。Windows 98およびNT 4.0以降のオペレーティングシステムがサポートされました。
APIの主な機能は以下のとおりです。
このバージョンは、Speech SDK バージョン 5.0 の一部として、バージョン 5.0 の音声認識エンジンおよび音声合成エンジンとともに、2000 年後半に出荷されました。音声認識エンジンは、連続音声入力とコマンド&コントロールをサポートし、米国英語、日本語、簡体字中国語版がリリースされました。米国英語システムでは、子供の声と電話音声用の特別な音響モデルが利用可能でした。音声合成エンジンは、英語と中国語で利用可能でした。このバージョンの API と音声認識エンジンは、2001 年に Microsoft Office XP にも同梱されました。
このバージョンは、Speech SDK バージョン 5.1 の一部として 2001 年後半に出荷されました。Visual Basic、JScriptなどのスクリプト言語、およびマネージド コードから使用できるように、自動化に準拠したインターフェイスが API に追加されました。このバージョンの API と TTS エンジンは、Windows XPに同梱されていました。Windows XP Tablet PC Editionおよび Office 2003 にもこのバージョンが含まれていますが、大幅に改良されたバージョン 6 の認識エンジンと繁体字中国語が追加されています。
これは、2004年に出荷されたMicrosoft Speech Server専用のAPIの特別バージョンでした。SRGSおよびSSMLマークアップ言語のサポートに加え、サーバー機能の追加とパフォーマンスの向上も実現しました。Speech Serverには、デスクトップ版認識エンジンバージョン6とサーバー版認識エンジンバージョン7も同梱されていました。
これは、新しい認識エンジンと合成エンジンとともにWindows Vistaに同梱されている API のバージョンです。Windows音声認識はオペレーティングシステムに統合されているため、Speech SDK と API はWindows SDKの一部となっています。SAPI 5.3 には、次の新機能が含まれています。
これは、 Windows 7に搭載されている API の更新版です。
Microsoft Samは、一般的に出荷される SAPI 5 音声です。さらに、Microsoft Office XPおよびOffice 2003には、 L&H Michael と Michelle の音声がインストールされています。SAPI 5.1 SDK では、 Mike、Mary 、および合成音声ではなく事前録音された音声を使用するSample TTS Voiceと呼ばれる追加のテスト音声の 3 つの音声がインストールされます。Windows Vistaおよび7には、Microsoft Sam に代わる、より自然で聞き取りやすいMicrosoft Annaが含まれています。また、 Microsoft Streets & Trips 2006 以降のバージョンによって Windows XP にもインストールされます。Vista および 7 の中国語版には、 Microsoft Liliという名前の女性の音声も含まれています。Windows 8以降の Windows クライアント バージョンには、Microsoft David、Zira、およびHazelが含まれています。Hazel は、Windows 8 および8.1にのみデフォルトで含まれています。これらの音声は Microsoft Anna に代わるもので、以前の音声よりも自然で聞き取りやすいです。
マネージドコードAPI は.NET Framework 3.0の一部として提供されます。[ 1 ] SAPI 5 と同様の機能を持ちますが、マネージド コード アプリケーションでの使用により適しています。新しい API は、Windows XP、Windows Server 2003、Windows Vista、およびWindows Server 2008で利用可能です。
既存のSAPI 5 APIは、COM相互運用コード(COMインターフェイスやクラスへのアクセスを支援するヘルパーコード)を作成することで、マネージドコードから限定的に使用することもできます。これは一部のシナリオではうまく機能しますが、新しいAPIは、他のマネージドコードライブラリを使用する場合と同等の、よりシームレスなエクスペリエンスを提供するはずです。
しかし、COM Interop からの移行における大きな障害は、マネージド実装に微妙なメモリリークがあり、メモリ断片化を引き起こし、複雑なアプリケーションではライブラリを使用できないという事実です。回避策として、Microsoft はボイスの少ない別の API の使用を提案しています。[ 2 ]
Windows Vistaには、以下のような音声関連の新機能が多数含まれています。
特にMicrosoft AgentをはじめとするすべてのMicrosoft音声アプリケーションはSAPI 5を使用しています。
Speech API は、以下のオペレーティングシステムと互換性があります: [ 3 ] [ 4 ]
SAPIバージョン5.1時点のリスト:[ 3 ] [ 4 ]
SAPI 5 の最新バージョン(SAPI 5.3 以降など)は、以下のオペレーティングシステムと互換性があります。