I think your GetKinectRecognizer () method is incorrect.
Does TryGetValue () not return a boolean value if it is found, and a value found as an out parameter? You are not doing anything with the return boolean from TryGetvalue ().
Do you expect the AdditionalInfo dictionary to have a key equal to "Kinect" and a string of "True" or "False"? This is what you seem to be looking for.
This code is based on an example you can point to. I really don't follow what you're testing in matchFunc. You ignore the return value from TryGetvalue, you look for the AdditionalInfo key with the name "Kinect" with the string value "True" and the resolver with the culture "en-US".
Why don't you just upload the contents of SpeechRecognitionEngine.InstalledRecognizers () and make sure that it contains what you think it contains. This is an old school, but useful:
foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers()) { Debug.WriteLine(String.Format("Id={0}, Name={1}, Description={2}, Culture={3}", ri.Id, ri.Name, ri.Description, ri.Culture)); foreach(string key in ri.AdditionalInfo.Keys) { Debug.WriteLine(string.Format("{0} = {1}", key, ri.AdditionalInfo[key])); } Debug.WriteLine("-"); }
I do not have the Kinect SDK, but on my Windows 7 computer it shows:
Id=MS-1033-80-DESK, Name=MS-1033-80-DESK, Description=Microsoft Speech Recognizer 8.0 for Windows (English - US), Culture=en-US VendorPreferred = CommandAndControl = Version = 8.0 Language = 409;9 Desktop = SupportedLocales = 409;1009;3409;9 AudioFormats = 16;18;20;22;45;53;{6F50E21C-E30E-4B50-95E9-21E8F23D15BD} SpeakingStyle = Discrete;Continuous WildcardInCFG = Anywhere;Trailing Dictation = Hypotheses = Alternates = CC;Dictation windowsV6compatible = Name = MS-1033-80-DESK DictationInCFG = Anywhere;Trailing UPSPhoneSet = WordSequences = Anywhere;Trailing Vendor = Microsoft - Id=MS-2057-80-DESK, Name=MS-2057-80-DESK, Description=Microsoft Speech Recognizer 8.0 for Windows (English - UK), Culture=en-GB = VendorPreferred = CommandAndControl = Version = 8.0 Language = 809 Desktop = SupportedLocales = 809;C09;1409;1809;1C09;2009;2409;2809;2C09;3009;4009;4409;4809;9 AudioFormats = 16;18;20;22;45;53;{6F50E21C-E30E-4B50-95E9-21E8F23D15BD} SpeakingStyle = Discrete;Continuous WildcardInCFG = Anywhere;Trailing Dictation = Hypotheses = Alternates = CC;Dictation windowsV6compatible = Name = MS-2057-80-DESK DictationInCFG = Anywhere;Trailing UPSPhoneSet = WordSequences = Anywhere;Trailing Vendor = Microsoft - -
Make sure that the values you are looking for in the AdditionalInfo dictionary do exist. Then create your matchFunc to check it out.