рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛

30 рдирд╡рдВрдмрд░ - 1 рджрд┐рд╕рдВрдмрд░ рдХреЛ рдирд┐рдЬрд╝рдиреА рдиреЛрд╡рдЧреЛрд░реЛрдб рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди. рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреЛ Intel OpenVINO рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрд╛рдж рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдпреЛрдЬрдХреЛрдВ рдиреЗ рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд┐рд╖рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреА, рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рд░реНрдп рдЪреБрдирддреЗ рд╕рдордп рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рдЯреАрдореЛрдВ рдХреЗ рдкрд╛рд╕ рд╣реА рд░рд╣рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрди рдореЙрдбрд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред

рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдЙрддреНрдкрд╛рдж рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреИрд╕реЗ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдЕрдВрддрддрдГ рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ред

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрдВрдЯреЗрд▓ рдиреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХреИрдорд░реЗ, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкреАрдЖрдИ, рдиреНрдпреВрд░рд▓ рдХрдВрдкреНрдпреВрдЯ рд╕реНрдЯрд┐рдХ 2 рдкреНрд░рджрд╛рди рдХрд┐рдПред

рдХрд╛рд░реНрдп рдЪрдпрди

рдлреНрд░реА-рдлреЙрд░реНрдо рд╣реИрдХрдереЙрди рдХреА рддреИрдпрд╛рд░реА рдХреЗ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЪреБрдиреМрддреА рдЪреБрдирдирд╛ рд╣реИред рд╣рдордиреЗ рддреБрд░рдВрдд рдХреБрдЫ рдРрд╕рд╛ рд▓рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдЕрднреА рддрдХ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рд╣реИред

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрджрд░реНрд╢, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬрд╝рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬрд┐рд╕реЗ OpenVINO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдбреЛрдореЗрди рдореЗрдВ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдореЙрдбрд▓ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдо рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ - рд╡рд╛рдХреН рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдУрд░ред рдЖрдЗрдП рднрд╛рд╖рдг рд╕реЗ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ OpenVINO рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдореЙрдбрд▓ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреА рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рдЪреЗрд╣рд░реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди:

  • рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рдВрдпреБрдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдзреНрд╡рдирд┐ рдФрд░ рдЫрд╡рд┐ рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
  • рдХреИрдорд░реЗ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рджреЗрдЦрдиреЗ рдХрд╛ рдХреЛрдг рд╕рдВрдХреАрд░реНрдг рд╣реЛрддрд╛ рд╣реИ; рдПрдХ рдмрдбрд╝реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреИрдорд░реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ; рдзреНрд╡рдирд┐ рдкрд░ рдРрд╕реА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

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

рд╣рдо рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:

  • рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЫреЛрдЯрд╛ рдЖрдХрд╛рд░
  • рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕рдВрдЪрд╛рд▓рди
  • рдХрдо рдХреАрдордд
  • рдЖрд╕рд╛рди рдорд╛рдкрдиреАрдпрддрд╛

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 3 рд╕реА рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЗрдВрдЯреЗрд▓ рдПрдирд╕реАрдПрд╕ 2.

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

рдмрд╕ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ: рдЖрдкрдХреЛ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд▓реЗрдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдирд┐рдпрдорд┐рдд USB рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди RPI рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рднреА рд╕рдорд╛рдзрд╛рди рд╕рдЪрдореБрдЪ "рдкрд╛рд╕ рдореЗрдВ рд╣реА рд╣реИред" рдЖрд╡рд╛рдЬ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд┐рдЯ рд╕реЗ рд╡реЙрдпрд╕ рдмреЛрдирдЯ рдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ Google рдПрдЖрдИрд╡рд╛рдИ рд╡реЙрдпрд╕ рдХрд┐рдЯ, рдЬрд┐рд╕ рдкрд░ рдПрдХ рд╡рд╛рдпрд░реНрдб рд╕реНрдЯреАрд░рд┐рдпреЛ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рд╣реИред

рд░рд╛рд╕реНрдкрдмрд┐рдпрди рдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ AIY рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдЗрд╕реЗ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдпрд╣ 5 рд╕реЗрдХрдВрдб рд▓рдВрдмрд╛ рдСрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдЧрд╛):

arecord -d 5 -r 16000 test.wav

рдореБрдЭреЗ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдмрд╣реБрдд рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИ рдФрд░ рд╢реЛрд░ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрд▓реНрд╕рд╛рдорд┐рдХреНрд╕рд░ рдкрд░ рдЬрд╛рдПрдВ, рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдЪреБрдиреЗрдВ рдФрд░ рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдХреЛ 50-60% рддрдХ рдХрдо рдХрд░реЗрдВред

рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛
рд╣рдо рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдмреЙрдбреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдлрд┐рдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдврдХреНрдХрди рдХреЗ рд╕рд╛рде рднреА рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдПрдХ рд╕рдВрдХреЗрддрдХ рдмрдЯрди рдЬреЛрдбрд╝рдирд╛

AIY рд╡реЙрдпрд╕ рдХрд┐рдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ RGB рдмрдЯрди рд╣реИ, рдЬрд┐рд╕рдХреА рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо "Google AIY Led" рдЦреЛрдЬрддреЗ рд╣реИрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд╛рддреЗ рд╣реИрдВ: https://aiyprojects.readthedocs.io/en/latest/aiy.leds.html
рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рднрд╛рд╡рдирд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 7 рд╡рд░реНрдЧ рд╣реИрдВ, рдФрд░ рдмрдЯрди рдореЗрдВ 8 рд░рдВрдЧ рд╣реИрдВ, рдмрд╕ рдЗрддрдирд╛ рд╣реА!

рд╣рдо рдмрдЯрди рдХреЛ GPIO рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реЙрдпрд╕ рдмреЛрдирдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА AIY рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ)

from aiy.leds import Leds, Color
from aiy.leds import RgbLeds

рдЖрдЗрдП рдПрдХ рдирд┐рдпрдо рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╡рдирд╛ рдХрд╛ RGB рдЯреБрдкрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рд░рдВрдЧ рдФрд░ aiy.leds.Leds рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рд░рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗ:

led_dict = {'neutral': (255, 255, 255), 'happy': (0, 255, 0), 'sad': (0, 255, 255), 'angry': (255, 0, 0), 'fearful': (0, 0, 0), 'disgusted':  (255, 0, 255), 'surprised':  (255, 255, 0)} 
leds = Leds()

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдХрд┐рд╕реА рднрд╛рд╡рдирд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдирдИ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рдмрд╛рдж, рд╣рдо рдмрдЯрди рдХреЗ рд░рдВрдЧ рдХреЛ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ (рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛) рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред

leds.update(Leds.rgb_on(led_dict.get(classes[prediction])))

рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛
рдмрдЯрди, рдЬрд▓рд╛рдУ!

рдЖрд╡рд╛рдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

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

рдЪреВрдВрдХрд┐ webrtcvad рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдПрдХ рд╕реАрдорд╛ рд╣реИ - рдпрд╣ 10/20/30ms рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХрд╛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдмрд╛рдж рдореЗрдВ рд╕реАрдЦреЗрдВрдЧреЗ) 48kHz рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдо рдХрд░реЗрдВрдЧреЗ 48000├Ч20ms/1000├Ч1(рдореЛрдиреЛ)=960 рдмрд╛рдЗрдЯреНрд╕ рдЖрдХрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреИрдкреНрдЪрд░ рдХрд░реЗрдВред Webrtcvad рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЗ рд▓рд┐рдП рд╕рд╣реА/рдЧрд▓рдд рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬреЛ рдЦрдВрдб рдореЗрдВ рд╡реЛрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

  • рд╣рдо рдЙрди рдЦрдВрдбреЛрдВ рдХреЛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ рдЬрд╣рд╛рдВ рд╡реЛрдЯ рд╣реИ; рдпрджрд┐ рдХреЛрдИ рд╡реЛрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЦрд╛рд▓реА рдЦрдВрдбреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛ рджреЗрдВрдЧреЗред
  • рдпрджрд┐ рдЦрд╛рд▓реА рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ >=30 (600 рдПрдордПрд╕) рд╣реИ, рддреЛ рд╣рдо рд╕рдВрдЪрд┐рдд рдЯреБрдХрдбрд╝реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ; рдпрджрд┐ рдпрд╣ >250 рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ; рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд▓рдВрдмрд╛рдИ рд╕реНрдкреАрдХрд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдореЙрдбрд▓ рдореЗрдВ рдлреАрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреЙрд░реНрдб рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
  • рдпрджрд┐ рдЦрд╛рд▓реА рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рдЕрднреА рднреА <30 рд╣реИ, рдФрд░ рд╕рдВрдЪрд┐рдд рдЯреБрдХрдбрд╝реЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдЖрдХрд╛рд░ 300 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╣рдо рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рд▓рд┐рдП рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред (рдХреНрдпреЛрдВрдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рднрд╛рд╡рдирд╛рдПрдБ рдмрджрд▓рддреА рд░рд╣рддреА рд╣реИрдВ)

 def to_queue(frames):
    d = np.frombuffer(b''.join(frames), dtype=np.int16)
    return d

framesQueue = queue.Queue()
def framesThreadBody():
    CHUNK = 960
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 48000

    p = pyaudio.PyAudio()
    vad = webrtcvad.Vad()
    vad.set_mode(2)
    stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)
    false_counter = 0
    audio_frame = []
    while process:
        data = stream.read(CHUNK)
        if not vad.is_speech(data, RATE):
            false_counter += 1
            if false_counter >= 30:
                if len(audio_frame) > 250:              
                    framesQueue.put(to_queue(audio_frame,timestamp_start))
                    audio_frame = []
                    false_counter = 0

        if vad.is_speech(data, RATE):
            false_counter = 0
            audio_frame.append(data)
            if len(audio_frame) > 300:                
                    framesQueue.put(to_queue(audio_frame,timestamp_start))
                    audio_frame = []

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

рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  • рд╡рд╛рдгреА рд╕реЗ рднрд╛рд╡ - https://github.com/alexmuhr/Voice_Emotion
    рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдСрдбрд┐рдпреЛ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдЕрдВрд╢реЛрдВ рдореЗрдВ рдХрд╛рдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрд╢ рдХреЗ рд▓рд┐рдП рд╣рдо рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдПрдордПрдлрд╕реАрд╕реА рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реАрдПрдирдПрди рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ
  • рдЖрд╡рд╛рдЬрд╝ рдкрд╣рдЪрд╛рди - https://github.com/linhdvu14/vggvox-speaker-identification
    рдпрд╣рд╛рдВ, рдПрдордПрдлрд╕реАрд╕реА рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд╕реНрдкреЗрдХреНрдЯреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдПрдлрдПрдлрдЯреА рдХреЗ рдмрд╛рдж рд╣рдо рд╕реАрдПрдирдПрди рдХреЛ рд╕рд┐рдЧреНрдирд▓ рдлреАрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдореЗрдВ рдЖрд╡рд╛рдЬ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдорд┐рд▓рддрд╛ рд╣реИред

рдЖрдЧреЗ рд╣рдо рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ рдореЙрдбрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред OpenVINO рдореЗрдВ рдХрдИ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдореЙрдбрд▓ рдЪрд┐рдбрд╝рд┐рдпрд╛рдШрд░ рдЦреЛрд▓реЗрдВ, рдЬрд┐рд╕рдХреЗ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рдореЙрдбрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░, рдЬрд┐рд╕рдХреА рдмрджреМрд▓рдд рдЖрдк рдПрдХ рдореЙрдбрд▓ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд░рд╛рд░реВрдкреЛрдВ (рдЯреЗрдиреНрд╕рд░рдлрд╝реНрд▓реЛ, рдУрдПрдирдПрдирдПрдХреНрд╕ рдЖрджрд┐) рд╕реЗ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЖрдЧреЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ
  • рдЗрдВрдлрд╝рд░реЗрдВрд╕ рдЗрдВрдЬрди рдЖрдкрдХреЛ рдЗрдВрдЯреЗрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░, рдЕрд╕рдВрдЦреНрдп рдЪрд┐рдкреНрд╕ рдФрд░ рдиреНрдпреВрд░рд▓ рдХрдВрдкреНрдпреВрдЯ рд╕реНрдЯрд┐рдХ рдПрдХреНрд╕реЗрд▓реЗрд░реЗрдЯрд░ рдкрд░ рдЖрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдореЙрдбрд▓ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  • OpenCV рдХрд╛ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рд╕рдВрд╕реНрдХрд░рдг (рдЗрдВрдлрд╝рд░реЗрдВрд╕ рдЗрдВрдЬрди рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде)
    рдЖрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбрд▓ рдХреЛ рджреЛ рдлрд╛рдЗрд▓реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: .xml рдФрд░ .binред
    рдореЙрдбрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдХреЛ рдЖрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

    python /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model speaker.hdf5.pb --data_type=FP16 --input_shape [1,512,1000,1]

    --data_type рдЖрдкрдХреЛ рдЙрд╕ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореЙрдбрд▓ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред FP32, FP16, INT8 рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдЗрд╖реНрдЯрддрдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЪреБрдирдиреЗ рд╕реЗ рдЕрдЪреНрдЫреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
    --input_shape рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЖрдпрд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ C++ API рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЗрддрдиреА рджреВрд░ рддрдХ рдЦреЛрдЬ рдирд╣реАрдВ рдХреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рддрдп рдХрд┐рдпрд╛ рд╣реИред
    рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдЗрдП рдбреАрдПрдирдПрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореЙрдбрд▓ рдХреЛ рдУрдкрдирд╕реАрд╡реА рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

    import cv2 as cv
    emotionsNet = cv.dnn.readNet('emotions_model.bin',
                              'emotions_model.xml')
    emotionsNet.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)

    рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдЖрдкрдХреЛ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдиреНрдпреВрд░рд▓ рдХрдВрдкреНрдпреВрдЯ рд╕реНрдЯрд┐рдХ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдмреБрдирд┐рдпрд╛рджреА рдЧрдгрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдЯрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

    рдЕрдЧрд▓рд╛, рддрд░реНрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╣рдо рдЕрдкрдиреЗ рдСрдбрд┐рдпреЛ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреА рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ 0.4 s рд╣реИ), рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдВрдбреЛ рдХреЛ MFCC рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдлрд┐рд░ рдЧреНрд░рд┐рдб рдореЗрдВ рдлреАрдб рдХрд░рддреЗ рд╣реИрдВ:

    emotionsNet.setInput(MFCC_from_window)
    result = emotionsNet.forward()

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

    рдЕрд░реНрдерд╛рддреН, рд╣рдо рдзреНрд╡рдирд┐ рдЕрдВрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрд╣ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдХреАрдмреЛрд░реНрдб рджреНрд╡рд╛рд░рд╛ рдмрд╛рдзрд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╣реА рдпрд╣ рдзреНрд╡рдирд┐ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдЧрд╛)ред

    рдЖрдУ рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

    python3 voice_db/record_voice.py test.wav

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

    for file in glob.glob("voice_db/*.wav"):
            spec = get_fft_spectrum(file)
            np.save(file[:-4] + '.npy', spec)

    рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг create_base.py
    рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЬрдм рд╣рдо рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реА рдЗрди рд╕реНрдкреЗрдХреНрдЯреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА:

    for file in glob.glob("voice_db/*.npy"):
        spec = np.load(file)
        spec = spec.astype('float32')
        spec_reshaped = spec.reshape(1, 1, spec.shape[0], spec.shape[1])
        srNet.setInput(spec_reshaped)
        pred = srNet.forward()
        emb = np.squeeze(pred)

    рдзреНрд╡рдирд┐ рдЦрдВрдб рд╕реЗ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рднреА рдЖрд╡рд╛рдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧ рд╕реЗ рдХреЛрд╕рд╛рдЗрди рджреВрд░реА рд▓реЗрдХрд░ рдпрд╣ рдХрд┐рд╕рдХрд╛ рд╣реИ (рдЬрд┐рддрдиреА рдЫреЛрдЯреА, рдЙрддрдиреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛) - рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рд╕реЗ 0.3):

            dist_list = cdist(emb, enroll_embs, metric="cosine")
            distances = pd.DataFrame(dist_list, columns = df.speaker)

    рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЕрдиреБрдорд╛рди рдХреА рдЧрддрд┐ рддреЗрдЬ рдереА рдФрд░ рдЗрд╕рд╕реЗ 1-2 рдФрд░ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ (7 рд╕реЗрдХрдВрдб рд▓рдВрдмреЗ рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорд╛рди рдореЗрдВ 2.5 рдХрд╛ рд╕рдордп рд▓рдЧрд╛)ред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирдП рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ рдФрд░ рд╣рдордиреЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдЦрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ред

    рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ

    рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рд╣рдо рдШрд░ рд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рде рдПрдХ рд░рд╛рдЙрдЯрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдирд╛ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рд▓реИрдкрдЯреЙрдк рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

    рдмреИрдХрдПрдВрдб рдлреНрд░рдВрдЯ рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЗ рдмреАрдЪ рдПрдХ рдПрдВрдб-рдЯреВ-рдПрдВрдб рд╕рдВрджреЗрд╢ рдЪреИрдирд▓ рд╣реИ, рдЬреЛ рд╡реЗрдмрд╕реЙрдХреЗрдЯ рддрдХрдиреАрдХ (http рдУрд╡рд░ рдЯреАрд╕реАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

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

    рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛
    рд╣рдо рдкреАрдЫреЗ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

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

    рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛
    рдЕрджреНрдпрддрди рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рд╣реЛрдо рдкреЗрдЬ

    рдирд┐рд╖реНрдХрд░реНрд╖

    рд╕рдм рдХреБрдЫ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╕ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рдбреЗрдореЛ рдореЗрдВ рдореБрдЦреНрдп рдЖрд╢рд╛ рдереА, рдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдкреНрд░реЗрдЬреЗрдВрдЯреЗрд╢рди рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреМрди рд╕реЗ рдореЙрдбрд▓ рдЕрдкрдирд╛рдП, рдЙрдиреНрд╣реЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЕрдЧрд▓рд╛ рдбреЗрдореЛ рднрд╛рдЧ рдерд╛ - рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдХрдорд░реЗ рдореЗрдВ рдШреВрдореЗ рдФрд░ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдорд╕реЗ рднреА рдкреНрд░рд╢реНрди рдкреВрдЫреЗ, рд╕рднреА рдиреЗ рдЕрдкрдиреЗ-рдЕрдкрдиреЗ рдЙрддреНрддрд░ рджрд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рд╡реЗрдм рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд┐рдпрд╛ред

    рдореБрдЭреЗ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреБрд▓ рд▓рд╛рдЧрдд $150 рдереА:

    • рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ 3 ~ $35
    • Google AIY рд╡реЙрдпрд╕ рдмреЛрдирдЯ (рдЖрдк рд░рд┐рд╕реНрдкреАрдХрд░ рд╢реБрд▓реНрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ) ~15$
    • рдЗрдВрдЯреЗрд▓ рдПрдирд╕реАрдПрд╕ 2 ~ 100$

    рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдП:

    • рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкрд╛рда рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ
    • рдХреБрдЫ рдФрд░ рдореЙрдбрд▓ рдЬреЛрдбрд╝реЗрдВ: рдЖрдк рдЖрд╡рд╛рдЬ рд╕реЗ рд▓рд┐рдВрдЧ рдФрд░ рдЙрдореНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
    • рдПрдХ рд╕рд╛рде рдмрдЬрдиреЗ рд╡рд╛рд▓реА рдЖрд╡рд╛рдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ (рдбрд╛рдпрд░рд╛рдЗрдЬреЗрд╢рди)

    рднрдВрдбрд╛рд░: https://github.com/vladimirwest/OpenEMO

    рдУрдкрдирд╡рд┐рдиреЛ рд╣реИрдХрдереЙрди: рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдЖрд╡рд╛рдЬ рдФрд░ рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛
    рд╣рдо рдердХреЗ рд╣реБрдП рд╣реИрдВ рд▓реЗрдХрд┐рди рдЦреБрд╢ рд╣реИрдВ

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

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ