【问题标题】:how to disable windows speech recognition commands?如何禁用 Windows 语音识别命令?
【发布时间】:2013-06-01 22:33:08
【问题描述】:

我正在使用 python 创建一个程序,允许您使用 Windows 语音识别执行命令,唯一的问题是我不希望语​​音识别使用它们的默认命令。有没有办法使用 python 或完全禁用它来禁用它。我正在为 python 使用 pyspeech。

【问题讨论】:

    标签: python speech-recognition


    【解决方案1】:

    嗯,您需要的是进程内识别引擎,而 PySpeech 使用共享识别引擎。所以你需要稍微修改一下 PySpeech。改变

    _recognizer = win32com.client.Dispatch("SAPI.SpSharedRecognizer")
    

    _recognizer = win32com.client.Dispatch("SAPI.SpInprocRecognizer")
    

    在 startlistening(phraselist, callback) 中,您需要附加一个音频流(通过 _recognizer.SetInput)和一个 reco 引擎(通过 _recognizer.SetRecognizer)。不幸的是,我对 Python 不够熟悉,无法将 SAPI 助手 SpGetDefaultTokenFromCategoryId(用于获取默认音频流)和 SpGetDefaultSharedRecognizerToken(用于获取默认 reco 引擎)转换为 Python。

    【讨论】:

    • 很抱歉,我是 pyspeech 新手,只知道 pyspeech 的几行代码,你能举个例子说明我将如何使用它吗?
    • 您需要修改 PySpeech 的实现。除此之外,我可以告诉你该怎么做(我有),但不能告诉你怎么做,因为我根本不懂 python。
    • 在做speech.say()的时候有没有办法让声音变慢?
    • 您可以通过 ISpVoice::SetRate 更改费率,尽管您需要修改 PySpeech 来转发呼叫),或者您可以使用 SAPI TTS XML tags 更改内嵌文本的费率。
    【解决方案2】:

    不确定您是否仍在寻找答案,但我已经为您找到了!

    在第 66 行将代码更改为:

    _recognizer = win32com.client.Dispatch("SAPI.SpInProcRecognizer")
    _recognizer.AudioInputStream = win32com.client.Dispatch("SAPI.SpMMAudioIn")
    

    在第 112 行将代码更改为:

    _ListenerBase = win32com.client.getevents("SAPI.SpInProcRecoContext") 
    

    这应该会阻止 windows 命令运行,同时也不会显示出现的小部件。祝你好运!

    【讨论】:

    • 感谢您的回答。我还在做我问这个问题的同一个项目,你真的帮了我。
    猜你喜欢
    • 2011-06-18
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多