Я использую (SAPI) объект в своем приложении. Однако всякий раз, когда я выполняю свою функцию, голос работает, но производительность приложения (все остальное) приостанавливается до тех пор, пока голос не закончится! Интересно, связано ли это с приоритетом этого Speaking-Object. Могу ли я как-то снизить его до тех пор, пока остальная часть кода не будет выполнена в первую очередь? o_OПриоритет выполнения SAPI
Private Function Lara(ByVal script As String) As Object
Lara = CreateObject("SAPI.spvoice")
Lara.Voice = Lara.GetVoices.Item(1)
Return Lara.speak(script)
End Function
Private Sub Test_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Logo.Visible = True
Logo.Image = ResizeImage(My.Resources.Spell)
Lara("Welcome")
End Sub
Can (Lara) say "welcome" ПОСЛЕ загрузки формы и ее логотипа?
спасибо.
Благодаря г-жи Лели Gushurst, голос теперь работает в соответствии с кодом заказа (Приложение показывает вверх, его логотип, а затем голос). Решение заключалось в том, чтобы добавить (ком-ссылку) проект под названием «Библиотека речевых объектов Microsoft», а затем импортировать его в код.
Imports SpeechLib
Private Sub Test_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Logo.Visible = True
Logo.Image = My.Resources.Spell
Dim Lara = CreateObject("SAPI.spvoice")
Lara.Voice = Lara.GetVoices.Item(1)
Lara.speak("Welcome", SpeechVoiceSpeakFlags.SVSFlagsAsync) 'It's declared now!
End Sub
См. Событие [** Form.Shown **] (https://msdn.microsoft.com/en-us/library/system.windows.forms.form.shown (v = vs.110) .aspx), однако вы можете запустить это в другом потоке, если это блокирующий вызов. –
Спасибо, мистер Винсент. Но мой вопрос заключается в снижении приоритета SAPI в целом. Таким образом, обработчик событий SHOWN этого не выполнит. – Sky7ure
Не существует такой вещи, как «приоритет», когда дело доходит до выполнения кода. Он синхронный, асинхронный или многопоточный синхронный/асинхронный. –