Dragon NaturallySpeaking程序员

无论如何将Dragon NaturallySpeaking融入事件驱动程序? 如果我使用DNS记录用户语音输入而不写入屏幕并将其直接保存到XML,我的老板会非常喜欢它。 我已经做了好几天的研究,我看不到一个没有(非常昂贵)SDK的情况下发生这种情况的方法,我甚至不知道它会起作用。

微软有能力编写一个(Python)程序,它的语音识别器可以等待,直到它检测到一个语音事件,然后处理它。 它还具有能够向其认为是最佳猜测和记录.wav文件供以后使用的替代短语的便利质量。 示例代码:

spEngine = MsSpeech()
spEngine.setEventHandler(RecoEventHandler(spEngine.context))

class RecoEventHandler(SpRecoContext):
def OnRecognition(self, StreamNumber, StreamPosition, RecognitionType, Result):
    res = win32com.client.Dispatch(Result)
    phrase = res.PhraseInfo.GetText()
    #from here I would save it as XML

    # write reco phrases
    altPhrases = reco.Alternates(NBEST)
    for phrase in altPhrases:
        nodePhrase = self.doc.createElement(TAG_PHRASE)

我似乎无法让DNS做到这一点。 我能做到的最接近它的是:

while keepGoing == True:
    yourWords = raw_input("Your input: ")
    transcript_el = createTranscript(doc, "user", yourWords)
    speech_el.appendChild(transcript_el)
    if yourWords == 'bye':
        break

它甚至会让用户在每句话后都说出“新线”的可怕副作用! 根本不是首选解决方案! 无论如何,要让DNS执行Microsoft Speech的功能吗?

仅供参考:我知道合乎逻辑的解决方案是简单地切换到Microsoft Speech,但让我们假设,仅仅是因为咧嘴笑和笑声,这不是一种选择。

更新 - 有没有人买过SDK? 你觉得它有用吗?


解决方案:下载Natlink - http://qh.antenna.nl/unimacro/installation/installation.html它不像SAPI那么灵活,但它涵盖了基本知识,并且我几乎获得了所需的所有东西。 另外,需要为计算机上的所有用户下载它和Python,否则它将无法正常工作,并且适用于Python BUT 2.4的每个版本。

所有受支持命令的文档在下载后可在C: NatLink NatLink MiscScripts natlink.txt下找到。 它位于文件顶部的所有更新之下。

示例代码:

#make sure DNS is running before you start
if not natlink.isNatSpeakRunning():
  raiseError('must start up Dragon NaturallySpeaking first!')
  shutdownServer()
  return
#connect to natlink and load the grammer it's supposed to recognize
natlink.natConnect()
loggerGrammar = LoggerGrammar()
loggerGrammar.initialize()
if natlink.getMicState() == 'off':
   natlink.setMicState('on')
userName = 'Danni'
natlink.openUser(userName)
#natlink.waitForSpeech() continuous loop waiting for input. 
#Results are sent to gotResultsObject method of the logger grammar
natlink.waitForSpeech()
natlink.natDisconnect()

该代码严格从我的生产版本缩写,但我希望你明白了。 现在唯一的问题是,我仍然必须返回到微型窗口natlink.waitForSpeech()创建点击'关闭',才可以安全地退出程序。 如果不使用超时参数来指示窗口关闭python的方式将非常棒。

链接地址: http://www.djcxy.com/p/64555.html

上一篇: Dragon NaturallySpeaking Programmers

下一篇: How to keep your tests small while using data providers?