我正在使用Microsoft语音引擎和SAPI语音处理文本到语音应用程序,并且在大多数情况下,它的工作方式应该如此。
首先,这是我的使用陈述:
using System;
using System.Globalization;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech.Synthesis;
好的,所以我在文本框中键入了一些文本,单击“播放/暂停”按钮,它会大声朗读文本。播放/暂停按钮似乎工作得很好。
以下是播放/暂停按钮的代码:
private void btnPlayPause_Click(object sender, EventArgs e)
{
if (btnPlayPause.Text == "Pause")
{
reader.Pause();
btnPlayPause.Text = "Play";
}
else if (btnPlayPause.Text == "Play")
{
if (txtTextToSpeak.Text == "")
MessageBox.Show("Please type some text.", "OOPS!", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (reader.State == SynthesizerState.Paused)
reader.Resume();
else
{
reader.SelectVoice(cmbxVoices.Text);
reader.SpeakAsync(txtTextToSpeak.Text);
btnPlayPause.Text = "Pause";
}
}
}
}
这是停止按钮的点击事件的代码:
private void btnStop_Click(object sender, EventArgs e)
{
reader.Pause();
reader.Dispose();
btnPlayPause.Text = "Play";
glbstrText2BSpoken = "";
}
问题在于:当我单击“停止”按钮时,我希望阅读器自行重置,以便下次单击“播放”按钮时,它会从头开始读取文本。我尝试了reader.Dispose();“在Stop按钮的事件处理程序中,但应用程序因错误”无法访问已处置的对象而崩溃。“当我单击”停止“按钮然后单击”播放“按钮时会发生这种情况。