рдХрд╛рд░реНрдпрдХреНрд░рдо, aport!


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП Microsoft Kinect рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЫреБрдЖ рдерд╛ рдФрд░ рдХреНрдпреВрдмреНрд╕ рдХреЗ рдЦреЗрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдВрд╕рд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдПрдХ рдорд╛рдирд╡ рдЖрдХреГрддрд┐ (рдХрдВрдХрд╛рд▓ рдЯреНрд░реИрдХрд┐рдВрдЧ) рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдХреЗрд╡рд▓ рд╕реЗрдВрд╕рд░ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдЬ рдореИрдВ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

Microsoft рднрд╛рд╖рдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯреИрдВрдХ) рд╡рд┐рдорд╛рди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛ред рдореИрдВрдиреЗ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡реЙрдпрд╕ рдХрдорд╛рдВрдб рдирд╣реАрдВ рдЬреЛрдбрд╝реЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рд▓рд╛рдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ред рдФрд░, рджреВрд╕рд░реА рдмрд╛рдд, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ (рдРрд╕рд╛ рдХреЛрдб рд╕реАрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ)ред

рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ:

рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рднрдпрд╛рдирдХ рд░рд╣рд╕реНрдп рдмрддрд╛рддрд╛ рд╣реВрдБ, рдПрдХ рд╕реЗрдВрд╕рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рдирд╣реАрдВ рд╣реИред рд╕реНрдкреАрдЪ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдХрд╛рдЗрдиреЗрдХреНрдЯ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде Kinect SDK рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдПрдВрдЧреЗред рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╕реЗрдВрд╕рд░ рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╣реИред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ:
  1. рдЖрд╡рд╢реНрдпрдХ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реЗ рдПрдХ рдорд╛рдиреНрдпрддрд╛ рдЗрдВрдЬрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ;
  2. рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ;
  3. рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдСрдбрд┐рдпреЛ рд╕реНрд░реЛрдд рд╕реЗрдЯ рдХрд░реЗрдВред рдпрд╣ Kinect, рдорд╛рдЗрдХреНрд░реЛрдлреЛрди, рдСрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ;
  4. рдорд╛рдиреНрдпрддрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рджреЗрдВред

рдЕрдм Visual Studio рдореЗрдВ рд╣рдо рдПрдХ рдирдпрд╛ WPF Application рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВрдЧреЗред рдореИрдВ C # рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред

рдЪрд▓реЛ рдПрдХ рдЬреБрдбрд╝рд╛ рд╕реЗрдВрд╕рд░ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред KinectSensor рд╡рд░реНрдЧ рдЗрд╕реЗ KinectSensors рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:

KinectSensor kinect = KinectSensor.KinectSensors .Where(s => s.Status == KinectStatus.Connected) .FirstOrDefault(); 

рд╕реНрдкреАрдЪ рд░рд┐рдХрдЧреНрдирд┐рд╢рди рд╣реИрдВрдбрд▓рд░ - SpeechRecognitionEngine рдХреНрд▓рд╛рд╕, рдЗрд╕рдХрд╛ рд╕реНрдЯреИрдЯрд┐рдХ рддрд░реАрдХрд╛ InstalledRecognizers () рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

 RecognizerInfo info = SpeechRecognitionEngine.InstalledRecognizers() .Where(ri => string.Equals(ri.Culture.Name, "en-US", StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefault(); 

рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рднрд╛рд╖рдг рдорд╛рдиреНрдпрддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ ( RecognizerInfo ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИред InstalledRecognizers рд╡рд┐рдзрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд▓реМрдЯрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд▓рд╛ рдХрджрдо рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рд╣реИред рд╣рдо рдмрд╕ рд╣реИрдВрдбрд▓рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рджреЗрддреЗ рд╣реИрдВ:

 var sre = new SpeechRecognitionEngine(info.Id); 

рдЕрдм рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рд╡рд┐рдорд╛рди рдкрд░ рд╡рд╕реНрддреБ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреМрди рд╕реА рдЯреАрдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 4 рдЯреАрдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ: UP (рдКрдкрд░), DOWN (рдбрд╛рдЙрди), LEFT (рдмрд╛рдПрдВ), RIGHT (рджрд╛рдПрдВ)ред рдФрд░ рдПрдХ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рдВрдЪрд╡реАрдВ EXIT рдХрдорд╛рдВрдб (рдЖрдЙрдЯрдкреБрдЯ) рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЙрдкрд▓рдмреНрдз 54 рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХрдорд╛рдВрдб рдХрд╛ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

 var commands = new Choices(); commands.Add("up"); commands.Add("down"); commands.Add("left"); commands.Add("right"); commands.Add("exit"); var gb = new GrammarBuilder(commands) { Culture = info.Culture }; sre.LoadGrammar(new Grammar(gb)); 

рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╕рдВрдж рдХреА рдПрдХ рд╡рд╕реНрддреБ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджреЛрдВ (рдЖрджреЗрд╢реЛрдВ) рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддреА рд╣реИред рдЕрдЧрд▓рд╛ рдХрджрдо рдХрдорд╛рдВрдб рдХрд▓реНрдЪрд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдЬреЛ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рд╣реИрдВрдбрд▓рд░ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рд╢рдмреНрдж рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХреЛрдИ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рдпрд╛рд╕ рддреНрд░реБрдЯрд┐ рдХреА рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╣реИ, рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВрдЧреЗред

рдЕрдм рдЖрдк рднрд╛рд╖рдг рдкрд╣рдЪрд╛рди рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдкреАрдЪ рд░рд┐рдХреЙрдЧреНрдирд╛рдЗрдЬреНрдб рдИрд╡реЗрдВрдЯ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рд╕реНрдкреЛрдХрди рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдореИрдЪ рдвреВрдВрдврддрд╛ рд╣реИред SpeechRecognizedEventArgs рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╢рдмреНрдж , рд╢рдмреНрдж рдХреА рд╕рд╣реА рдкрд╣рдЪрд╛рди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ , рдФрд░ рдмрд╣реБрдд рдХреБрдЫ ред рдЕрдиреНрдп рджреЛ рдШрдЯрдирд╛рдПрдВ, SpeechHypothesized рдФрд░ SpeechRecognitionRejected, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдШрдЯрдирд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдорд╛рдиреНрдпрддрд╛ рд╣реИрдВрдбрд▓рд░ рдПрдХ рдорд╛рдиреНрдпрддрд╛ рдзрд╛рд░рдгрд╛ рдмрдирд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рддрдм рд╣реИ рдЬрдм рдорд╛рдиреНрдпрддрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗрд╡рд▓ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЕрдВрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрдж рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

 private void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) { //     70% if (e.Result.Confidence >= 0.7) { Action handler = null; switch (e.Result.Text.ToUpperInvariant()) { case "UP": case "DOWN": case "LEFT": case "RIGHT": handler = () => { /* some actions */ }; break; case "EXIT": handler = () => { this.Close(); }; break; default: break; } if (handler != null) { //   ,      UI     Dispatcher.BeginInvoke(handler, DispatcherPriority.Normal); } } } 

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ рдСрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдорд╛рдиреНрдпрддрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдБ рдореИрдВ Kinect рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рдж рд▓рдЧрднрдЧ 4 рд╕реЗрдХрдВрдб рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 4 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдХреЗ рд╕рд╛рде рдорд╛рдиреНрдпрддрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ рдмрдирд╛рдирд╛ред

рдпрд╛рдж рд░рдЦреЗрдВ, рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХреЛрдб Kinect рдФрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдСрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

 if (kinect != null) { var audioSource = kinect.AudioSource; audioSource.BeamAngleMode = BeamAngleMode.Adaptive; var kinectStream = audioSource.Start(); //    Kinect sre.SetInputToAudioStream(kinectStream, new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); } else { //         sre.SetInputToDefaultAudioDevice(); } //  .          . sre.RecognizeAsync(RecognizeMode.Multiple); 

UI рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╣рдо рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ (рдпрд╣ рдПрдХ рддрд╕реНрд╡реАрд░ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ), рдореИрдВрдиреЗ рдПрдХ рдЯреИрдВрдХ рдЦреАрдВрдЪрд╛ред

рдЯреИрдВрдХ

рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝реЗрдВред рдмреЗрд╢рдХ, рдЯреИрдВрдХ рдХреЛ рдмрдЧрд╝рд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдкрд░ рд╣рд╛рд╕реНрдпрдкреВрд░реНрдг рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдореЛрдбрд╝ рдХреЗ рд▓рд┐рдП рдПрдиреАрдореЗрд╢рди рднреА рдЬреЛрдбрд╝рд╛ред LEFT рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдиреАрдореЗрд╢рди (рдмрд╛рдПрдВ):

 <Storyboard x:Key="LEFT"> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="PART_Tank"> <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="-90"/> </DoubleAnimationUsingKeyFrames> <DoubleAnimation Storyboard.TargetProperty="(Canvas.Left)" Storyboard.TargetName="PART_Tank" Duration="0:0:1" By="-30"/> </Storyboard> 


рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛:


рдЖрдкрдХреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓реЗрдВрдЧреЗред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рд╕рдВрдХрд▓рд┐рдд рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ Microsoft рднрд╛рд╖рдг рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд░рдирдЯрд╛рдЗрдо рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдорд╛рдиреНрдпрддрд╛ рдЗрдВрдЬрди MSSpeech_SR_en-US_TELE.msi рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реНрдкреАрдЪ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрддреНрдкрд╛рдж рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЫреБрдЖ рд╣реИред рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ рдХрд┐ рдХрд┐рдиреЗрдХреНрдЯ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдЗрд╕ рдордВрдЪ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП VIAcode рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

Kinect рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдБ
Kinect рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдирдореВрдирд╛ рд╕реНрд░реЛрдд

Source: https://habr.com/ru/post/In142677/


All Articles