SAPI - O que é?

A interface da programação das aplicações de voz (Speech Application Programming 
Interface – SAPI) é uma API desenvolvida pela Microsoft que permite a utilização 
do reconhecimento de voz (Speech Recognition) e síntese de voz (TTS – Text To 
Speech) nas aplicações do Windows. Em geral, todas as versões desta API foram 
projectadas para que os programas consigam comunicar de uma maneira fácil, 
acessível e através de diversas linguagens de programação com o software que 
reconhece a voz ou que converte o texto para voz. Existem grandes diferenças 
entre as versões SAPI 4 (ou anteriores que são similares entre si exceptuando-se 
alguns novos updates) e a 5 que trouxe alterações relevantes e actualmente 
encontra-se dividida em subversões.
Nestas versões, de 1 a 4 as aplicações comunicam directamente com os motores de 
voz. Estas API’s incluíam definições de interface abstractas com os diversos 
programas e não necessitavam de mais recursos. Entretanto, na família SAPI 5 as 
aplicações e os motores não comunicam directamente. Associam a fala que está em 
execução (sapi.dll) ao respectivo componente. Existe uma API que executa um destes
 componentes para as aplicações e outro para o conjunto das relações entre os 
motores de voz. Normalmente em SAPI 5, os programas dão a ordem para:
• Chamar através da API uma gramática para o reconhecimento da voz;
• Iniciar o reconhecimento de voz;
• Fornecer o texto ao sintetizador para ser convertido em voz.
O componente sapi.dll em execução interpreta estes comandos e processa-os, onde é 
necessário chamar o motor de voz que fará a interface. Um exemplo é o carregamento
 do ficheiro de gramática que é feito em tempo real e posteriormente os seus dados
 são passados para o reconhecedor de voz onde são actualizados para serem 
utilizados. Os motores do reconhecimento e síntese de voz também geram eventos 
quando estão a processar (por exemplo uma expressão vocal quando reconhecida ou o 
final de uma palavra sintetizada). Estes passam no sentido inverso, a partir dos 
motores, através do DLL que está a ser executado em tempo real e sobre um 
dissipador do evento da aplicação.
