c# - SpeechStarted/SpeechCompleted events being delayed indefinitely -
i have programme switches on relay when synthesis engine starts speaking, , turns off when finishes speaking. on pc compiling/working on, works fine, 100% of time. engine starts talking, event raised, relay turned on, engine stops talking, event raised, relay turned off. no problems. simple!
when set programme on of laptops, events not raised immediately. programme speak several prompts, , of events raised in short order. there doesn't seem pattern delay. 1 time few seconds, it's on minute. events aren't raised @ (or aren't raised plenty me see...)
this happens both published application , in debug environment in vs2013, on laptops. main pc win8, 1 laptop win8, , other laptops win7. main pc , win8 laptop identical far environment goes.
i don't know start troubleshooting this. have verified (i think) event not beingness raised outputting text console, 0 conditions, anytime it's raised. after few minutes, flood of events in console.
i thinking maybe it's performance issue (though none of these laptops underpowered whatsoever) don't know how confirm that, or how alleviate it. set whole tts engine, including events, in own thread? possible or practical? there shouldn't issues programme slowing downwards or getting stuck , somehow delaying event - there's nil else going on.
below relevant code, unrelated stuff stripped.
tts.speakstarted += new eventhandler<speakstartedeventargs>(tts_speakstarted); tts.speakcompleted += new eventhandler<speakcompletedeventargs>(tts_speakcompleted); void tts_speakstarted(object sender, speakstartedeventargs e) { seek { if (properties.settings.default.relay_enabled) // stuff } grab (exception ex) {} } void tts_speakcompleted(object sender, speakcompletedeventargs e) { seek { if (properties.settings.default.relay_enabled) // stuff } grab (exception ex) {} }
i not able speakstarted/speakcompleted events function properly.
my first effort @ solution set speak method in it's own thread, , alter speak synchronously. way have before-code, , speak block until finished, , after code. did not work either. speak block same indefinite amount of time took raise events, while before-code execute, after-code not.
my solution in end utilize statechanged event instead of speakstarted/speakcompleted. reason, statechanged event functioned fine, , able utilize state determine when engine had begun speaking, , when "ready", presumed finished speaking.
c# text-to-speech speech-synthesis
No comments:
Post a Comment