Preview All Installed Voices

Preview All Installed Voices
This example shows how to create a simple WinForms app that lets you try out all the voices on your system. This example uses ListBox, TextBox, and NumericUpDown widgets.

You will need to have .NET 3.x installed to run this example.

You probably already have the "Microsoft Sam" voice, but to get more voices, you will need to download Microsoft Speech SDK 5.1. To get the "Microsoft Simplified Chinese" voice, you will also need to download the Speech SDK 5.1 Language Pack (available on the same page).



import clr clr.AddReference("System.Drawing") clr.AddReference("System.Windows.Forms") clr.AddReference("System.Speech, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35") from System import Decimal from System.Drawing import Font from System.Windows.Forms import (Form, DockStyle, TextBox, ListBox, Panel,                                 NumericUpDown) from System.Speech.Synthesis import SpeechSynthesizer

spk = SpeechSynthesizer spk.Rate = 0 voices = [v.VoiceInfo.Name for v in spk.GetInstalledVoices]

f = Form f.Text = 'Voice Previewer'

lb = ListBox for voice in voices: lb.Items.Add(voice) lb.SelectedIndex = 0

nud = NumericUpDown nud.Value = Decimal(0) nud.Minimum = Decimal(-10) nud.Maximum = Decimal(10)

tb = TextBox tb.Text = 'Hello World!' tb.Multiline = True tb.Font = Font('serif', 20)

f.Width = 500 f.Height = 300
 * 1) Layout

pnl = Panel pnl.Dock = DockStyle.Left

lb.Dock = DockStyle.Fill lb.Width = 200 nud.Dock = DockStyle.Bottom tb.Dock = DockStyle.Fill

f.Controls.Add(tb) f.Controls.Add(pnl) pnl.Controls.Add(lb) pnl.Controls.Add(nud) f.ActiveControl = lb

def Speak: spk.SelectVoice(voices[lb.SelectedIndex]) spk.Speak(tb.Text)
 * 1) Event handling

def OnKeyPress(sender, args): if args.KeyChar == u'\r': Speak lb.KeyPress += OnKeyPress

def OnValueChanged(sender, args): spk.Rate = Decimal.ToInt32(nud.Value) nud.ValueChanged += OnValueChanged

nud.KeyPress += lambda sender, args: Speak

f.ShowDialog

Back to Contents.