delphi 语音导致文字显示延迟问题
delphi吧
全部回复
仅看楼主
level 2
angere之泪 楼主
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
var
voice: OLEVariant;
begin
voice := CreateOLEObject('SAPI.SpVoice');
if key=#13 then
begin
if Edit2.Text=Edit1.Text then
begin
Label1.Caption:='PASS';
Label1.Font.Color:=clGreen;
voice.Speak('测试成功!',0);
end
else
begin
Label1.Caption:='FAIL';
Label1.Font.Color:=clRed;
voice.Speak('测试失败!', 0);
end;
form1.ActiveControl:=edit1
end;
end;
//为什么不同步,语音先出来了,但是LABEL文字比较延迟出来,有没有办法同时出现
2018年03月10日 02点03分 1
level 2
angere之泪 楼主
有没有大神告诉下,怎么设置同时出现和停止,而且连续点击的话,会一遍遍的重复
2018年03月10日 03点03分 2
level 12
朗读时,使用
voice.Speak(string,SpeechVoiceSpeakFlags.SVSFlagsAsync);
暂停,使用
voice.Pause();
从暂停中继续刚才的朗读,使用
voice.Resume();
停止功能是大多资料都没有写清楚的,而且在网上很少能找到,这里使用
voice.Speak('', SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak);
这样就可以完整地实现了“朗读”、“暂停”、“继续”、“停止”的功能。
枚举SpeechVoiceSpeakFlags “SpVoice标志
SVSFDefault = 0
SVSFlagsAsync = 1
SVSFPurgeBeforeSpeak = 2
SVSFIsFilename = 4
SVSFIsXML = 8
SVSFIsNotXML = 16
SVSFPersistXML = 32
2018年03月12日 02点03分 3
level 6
一看是老帖
2018年08月18日 11点08分 5
level 6
Label1语句后面加一句Application.ProcessMessages让(更新界面的)消息们马上得到处理,否则它只会在消息队列里等当前过程结束才有机会被处理。
2018年08月18日 12点08分 6
1