나는 인식을위한 프로젝트를 가지고 있습니다. 그것은 작동하지만 다른 클래스에서 메서드를이 프로젝트를 사용하는 방법 클래스와 호출하는 경우 I 라인에 예외에 문제가 :Kinect의 음성 인식
sre = new SpeechRecognitionEngine(ri.Id);
오류 존재 :
필요한 없음 인식기 ID가 발견되었습니다.
코드 :
KinectAudioSource source = kinectSensor.AudioSource;
source.EchoCancellationMode = EchoCancellationMode.None; // No AEC for this sample
source.AutomaticGainControlEnabled = false; // Important to turn this off for speech recognition
// source.SystemMode = SystemMode.OptibeamArrayOnly;
speechRecognizer = CreateSpeechRecognizer();
using (Stream s = source.Start())
{
speechRecognizer.SetInputToAudioStream(s, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null));
Console.WriteLine("Recognizing speech. Say: 'purple', 'green' or 'blue'. Press ENTER to stop");
speechRecognizer.RecognizeAsync(RecognizeMode.Multiple);
Console.ReadLine();
Console.WriteLine("Stopping recognizer ...");
speechRecognizer.RecognizeAsyncStop();
}
private static SpeechRecognitionEngine CreateSpeechRecognizer()
{
RecognizerInfo ri = GetKinectRecognizer();
SpeechRecognitionEngine sre;
//if (ri == null) return 0;
sre = new SpeechRecognitionEngine(ri.Id);
var colors = new Choices();
colors.Add("red");
colors.Add("green");
colors.Add("blue");
var gb = new GrammarBuilder { Culture = ri.Culture };
gb.Append(colors);
// Create the actual Grammar instance, and then load it into the speech recognizer.
var g = new Grammar(gb);
sre.LoadGrammar(g);
sre.SpeechRecognized += SreSpeechRecognized;
sre.SpeechHypothesized += SreSpeechHypothesized;
sre.SpeechRecognitionRejected += SreSpeechRecognitionRejected;
return sre;
}
private static RecognizerInfo GetKinectRecognizer()
{
Func<RecognizerInfo, bool> matchingFunc = r =>
{
string value;
r.AdditionalInfo.TryGetValue("Kinect", out value);
return "True".Equals(value, StringComparison.InvariantCultureIgnoreCase) && "en-US".Equals(r.Culture.Name, StringComparison.InvariantCultureIgnoreCase);
};
return SpeechRecognitionEngine.InstalledRecognizers().Where(matchingFunc).FirstOrDefault();
}
ID를 디버그하십시오. 값이 올바른지 확인하십시오. – Fixus
Kinect를 지원하기 위해 필요한 32 비트 음성 엔진을 설치했는지 확인하십시오. 이 페이지에 나열된 전제 조건을 따르십시오. http://channel9.msdn.com/coding4fun/kinect/Introduction-to-Kinect-Speech-Recognition –
플랫폼 대상은 무엇입니까? – animaonline