TTS 음성 낭독이 끝났는지 판단
인터넷에서 검색한 TTS 낭독 완료 이벤트를 판단하는 코드WaitForSingleObject(spvoice.SpeakComplete Event, 200);델파이에서 사용했을 때 원래 있어야 할 효과에 이르지 못했는데 테스트 결과 이 물건은 TTS에서 낭독 흐름을 합성한 후에 되돌아왔다. 말하자면 TTS가 낭독하려고 하자 낭독이 완성된 것으로 판정되었다.spvoice의 매개 변수를 자세히 찾았는데 그 안에statdus 속성이 있습니다. 이 되돌아오는 대상에서 유용한 속성 매개 변수를 얻을 수 있습니다. 예를 들어 RunningState(운행상태), inputWordLegth(낭독문장의 모든 어휘 길이 총합), inputWordPosition(전에 낭독된 어휘의 마지막 위치)...
이 중 RunningState는 세 가지 상태가 있습니다. 낭독 텍스트가 모두 렌더링된 후 SRSEDone = 1 낭독 중 SRSEIs Speaking = 2 낭독을 중단하면 0 으로 돌아갑니다.
이 세 가지 속성을 사용하면 낭독이 완성되었는지 판단할 수 있고 두 개의 타이머를 추가하여 낭독 문장을 시작할 때 낭독 상태를 판단하는 타이머를 가동하고 완성한 후에 다시 타이머를 활성화하여 낭독할 수 있다.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=false;
learnTTS.Speak('this is voa explorations in special english!',1);
WaitForSingleObject(learnTTS.SpeakCompleteEvent, 200);
timer2.Enabled:=true;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
edit1.Text:=inttostr(learnTTS.Status.RunningState);
if learnTTS.Status.RunningState=1 then // 1
timer1.Enabled:=true;
end;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Delphi 10.3.3 IDE 글꼴 및 글꼴 크기 수정Delphi는 Windows 플랫폼에서 유명한 빠른 응용 프로그램 개발 도구(Rapid Application Development, 약칭 RAD)입니다.그것의 전신은 바로 DOS 시대에 성행한'Borland Turb...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.