朗读文本
完成窗体的初始化,创建SpVoice对象之后,接下来我们就可以利用这个对象的Speak()方法来阅读Text Box控件中的文本了。
private void btnSpeak_Click(object sender, EventArgs e)
{
// 获取用户在Combo Box中选择的语音索引
int nVoiceIndex = this.cmbVoices.SelectedIndex;
// 根据语音索引指定SpVoice的Voice属性,也就是指定使用何种语音
m_spVoice.Voice = m_spVoice.GetVoices(string.Empty, string.Empty).Item(nVoiceIndex);
// 使用SpVoice的Speak()方法阅读Text Box中文本
m_spVoice.Speak(this.textPreview.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync);
}
{
// 获取用户在Combo Box中选择的语音索引
int nVoiceIndex = this.cmbVoices.SelectedIndex;
// 根据语音索引指定SpVoice的Voice属性,也就是指定使用何种语音
m_spVoice.Voice = m_spVoice.GetVoices(string.Empty, string.Empty).Item(nVoiceIndex);
// 使用SpVoice的Speak()方法阅读Text Box中文本
m_spVoice.Speak(this.textPreview.Text, SpeechVoiceSpeakFlags.SVSFlagsAsync);
}
在这里我们使用了SpVoice对象的一个最重要的函数Speak(),它的第一个参数就是我们要朗读的文本,而第二个参数则是朗读的方式,有同步,异步,XML文件等等。 这样,通过SpVoice对象的一个简单函数,我们就可以朗读Text Box控件中的文本内容了。
朗读文本文件
更多时候,我们不是阅读Text Box控件中输入的文本,而是阅读某些文本文件中的文字,这样,读取文本文件并将文字填充到Text Box控件中就成为一种必要了。
private void btnFileSelect_Click(object sender, EventArgs e)
{
// 使用打开文件对话框选择文本文件
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "e:\\";
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// 读取文本文件并将其填充到Text Box控件
StreamReader objReader = new StreamReader( openFileDialog1.FileName);
string sLine = "";
string sPreview = "";
while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null)
{
// 这里需要添加Environment.NewLine表示换行
sPreview += sLine + Environment.NewLine;
}
}
// 将文本文件中的内容显示到Text Box控件
this.textPreview.Text = sPreview;
// 关闭文件读取器
objReader.Close();
}
}
、{
// 使用打开文件对话框选择文本文件
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "e:\\";
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// 读取文本文件并将其填充到Text Box控件
StreamReader objReader = new StreamReader( openFileDialog1.FileName);
string sLine = "";
string sPreview = "";
while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null)
{
// 这里需要添加Environment.NewLine表示换行
sPreview += sLine + Environment.NewLine;
}
}
// 将文本文件中的内容显示到Text Box控件
this.textPreview.Text = sPreview;
// 关闭文件读取器
objReader.Close();
}
}
这样,我们就可以通过读取文本文件中的内容,将其显示到Text Box控件中,然后SpVoice就可以阅读Text Box控件中的内容,也就是间接地朗读了文本文件。
将文本转换成声音文件
除了直接朗读文本之外,更多的时候,我们还需要将文本转换成声音文件。这样我们可以将这些声音文件随身携带,想听就听。要将文本转换为声音文件,我们需要用到SpVoice的另外一个重要的函数SetOutput(),我们可以利用它将SpVoice的语音输出某个WAV文件,从而实现将文本文件转换为声音文件。