19. srpna 2015
V tomto článku se dozvíte, jakým způsobem lze ve SCADA systému Reliance převést text alarmu na řeč a tuto řeč poté reprodukovat uživateli.
SCADA systém Reliance umožňuje přehrát vybraný zvuk při vzniku, zániku nebo kvitaci alarmu/události. Přehrávaný zvuk může být společný pro všechny alarmy/události v projektu, nebo může být zadán pro každý alarm/událost samostatně. Díky tomu uživatel (dispečer) při vzniku alarmu okamžitě pozná, že jde např. o závažný alarm nebo běžnou událost. Další možností, jak od sebe alarmy zvukově odlišit, je nechat systém Reliance převést text alarmu na řeč a tu pak reprodukovat uživateli.
Pro převod textu na řeč je možné využít objekt SAPI.SpVoice, který je k dispozici od Windows XP a není tedy vyžadována žádná instalace. Dle našich zkušeností není reprodukovaná řeč ve Windows XP příliš kvalitní. Ve Windows 7 je kvalita již vynikající.
Následující příklad demonstruje použití objektu SAPI.SpVoice pro převod jednoduchého textu na řeč:
Dim text, speech
Set speech = CreateObject("SAPI.SpVoice")
text = "High critical limit"
speech.Speak text
Jak vidno, příklad je opravdu jednoduchý. Stačí vytvořit objekt SpVoice a zavolat mu metodu Speak, do které se jako parametr předá text, který má být převeden na řeč.
Upozornění: Je nutné si uvědomit, že metoda Speak je v uvedeném příkladu volána synchronně. To znamená, že skript bude čekat na dokončení řeči a tím budou blokovány další skripty zařazené ke spuštění v rámci stejného podprocesu. Nejjednodušším řešením tohoto problému je vyhradit v projektu systému Reliance samostatný podproces pro ty skripty, které budou provádět převod textu na řeč. Díky tomu nebude ovlivněn běh skriptů důležitých pro ovládání vlastní technologie.
Ukázkový skript na převod textu na řeč
Hlas, jazyk a výslovnost mluvící "osoby" jsou přednastaveny podle národního prostředí a podle výčtu hlasů nainstalovaných ve Windows. Lze je změnit nastavením vlastnosti Voice. V následujícím příkladu je naznačeno, jak získat seznam dostupných hlasů a jak určitý hlas nastavit:
Dim speech, voice
Set speech = CreateObject("SAPI.SpVoice")
For Each voice in speech.GetVoices
If InStr(voice.GetDescription, "English") <> 0 Then
Set speech.Voice = voice
Exit For
End If
Next
Aby se převedl text alarmu při vzniku, zániku nebo kvitaci na řeč, stačí v projektu systému Reliance vytvořit jeden společný skript (typ Událostní) a napojit jej u všech požadovaných alarmů na příslušnou událost (např. vznik).
Vytvoření událostního typu skriptu s napojením na příslušnou událost
Do každého skriptu, který je vyvolán alarmem, je kromě dalších informací předán i text alarmu. Text alarmu je možné ve skriptu získat pomocí metody RScr.GetCurrentScriptDataEx. Tento text je pak snadné použít pro převod na řeč způsobem popsaným v tomto článku. Následující skript je univerzální a bude-li napojen např. na vznik alarmu, bude text alarmu převeden na řeč:
Dim data, text, speech
If RScr.GetCurrentScriptDataEx(data) Then
text = data.StrPar8
Set speech = CreateObject("SAPI.SpVoice")
speech.Speak text
Set speech = Nothing
End If
Textové zobrazení alarmu
Zvuk textu alarmu "Sensor Error! It could cause the system to behave unpredictably." převedeného na řeč si můžete poslechnout v tomto zvukovém záznamu.
Převod textu na řeč v jazyku VBScript nemusí být použit jen v souvislosti s alarmem, ale obecně při jakékoliv události v systému Reliance, při níž je prováděn skript.
© 2025 GEOVAP, spol. s r. o. | Pravidla použití webu | Nastavení cookies | Napište nám