Ambele instrumente sunt suportate de clase din ansamblul System.Speech.dll. În mod implicit, Visual Studio nu adaugă linkuri către acest ansamblu proiectelor WPF noi, deci va trebui să o faceți singur în proiectele dvs.
Vorbirea este o parte secundară a WPF. Deși suportul pentru vorbire este considerat în mod oficial parte din WPF și a apărut de la lansarea NET Framework 3.0, spațiul de clasă pentru suportul de vorbire începe cu System.Speech, nu System.Windows.
Sinteza sintezei este un mijloc de generare a unui semnal de vorbire audio pe baza textului furnizat. Sinteza discursului nu este un instrument încorporat în WPF - este un mijloc de accesibilitate a sistemului de operare Windows. Aplicațiile de sistem precum Narrator (cititor de ecran ușor) sunt incluse în Windows și utilizează sinteza de vorbire pentru a ajuta utilizatorii să navigheze prin casetele principale de dialog. În general vorbind, sinteza de vorbire poate fi utilizată pentru a crea ghiduri audio și instrucțiuni "vorbind", deși audio preînregistrat oferă o calitate superioară.
Sinteza sintezei are sens atunci când doriți să creați audio pentru text dinamic - cu alte cuvinte, când nu este cunoscut la momentul compilării ce cuvinte ar trebui să fie rostite în timpul rulării. Dar dacă sunetul este invariabil, atunci înregistrarea preînregistrată este mai ușor de folosit, este mai eficientă, pe lângă calitatea sunetului fiind mai mare. Singurul motiv pentru care preferi sinteza de vorbire este când trebuie să citești o cantitate imensă de text, iar preînregistrarea lui este impracticabilă.
Deși toate versiunile moderne ale Windows au sinteză vocală încorporată, vocea generată de calculator pe care o folosesc diferă. Windows XP utilizează o voce similară vocii robotului și se numește Sam, în timp ce în Windows Vista și Windows 7 există o voce feminină mai naturală numită Anna. Pentru toate aceste sisteme, sunt disponibile și voci suplimentare pentru descărcare și instalare.
Reproducerea vorbirii este înșelătoare simplă. Tot ce aveți nevoie este să creați o instanță a clasei SpeechSynthesizer din spațiul de nume System.Speech.Synthesis și să apelați metoda Speak () cu un șir de text, de exemplu:
Atunci când utilizați această abordare - transferul textului simplu către obiectul SpeechSynthesizer - se pierde un anumit control. Pot exista cuvinte care sunt pronunțate incorect, cu accente greșite sau nu la viteza corespunzătoare. Pentru a obține mai mult control asupra textului vorbit, trebuie să utilizați clasa PromptBuilder pentru a construi definiția cuvântului.
Iată cum puteți modifica exemplul anterior cu codul complet echivalent în care este utilizat PromptBuilder:
Acest cod nu oferă niciun avantaj. Cu toate acestea, clasa PromptBuilder conține multe alte metode pe care le puteți utiliza pentru a personaliza pronunțarea textului. De exemplu, puteți accentua un anumit cuvânt (sau câteva cuvinte) utilizând o versiune supraîncărcată a metodei AppendText (). care ia o valoare din enumerarea PromptEmphasis. Deși efectul exact al accentuării cuvântului depinde de vocea folosită, următorul cod accentuează cuvântul "sunt" în teza "Cum te simți?":
Metoda AppendText () are încă două suprasarcini: una ia valoarea PromptRate, care vă permite să măriți sau să micșorați viteza, iar cealaltă - valoarea PromptVolume, care vă permite să creșteți sau să micșorați volumul.
Pentru a schimba mai multe componente simultan, trebuie să utilizați obiectul PromptStyle. Acest obiect este wrapper pentru valorile PromptEmphasis, PromptRate și PromptVolume. Puteți specifica valori pentru toți cei trei parametri sau numai unul sau două de care aveți nevoie.