
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void FormMain_Load(object sender, EventArgs e)
{
GetVoices();
}
private void GetVoices()
{
SpVoice voice = new SpVoiceClass();
ISpeechObjectTokens voices = voice.GetVoices("", "");
var list = new List<string>();
foreach (ISpeechObjectToken token in voices)
list.Add(token.GetDescription(0));
cbSpeechType.DataSource = list;
}
private void btnSpeechText_Click(object sender, EventArgs e)
{
SpeechText(null);
}
private void SpeechText(string fileName)
{
Cursor = Cursors.WaitCursor;
SpFileStream stream = null;
SpVoice voice = new SpVoiceClass();
if (fileName + "" != "")
{
stream = new SpFileStreamClass();
stream.Open(fileName, SpeechStreamFileMode.SSFMCreateForWrite, false);
voice.AudioOutputStream = stream;
}
voice.Voice = voice.GetVoices("", "").Item(cbSpeechType.SelectedIndex);
voice.Volume = tbVol.Value;
voice.Rate = tbSpeechSpeed.Value;
voice.Speak(tbText.Text, SpeechVoiceSpeakFlags.SVSFDefault);
if (fileName + "" != "" && stream != null)
stream.Close();
Cursor = Cursors.Arrow;
}
private void btnRecordSpeech_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
using (var saveFileDialog = new SaveFileDialog())
{
saveFileDialog.FileName = "MyVoice.wav";
saveFileDialog.Filter = "Wave (*.wav)|*.wav";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
SpeechText(saveFileDialog.FileName);
}
}
Cursor = Cursors.Arrow;
}
}
