//////////////////////////////////////////////////////////////// // // SpeechSynthesizerDemo.q // //////////////////////////////////////////////////////////////// //(New SpeechSynthesizerDemo) (Export SpeechSynthesizerDemo) (DefClass SpeechSynthesizerDemo (: Window) button synthesizer textBox (Def (Speak) (Local promptBuilder text p) (Setq promptBuilder (New PromptBuilder)) (Setq text textBox.Text) (While TRUE (Setq p (text.IndexOf #'\n')) (Cond ((< p 0) (promptBuilder.AppendText text) (Break)) (TRUE (promptBuilder.AppendText (Substring text 0 p)) (promptBuilder.AppendBreak (New TimeSpan 0 0 1)) (Setq text (Substring text (+ p 1)))))) (synthesizer.SpeakAsync promptBuilder)) (Def (SaveAs_Click sender e) (Local dialog) // Microsoft.Win32.SaveFileDialog (Setq dialog (New SaveFileDialog)) (Setq dialog.InitialDirectory "C:\\") (Setq dialog.Filter "WAV files (*.wav)|*.wav") (Setq dialog.FilterIndex 1) (Setq dialog.RestoreDirectory TRUE) // Any of these 3 work fine: //(ShowDialog dialog) //(SaveFileDialog.ShowDialog dialog) //(dialog.ShowDialog) (When (dialog.ShowDialog) (synthesizer.SetOutputToWaveFile dialog.FileName) (Speak))) (Def (button_Click sender e) (synthesizer.SetOutputToDefaultAudioDevice) (Speak)) (Def (SpeechSynthesizerDemo) (ApplyXaml this "~\\GuiDemo\\SpeechSynthesizerDemo.xaml") (Setq synthesizer (New SpeechSynthesizer)) (Show)) )