2010-06-01 4 views
9

드래곤 NaturallySpeaking을 이벤트 중심 프로그램으로 도입하는 방법이 있습니까? 내 보스는 DNS를 사용하여 사용자 음성 입력을 화면에 쓰지 않고 직접 XML에 저장하지 않고 기록하는 경우 정말 좋아할 것입니다. 나는 며칠 동안 연구를 해왔고 (정말 비싼) SDK 없이는 이런 일이 일어날 수있는 방법을 발견 할 수 없다.드래곤 NaturallySpeaking 프로그래머

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 

을 그것도 사용자가 모든 문장 후 "새로운 라인을"말을 만드는 끔찍한 부작용이있다! 선호하는 솔루션이 아닙니다! 어쨌든 Microsoft Speech가하는 일을 DNS가 수행 할 수 있습니까?

FYI : 논리적 솔루션은 단순히 Microsoft 음성으로 전환하는 것이지만 단지 웃음 소리와 킥킥 웃음만으로는 옵션이 아니라고 가정 해 봅시다.

업데이트 - 누구도 SDK를 구입 했습니까? 유용하다고 생각하니?

+3

@WarrenP :이 사람은 자신의 발달의 40 % -60 %를 사용합니다. 기본적으로는 유용하지 않지만 Natlink와 VI/Emacs를 사용하면 꽤 좋은 설정을 얻을 수 있습니다. http://www.youtube.com/watch?v=8SkdfdXWYaI –

+0

@WarrenP 시도해 보셨습니까? 나는 항상 그것을 사용하고 키보드를 사용하는 것보다 훨씬 빠릅니다 (비록 내가 꽤 높은 WPM을 가진 6이라는 의미이기 때문에 키보드를 사용합니다). 프로그래밍을 위해서는 개선이 필요하다는 데 동의하지만 여전히 유용합니다. [효율적으로 코드를 작성하기 위해 드래곤 NaturallySpeaking을 어떻게 사용할 수 있습니까?] (http://productivity.stackexchange.com/q/3605/2476) –

+0

120 WPM을 입력 할 수 있습니다. 나는 스피치 사용자에게 영어 텍스트가 40 WPM을 기록한 것을 본 적이 없다. 높은 wpm을 정의 하시겠습니까? –

답변

8

솔루션 : 다운로드 Natlink - http://qh.antenna.nl/unimacro/installation/installation.html SAPI처럼 사용하기에는 유연성이 뛰어나지 않지만 기본 사항을 다루기 때문에 필요한 모든 것을 거의 갖추고 있습니다. 또한, 여러분의 컴퓨터에있는 모든 사용자를 위해 파이썬을 다운로드해야합니다. 그렇지 않으면 파이썬은 모든 버전의 Python 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()로 돌아가서 프로그램을 안전하게 종료하기 전에 '닫기'를 클릭하여 생성해야한다는 것입니다. timeout 매개 변수를 사용하지 않고 파이썬에서 닫으라는 신호를 보내는 방법은 환상적입니다.