2014-06-24 5 views
1

내 SAPI 코드는 다음과 같습니다 sapi를 사용하여 proc 음성 인식 만들기 C#? proc 디렉토리에서 인식 엔진을 설정하는

ISpeechRecoContext cpRecoCtx; 
// create the recognition context 
cpRecoCtx = new SpeechLib.SpInProcRecoContext(); 

((SpInProcRecoContext)cpRecoCtx).Recognition += 
    new _ISpeechRecoContextEvents_RecognitionEventHandler(RecoContext_Recognition); 
/****** END: set up recognition context *****/ 

그래서 어떻게 설정 내 오디오 입력은 C#에서 오디오 입력을 기본합니까? C++에서는 솔루션을 찾았지만 C#에서는 솔루션이 필요합니다.

+1

제공하신 코드가 불완전합니다. 특히 인식기 엔진과 입력 소스를 지정해야합니다. –

답변

1

기본 오디오 입력 개체는 SpMMAudioIn입니다.

ISpeechRecoContext cpRecoCtx; 
SpMMAudioIn audio = new SpMMAudioIn; 
// set the audio input 
cpRecoCtx.GetRecognizer.SetInput(audio); 
0

Eric, 코드가 작동하지 않습니다. 첫째, "GetRecognizer"메서드가 없습니다. 나는 그 선을 무엇이 효과가있을 것으로 바꿨다. 어떤 SAPI 버전을 언급하고 있습니까? "Microsoft Speech Object libary 5.4"를 사용하고 있습니다. 그런 다음 언급 한대로 장치에 오디오 입력을 설정하는 방법을 보여주지 않습니다. 다음 코드는 작동해야하지만 VB6에서 항상 작동했던 장치 ID를 설정할 수는 없습니다. 어떤 .DeviceID에 설정하려고하면 예외를 발생 :

확실하게하는 방법이있을 가지고
SpeechLib.ISpeechRecoContext cpRecoCtx; 
cpRecoCtx = new SpeechLib.SpInProcRecoContext(); 
SpeechLib.SpMMAudioIn audio = new SpeechLib.SpMMAudioIn(); 
// set the audio input 
// cpRecoCtx.GetRecognizer.SetInput(audio); <--- no such method 
audio.DeviceId = 1; 
cpRecoCtx.Recognizer.AudioInputStream = audio; 

유효한 MMSYS (WaveInOpen) 입력 스트림의 입력을 전송하는.