Kinect 2.0&Speech 11 中文语音控制相关代码
下载 Speech 11 中文语言包
Microsoft Speech Platform - Runtime Languages (Version 11)
查找中文语言的RecognizerInfo
- private static RecognizerInfo TryGetKinectRecognizer()
- {
- IEnumerable<RecognizerInfo> recognizers;
- // This is required to catch the case when an expected recognizer is not installed.
- // By default - the x86 Speech Runtime is always expected.
- try
- {
- recognizers = SpeechRecognitionEngine.InstalledRecognizers();
- }
- catch (COMException)
- {
- return null;
- }
- foreach (RecognizerInfo recognizer in recognizers)
- {
- string value;
- recognizer.AdditionalInfo.TryGetValue("Kinect", out value);
- if ("True".Equals(value, StringComparison.OrdinalIgnoreCase) && "en-US".Equals(recognizer.Culture.Name, StringComparison.OrdinalIgnoreCase))
- {
- //return recognizer;
- }
- if ("zh-CN".Equals(recognizer.Culture.Name, StringComparison.OrdinalIgnoreCase))
- {
- return recognizer;
- }
- }
- return null;
- }
构建中文指令
- RecognizerInfo ri = TryGetKinectRecognizer();
- this.speechEngine = new SpeechRecognitionEngine(ri.Id);
- var directions = new Choices();
- directions.Add(new SemanticResultValue("前", "FORWARD"));
- directions.Add(new SemanticResultValue("前进", "FORWARD"));
- directions.Add(new SemanticResultValue("前移", "FORWARD"));
- directions.Add(new SemanticResultValue("后", "BACKWARD"));
- directions.Add(new SemanticResultValue("后退", "BACKWARD"));
- directions.Add(new SemanticResultValue("后移", "BACKWARD"));
- directions.Add(new SemanticResultValue("左", "LEFT"));
- directions.Add(new SemanticResultValue("右", "RIGHT"));
- var gb = new GrammarBuilder { Culture = ri.Culture };
- gb.Append(directions);
- var g = new Grammar(gb);
- this.speechEngine.LoadGrammar(g);
官方Demo下载