SAPI Tutorial

Tale programmeringsgrensesnitt (SAPI) er en konsoll applikasjon utviklet av Microsoft som brukes til å oversette tekst til tale. Ved hjelp av dette programmet innebærer en rekke tiltak, blant annet å sette opp et prosjekt, sette opp tale og spille tale.

Setup

Ved hjelp av Microsoft Visual Studio, opprette en Win32 konsoll applikasjon. Åpne STDAfx.h filen og lim inn følgende kode etter "# include <stdio.h>":

definere _ATL_APARTMENT_THREADEDinclude <atlbase.h>

Du kan utlede en klasse fra CComModule og bruke den hvis du ønsker å overstyre noe, men ikke endre navnet på _Module extern CComModule _Module;

inkluderer <atlcom.h>

Velg Pre-prosessor fra kategorien Kategori dropdown funnet i C / C ++ kategorien og skriv C: \ Programfiler \ Microsoft Speech SDK 5.3 \ Inkluder der det står Tilleggs Inkluder kataloger.

Legg C: \ Programfiler \ Microsoft Speech SDK 5.3 \ lib \ i386 der det står Tilleggs Library Path, som finnes i Kategori nedtrekkslisten under fanen Link. Kontroller at COM er initialisert.

Voices

Lag en stemme ved å sette opp et COM-objekt. Alternativt kan du bruke systemets standardinnstillinger som automatisk velger en stemme type og språk. Mislighold kan endres ved å velge Tale eiendommer i Kontrollpanel. Koden skal nå se slik ut:

inkluderer <stdafx.h> inkluder <sapi.h>

int main (int argc, char * argv [])

{

ISpVoice * pVoice = NULL;

if (FAILED (:: CoInitialize (NULL)))

return false;

HRESULT hr = CoCreateInstance (CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **) og pVoice);

if (SUCCEEDED (t))

{

pVoice-> Frigi ();

pVoice = NULL;

}

:: CoUninitialize ();

return true;

}

Snakker

Starter tale, for eksempel, får datamaskinen til å si "Hei, verden" er et spørsmål om å legge en linje med kode. Den endelige koden skal se slik ut, med tale-funksjonen i fet skrift:

inkluderer <stdafx.h> inkluder <sapi.h>

int main (int argc, char * argv [])

{

ISpVoice * pVoice = NULL;

if (FAILED (:: CoInitialize (NULL)))

return false;

HRESULT hr = CoCreateInstance (CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **) og pVoice);

if (SUCCEEDED (t))

{

hr = pVoice-> Speak (L "Hello world", 0, NULL);

pVoice-> Frigi ();

pVoice = NULL;

}

:: CoUninitialize ();

return true;

}