Pregunta

¿Hay de todos modos para incorporar a Dragon naturalmente encajar en un programa impulsado por eventos? A mi jefe realmente le gustaría si usara DNS para grabar la entrada de voz del usuario sin escribirla en la pantalla y guardarla directamente en XML. He estado investigando durante varios días y no puedo ver una manera de que esto suceda sin el SDK (realmente caro), ni siquiera sé que funcionaría entonces.

Microsoft tiene la capacidad de escribir un programa (Python) donde su reconocimiento de voz puede esperar hasta que detecte un evento del habla y luego procesarlo. También tiene la calidad práctica de poder sugerir frases alternativas a la que cree que es la mejor suposición y grabar el archivo .wav para su uso posterior. Código de muestra:

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)

Parece que no puedo hacer que DNS haga esto. Lo más cercano que puedo hacer hickey es:

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

¡Incluso tiene el horrible efecto secundario de hacer que el usuario diga "nueva línea" después de cada oración! ¡No es la solución preferida en absoluto! ¿Hay alguna forma de hacer que DNS haga lo que hace Microsoft Speech?

FYI: Sé que la solución lógica sería simplemente cambiar al discurso de Microsoft, pero supongamos, solo para sonrisas y risas, que esa no es una opción.

Actualización: ¿alguien ha comprado el SDK? ¿Lo encontraste útil?

¿Fue útil?

Solución

Solución: Descargar natlink - http://qh.antenna.nl/unimacro/installation/installation.htmlNo es tan flexible de usar como SAPI, pero cubre los conceptos básicos y obtuve casi todo lo que necesitaba de él. Además, se dirige, TI y Python deben descargarse para todos los usuarios de su máquina o no funcionará correctamente y funciona para cada versión de Python pero 2.4.

La documentación para todos los comandos compatibles se encuentra en c: natlink natlink Miscscripts natlink.txt después de descargarlo. Está en todas las actualizaciones en la parte superior del archivo.

Código de ejemplo:

#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()

El código está severamente abreviado de mi versión de producción, pero espero que tengas la idea. El único problema ahora es que todavía tengo que volver a la mini ventana natlink.waitForSpeech () crea hacer clic en 'cerrar' antes de poder salir del programa de manera segura. Una forma de indicar que la ventana se cierre desde Python sin usar el parámetro de tiempo de espera sería fantástico.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top