小弟写另一个语音系统做实验,是先用两种语言先后读取文本框里的文字。读取的时候我是用按钮来触发的。
部分代码如下:using SpeechLib;
using System.Threading;
private void Form1_Load(object sender, EventArgs e)
{
tb_sp.Text = "张三,张三,你妈叫你回家吃饭啦!"
svsf = new SpeechVoiceSpeakFlags();
svsf = SpeechVoiceSpeakFlags.SVSFlagsAsync;
svc = new SpVoiceClass();//系统默认使用Lily
svc_y = new SpVoiceClass();
fs = new SpFileStreamClass();
}
private void Voice()
{
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
svc.Voice = svc.GetVoices("", "Language=804").Item(0);//804为VM Lily;
svc.Speak(tb_sp.Text.Trim(), svsf);//系统默认语音朗读
}
else
{
svc.Voice = svc_y.GetVoices("", "Language=C04").Item(0);//C04为粤语;
svc.Speak(tb_sp.Text.Trim(), svsf);//系统默认语音朗读
}
}
} private void bt_sp_Click(object sender, EventArgs e)//按钮事件
{
mythread = new Thread(Voice);
mythread.Start();
}如果我在出现还没有读完tb_sp里的文字时,我再按一次,两次、三次按钮的时候,结果就是,先读VM Lily三遍,再粤语读三遍。可是我要的效果是,我连续按三次按钮的时候是:读完VM Lily,接着读粤语,这样为一次,然后重复读三次。。不知道各位大虾是否明白我说的 ,能不能帮我解决这个问题~~
部分代码如下:using SpeechLib;
using System.Threading;
private void Form1_Load(object sender, EventArgs e)
{
tb_sp.Text = "张三,张三,你妈叫你回家吃饭啦!"
svsf = new SpeechVoiceSpeakFlags();
svsf = SpeechVoiceSpeakFlags.SVSFlagsAsync;
svc = new SpVoiceClass();//系统默认使用Lily
svc_y = new SpVoiceClass();
fs = new SpFileStreamClass();
}
private void Voice()
{
for (int i = 0; i < 2; i++)
{
if (i == 0)
{
svc.Voice = svc.GetVoices("", "Language=804").Item(0);//804为VM Lily;
svc.Speak(tb_sp.Text.Trim(), svsf);//系统默认语音朗读
}
else
{
svc.Voice = svc_y.GetVoices("", "Language=C04").Item(0);//C04为粤语;
svc.Speak(tb_sp.Text.Trim(), svsf);//系统默认语音朗读
}
}
} private void bt_sp_Click(object sender, EventArgs e)//按钮事件
{
mythread = new Thread(Voice);
mythread.Start();
}如果我在出现还没有读完tb_sp里的文字时,我再按一次,两次、三次按钮的时候,结果就是,先读VM Lily三遍,再粤语读三遍。可是我要的效果是,我连续按三次按钮的时候是:读完VM Lily,接着读粤语,这样为一次,然后重复读三次。。不知道各位大虾是否明白我说的 ,能不能帮我解决这个问题~~
因为本人才刚刚学习C#~~
所以如果有高手,请举例示范一下,跪求~~~~