10

Dragon NaturallySpeakingをイベント駆動型プログラムに組み込む方法はありますか?DNSを使用して、画面に書き込んだりXMLに直接保存したりせずに、ユーザーの音声入力を録音した場合、上司は本当にそれを望んでいます。私は数日間研究を続けていますが、(本当に高価な)SDKなしではこれを実現する方法がわかりません。それが機能するかどうかさえわかりません。

Microsoftには、音声認識機能が音声イベントを検出するまで待機して処理できる(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にMicrosoftSpeechの機能を実行させる方法はありますか?

参考までに:論理的な解決策は単にMicrosoft Speechに切り替えることだと思いますが、ニヤリと笑うためだけに、それはオプションではないと仮定しましょう。

更新-SDKを購入した人はいますか?役に立ちましたか?

4

1 に答える 1

8

解決策:Natlinkをダウンロードします-http://qh.antenna.nl/unimacro/installation/installation.html SAPI ほど柔軟に使用することはできませんが、基本をカバーしており、必要なものはほぼすべて揃っています。また、注意してください。それとPythonは、マシン上のすべてのユーザーにダウンロードする必要があります。そうしないと、正しく機能せず、PythonBUT2.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からウィンドウを閉じるように通知する方法は素晴らしいでしょう。

于 2010-06-15T15:03:43.137 に答える