Есть ли способ включить 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 делать то, что делает Microsoft Speech?
К вашему сведению: я знаю, что логичным решением было бы просто переключиться на Microsoft Speech, но давайте предположим, просто ради ухмылки, что это не вариант.
ОБНОВЛЕНИЕ - Кто-нибудь купил SDK? Вы нашли это полезным?