【问题标题】:SAPI Execution PrioritySAPI 执行优先级
【发布时间】:2016-08-23 11:00:50
【问题描述】:

我在我的应用程序中使用 (SAPI) 对象。但是,每当我执行它的功能时,语音就会运行,但应用程序的性能(其他一切)会暂停,直到语音完成!我想知道这是否与这个说话对象的优先级有关。我可以以某种方式降低它,直到其余代码首先执行? o_O

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

(劳拉)可以在加载表单及其徽标后说“欢迎”吗?

谢谢。


感谢 Lesley Gushurst 女士,语音现在按照代码顺序运行(应用程序出现,它的徽标,然后是语音)。解决方案是向名为“Microsoft Speech Object Library”的项目添加(com-reference),然后将其导入代码中。

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 event,但是如果它是一个阻塞调用,您可能希望在另一个线程中运行它。
  • 谢谢文森特先生。但我的问题是总体上降低 SAPI 的优先级。因此,SHOWN 事件处理程序不会完成。
  • 在代码执行方面没有所谓的“优先级”。它可以是同步、异步或多线程同步/异步。
  • 文森特先生,请记住这一点。 ^_^
  • 好:)!如果代码是同步执行的,则执行将停留在同一行代码上,直到该行完成执行。 Lara.speak() 是一个同步调用,它似乎也会阻塞直到它完成通话,这就是它阻止其余部分执行的原因。

标签: vb.net performance sapi


【解决方案1】:

如果您查看 MSDN 的文档 SpVoice Speak method,它会声明

"在应用程序中使用同步语音时,应用程序的 语音说话时执行被阻止,并且用户 有效锁定。这对于简单的来说可能是可以接受的 应用程序,或没有图形用户界面 (GUI) 的应用程序,但 当需要复杂的用户交互时,异步说话 一般会比较合适。”

因此,您可能想要做的是考虑在设置了 SVSFlagsAsync 的情况下调用 speak。现在你的执行被阻止了。

我想你的代码应该是这样的:

Lara.speak(script, SpeechVoiceSpeakFlags.SVSFlagsAsync)  

【讨论】:

  • 非常感谢!然而,当我在函数的返回中使用它时,它告诉我 (SpeechVoiceSpeaFlags) 没有声明。我怎样才能准确地声明那个枚举;甚至在调用它之前?
  • 这个网站似乎有一个你想要做的工作示例vbcity.com/forums/t/166589.aspx ...我通常不使用 VB,但如果你仍然有问题,我可以看看进一步深入。
  • 哇!有效。这一切都是为了将​​“Microsoft Speech Object Library”添加到项目的引用中,然后在主类之前“导入”它。谢谢你,莱斯利女士。 ^_^
【解决方案2】:

我希望我的也这么简单。根据嵌入在要阅读的文本中的声音,即时挖掘 SWITCHES 声音。而且我很快发现没有太多人试图这样做。

我的应用程序是一个 Visual Basic (VS2010) 语言编辑工具,用于讲述章节或故事的作者,因此作者可以听到男声或女声中的拼写错误、不连贯的句子等,具体取决于说话的角色。现在我只有 7 种声音可用,虽然我曾经有 12 种声音,并且分配了 22 个不同的字符。

它在 Windows 7、8 和 8.1 上运行良好,但 Windows 文本开始出现大问题。

当我最终让它工作时,我可能会提供代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多