Zkoušeli jste někdy syntézu řeči (tedy vyslovování textu počítačem)? Je to překvapivě jednoduché.
Následující triviální příklad oznámí aktuální čas (jazyk: PowerShell):
Add-Type -AssemblyName System.Speech $synthesizer = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer $synthesizer.Speak("It's {0:H m}" -f (Get-Date))
Lze také udělat třeba hlasové oznamování výjimek:
$nullReference.ToString() trap { Add-Type -AssemblyName System.Speech $synthesizer = New-Object -TypeName System.Speech.Synthesis.SpeechSynthesizer $synthesizer.SpeakAsync($_) }
Měli byste uslyšet “You cannot call a method on a null-valued expression”, tedy alespoň v anglickém jazykovém prostředí. Všimněte si také, že teď jde o asynchronní volání.
Samozřejmě jsou podporovány i mnohem složitější scénáře, například různé hlasy, hláskování, změny rychlosti řeči a podobně. Předmětem tohoto příspěvku je ale jen stručná ukázka, ne zacházení do detailů.
Poslední příklad je malinko komplexnější a naznačuje možné “užitečnější” využití. (Jazyk je C#.)
using System.Speech.Synthesis; PromptBuilder builder = new PromptBuilder(); builder.AppendText("Your number is"); builder.AppendBreak(TimeSpan.FromMilliseconds(200)); builder.AppendTextWithHint("1234567", SayAs.SpellOut); builder.AppendBreak(TimeSpan.FromMilliseconds(500)); builder.AppendText("Thank you for your order."); builder.AppendBreak(TimeSpan.FromMilliseconds(100)); builder.AppendText("Live long and prosper."); SpeechSynthesizer synthesizer = new SpeechSynthesizer(); synthesizer.Rate = -3; synthesizer.Speak(builder);
Jediná špatná zpráva je ta, že čeština (alespoň pokud vím) podporována není.