OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi

30 ื ืื•ื•ืขืžื‘ืขืจ - 1 ื“ืขืฆืขืžื‘ืขืจ ืื™ืŸ ื ื™ื–ืฉื ื™ ื ืึธื•ื•ื’ืึธืจืึธื“ ืื™ื– ื’ืขื”ืืœื˜ืŸ OpenVINO ื›ืึทืงืึทื˜ื”ืึธืŸ. ืคึผืึทืจื˜ื™ืกื™ืคึผืึทื ืฅ ื–ืขื ืขืŸ ื’ืขื‘ืขื˜ืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืคื•ืŸ ืึท ืคึผืจืึธื“ื•ืงื˜ ืœื™ื™ื–ื•ื ื’ ื ื™ืฆืŸ ื“ื™ Intel OpenVINO ื˜ืึธืึธืœืงื™ื˜. ื“ื™ ืึธืจื’ืึทื ื™ื™ื–ืขืจื– ืคืืจื’ืขืœื™ื™ื’ื˜ ืึท ืจืฉื™ืžื” ืคื•ืŸ ื“ืขืจื ืขื ื˜ืขืจื  ื˜ืขืžืขืก ื•ื•ืึธืก ืงืขืŸ ื–ื™ื™ืŸ ื’ื™ื™ื“ื™ื“ ื“ื•ืจืš ื•ื•ืขืŸ ื˜ืฉื•ื–ื™ื ื’ ืึท ืึทืจื‘ืขื˜, ืึธื‘ืขืจ ื“ื™ ืœืขืฆื˜ ื‘ืึทืฉืœื•ืก ืื™ื– ืคืืจื‘ืœื™ื‘ืŸ ืžื™ื˜ ื“ื™ ื˜ื™ืžื–. ืื™ืŸ ื“ืขืจืฆื•, ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ืžืึธื“ืขืœืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ ืคึผืจืึธื“ื•ืงื˜ ืื™ื– ื™ื ืงืขืจืึทื“ื–ืฉื“.

OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืžื™ืจ ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ืžื™ืจ ื‘ืืฉืืคืŸ ืื•ื ื“ื–ืขืจ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืคื•ืŸ ื“ื™ ืคึผืจืึธื“ื•ืงื˜, ืžื™ื˜ ื•ื•ืึธืก ืžื™ืจ ื™ื•ื•ืขื ื˜ืฉืึทื•ื•ืึทืœื™ ื’ืขื ื•ืžืขืŸ ืขืจืฉื˜ืขืจ ืึธืจื˜.

ืžืขืจ ื•ื•ื™ 10 ื˜ื™ืžื– ืื ื˜ื™ื™ืœ ืื™ืŸ ื“ื™ ื›ืึทืงืึทื˜ื”ืึธืŸ. ืก'ืื™ื– ืฉื™ื™ืŸ ืื– ื˜ื™ื™ืœ ืคื•ืŸ ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขืงื•ืžืขืŸ ืคื•ืŸ ืื ื“ืขืจืข ื’ืขื’ื ื˜ืŸ. ื“ืขืจ ืึธืจื˜ ืคึฟืึทืจ ื“ื™ ื”ืึทืงืึทื˜ืึธืŸ ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจ "ืงืจืขืžืœื™ื ืกืงื™ ืื•ื™ืฃ ืคึผืึธื˜ืฉืึทื™ืŸ" ืงืึธืžืคึผืœืขืงืก, ื•ื•ื• ืืœื˜ืข ืคืึธื•ื˜ืึทื’ืจืึทืคืก ืคื•ืŸ ื ื™ื–ืฉื ื™ ื ืึธื•ื•ื’ืึธืจืึธื“ ื–ืขื ืขืŸ ื’ืขื”ืื ื’ืขืŸ ืื™ื ืขื•ื•ื™ื™ื ื™ืง, ืื™ืŸ ืึท ืึทื ื˜ืขืจืึทื–ืฉ! (ืื™ืš ื“ืขืจืžืึธื ืขืŸ ืื™ืจ ืึทื– ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ื“ื™ ื”ื•ื™ืคื˜ ืึธืคื™ืก ืคื•ืŸ ื™ื ื˜ืขืœ ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ื ื™ื–ืฉื ื™ ื ืึธื•ื•ื’ืึธืจืึธื“). ืคึผืึทืจื˜ื™ืกื™ืคึผืึทื ืฅ ื–ืขื ืขืŸ ื’ืขื’ืขื‘ืŸ 26 ืฉืขื” ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืงืึธื“, ืื•ืŸ ืื™ืŸ ื“ื™ ืกื•ืฃ ื–ื™ื™ ื”ืึธื‘ืŸ ืฆื• ืคืึธืจืฉื˜ืขืœืŸ ื–ื™ื™ืขืจ ืœื™ื™ื–ื•ื ื’. ื ื‘ืึทื–ื•ื ื“ืขืจ ืžื™ื™ึทืœืข ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ื‘ื™ื™ึทื–ื™ื™ึทืŸ ืคื•ืŸ ืึท ื“ืขืžืึธ ืกืขืกื™ืข ืฆื• ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืึทืœืฅ ืคึผืœืึทื ื ืขื“ ืื™ื– ืคืืงื˜ื™ืฉ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื•ืŸ ืื™ื– ื ื™ืฉื˜ ืคืืจื‘ืœื™ื‘ืŸ ื™ื™ื“ื™ืึทื– ืื™ืŸ ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’. ืกื—ื•ืจื”, ืคึฟืึทืจื‘ืฒึทืกืŸ, ืขืกืŸ, ืึทืœืฅ ืื™ื– ืื•ื™ืš ื’ืขื•ื•ืขืŸ!

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื™ื ื˜ืขืœ ืึทืคึผืฉืึทื ืึทืœ ืฆื•ื’ืขืฉื˜ืขืœื˜ ืงืึทืžืขืจืึทืก, Raspberry PI, Neural Compute Stick 2.

ืึทืจื‘ืขื˜ ืกืขืœืขืงืฆื™ืข

ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ืฉื•ื•ืขืจ ืคึผืึทืจืฅ ืคื•ืŸ ืคึผืจื™ืคึผืขืจื™ื ื’ ืคึฟืึทืจ ืึท ืคืจื™ื™-ืคืึธืจืขื ื”ืึทืงืงืึทื˜ื”ืึธืŸ ืื™ื– ื˜ืฉื•ื–ื™ื ื’ ืึท ืึทืจื•ื™ืกืจื•ืคืŸ. ืžื™ืจ ื”ืึธื‘ืŸ ื’ืœื™ื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืงื•ืžืขืŸ ืžื™ื˜ ืขืคึผืขืก ื•ื•ืึธืก ืื™ื– ื ืึธืš ื ื™ืฉื˜ ืื™ืŸ ื“ืขื ืคึผืจืึธื“ื•ืงื˜, ื•ื•ื™ื™ึทืœ ื“ื™ ืžืขืœื“ืŸ ื”ืื˜ ื’ืขื–ืื’ื˜ ืึทื– ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื–ื™ื™ืขืจ ื‘ืึทื’ืจื™ืกืŸ.

ื•ื•ื™ื™ืœ ืึทื ืึทืœื™ื–ื™ืจื˜ ืžืึธื“ืขืœืก, ื•ื•ืึธืก ื–ืขื ืขืŸ ื™ื ืงืœื•ื“ืขื“ ืื™ืŸ ื“ื™ ืคึผืจืึธื“ื•ืงื˜ ืื™ืŸ ื“ืขื ืงืจืึทื ื˜ ืžืขืœื“ื•ื ื’, ืžื™ืจ ืงื•ืžืขืŸ ืฆื• ื“ื™ ืžืกืงื ื ืึทื– ืจื•ื‘ึฟ ืคื•ืŸ ื–ื™ื™ ืกืึธืœื•ื•ืข ืคืึทืจืฉื™ื“ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ ื–ืขืื•ื ื’ ืคึผืจืึธื‘ืœืขืžืก. ื“ืขืจืฆื•, ืขืก ืื™ื– ื–ื™ื™ืขืจ ืฉื•ื•ืขืจ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืึท ืคึผืจืึธื‘ืœืขื ืื™ืŸ ื“ื™ ืคืขืœื“ ืคื•ืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ ื–ืขืื•ื ื’ ื•ื•ืึธืก ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ืกืึทืœื•ื•ื“ ืžื™ื˜ OpenVINO, ืื•ืŸ ืืคื™ืœื• ืื•ื™ื‘ ืื™ื™ื ืขืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ื ื•ื•ืขื ื˜ื™ื“, ืขืก ืื™ื– ืฉื•ื•ืขืจ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืคืึทืจ-ื˜ืจื™ื™ื ื“ ืžืึธื“ืขืœืก ืื™ืŸ ื“ื™ ืฆื™ื‘ื•ืจ ืคืขืœื“. ืžื™ืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื• ื’ืจืึธื‘ืŸ ืื™ืŸ ืืŸ ืื ื“ืขืจ ืจื™ื›ื˜ื•ื ื’ - ืฆื• ืจืขื“ืข ืคึผืจืึทืกืขืกื™ื ื’ ืื•ืŸ ืึทื ืึทืœื™ื˜ื™ืงืก. ืœืึธืžื™ืจ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ืึท ื˜ืฉื™ืงืึทื•ื•ืข ืึทืจื‘ืขื˜ ืคื•ืŸ ื“ืขืจืงืขื ืขืŸ ื™ืžืึธื•ืฉืึทื ื– ืคื•ืŸ ืจื™ื™ื“. ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืขื–ืึธื’ื˜ ืึทื– OpenVINO ื”ืื˜ ืฉื•ื™ืŸ ืึท ืžืึธื“ืขืœ ื•ื•ืึธืก ื“ื™ื˜ืขืจืžืึทื ื– ื“ื™ ื™ืžืึธื•ืฉืึทื ื– ืคื•ืŸ ืึท ืžืขื ื˜ืฉ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื–ื™ื™ืŸ ืคึผื ื™ื, ืึธื‘ืขืจ:

  • ืื™ืŸ ื˜ืขืึธืจื™ืข, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืฉืึทืคึฟืŸ ืึท ืงืึทืžื‘ื™ื™ื ื“ ืึทืœื’ืขืจื™ื“ืึทื ื•ื•ืึธืก ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ื‘ื™ื™ื“ืข ื’ืขื–ื•ื ื˜ ืื•ืŸ ื‘ื™ืœื“, ื•ื•ืึธืก ื–ืึธืœ ื’ืขื‘ืŸ ืึท ืคืึทืจื’ืจืขืกืขืจืŸ ืื™ืŸ ืึทืงื™ืขืจืึทืกื™.
  • ืงืึทืžืขืจืึทืก ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื”ืึธื‘ืŸ ืึท ืฉืžืึธืœ ื•ื•ื™ื•ื™ื ื’ ื•ื•ื™ื ืงืœ; ืžืขืจ ื•ื•ื™ ืื™ื™ืŸ ืึทืคึผืึทืจืึทื˜ ืื™ื– ืคืืจืœืื ื’ื˜ ืฆื• ื“ืขืงืŸ ืึท ื’ืจื•ื™ืก ืฉื˜ื—; ื’ืขื–ื•ื ื˜ ื˜ื•ื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืึทื–ืึท ืึท ื‘ืึทื’ืจืขื ืขืฆื•ื ื’.

ืœืึธืžื™ืจ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ื“ืขื ื’ืขื“ืึทื ืง: ืœืึธืžื™ืจ ื ืขืžืขืŸ ื“ืขื ื’ืขื“ืึทื ืง ืคึฟืึทืจ ื“ื™ ืœืึทื›ืึธื“ื™ืž ืึธืคึผืฉื ื™ื˜ ื•ื•ื™ ืึท ื™ืงืขืจ. ืื™ืจ ืงืขื ืขืŸ ืžืขืกื˜ืŸ ืงื•ื ื” ืฆื•ืคึฟืจื™ื“ื ืงื™ื™ื˜ ืื™ืŸ ืงืจืึธื ื˜ืฉืขืงืึทื•ืฅ. ืื•ื™ื‘ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืงืึทืกื˜ืึทืžืขืจื– ืื™ื– ื“ื™ืกืึทื˜ืึทืกืคื™ื™ื“ ืžื™ื˜ ื“ื™ ื“ื™ื ืกื˜ ืื•ืŸ ื”ื™ื™ื‘ื˜ ืฆื• ื›ืึทืคึผืŸ ื–ื™ื™ืขืจ ื˜ืึธืŸ, ืื™ืจ ืงืขื ืขืŸ ืžื™ื“ ืจื•ืคืŸ ื“ื™ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืคึฟืึทืจ ื”ื™ืœืฃ.
ืื™ืŸ ื“ืขื ืคืึทืœ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ืึท ืžืขื ื˜ืฉ ืงื•ืœ ื“ืขืจืงืขื ื•ื ื’, ื“ืึธืก ื•ื•ืขื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืฆื• ื•ื™ืกื˜ื™ื™ืœืŸ ืงืจืึธื ืขืžืคึผืœื•ื™ื™ื– ืคื•ืŸ ืงืึทืกื˜ืึทืžืขืจื– ืื•ืŸ ืฆื•ืฉื˜ืขืœืŸ ืึทื ืึทืœื™ื˜ื™ืงืก ืคึฟืึทืจ ื™ืขื“ืขืจ ื™ื—ื™ื“. ื ื•, ืื™ืŸ ื“ืขืจืฆื•, ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืžืขื’ืœืขืš ืฆื• ืคื•ื ืึทื ื“ืขืจืงืœื™ื™ึทื‘ืŸ ื“ื™ ื ืึทื˜ื•ืจ ืคื•ืŸ ื“ื™ ืงืจืึธื ืขืžืคึผืœื•ื™ื™ื– ื–ื™ืš, ืึธืคึผืฉืึทืฆืŸ ื“ื™ ืึทื˜ืžืึธืกืคืขืจ ืื™ืŸ ื“ื™ ืžืึทื ืฉืึทืคึฟื˜, ืกืึธื•ื ื“ืก ื’ื•ื˜!

ืžื™ืจ ืคืึธืจืžื•ืœื™ืจืŸ ื“ื™ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืœื™ื™ื–ื•ื ื’:

  • ืงืœื™ื™ืŸ ื’ืจื™ื™ืก ืคื•ืŸ ื“ื™ ืฆื™ืœ ืžื™ื˜ืœ
  • ืคืึทืงื˜ื™ืฉ ืฆื™ื™ื˜ ืึธืคึผืขืจืึทืฆื™ืข
  • ื ื™ื“ืขืจื™ืง ืคึผืจื™ื™ึทื–
  • ื’ืจื™ื ื’ ืกืงืึทืœืึทื‘ื™ืœื™ื˜ื™

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืžื™ืจ ืกืขืœืขืงื˜ื™ืจืŸ Raspberry Pi 3 c ื•ื•ื™ ื“ื™ ืฆื™ืœ ืžื™ื˜ืœ Intel NCS 2.

ื“ืึธ ืขืก ืื™ื– ื•ื•ื™ื›ื˜ื™ืง ืฆื• ื˜ืึธืŸ ืื™ื™ืŸ ื•ื•ื™ื›ื˜ื™ืง ืฉื˜ืจื™ืš ืคื•ืŸ NCS - ืขืก ืึทืจื‘ืขื˜ ื‘ืขืกื˜ืขืจ ืžื™ื˜ ื ืึธืจืžืึทืœ CNN ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–, ืึธื‘ืขืจ ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื•ื™ืคืŸ ืึท ืžืึธื“ืขืœ ืžื™ื˜ ืžื ื”ื’ ืœื™ื™ึทืขืจืก ืื•ื™ืฃ ืขืก, ื“ืขืจื•ื•ืึทืจื˜ืŸ ื ื™ื“ืขืจื™ืง-ืžื“ืจื’ื” ืึทืคึผื˜ืึทืžืึทื–ื™ื™ืฉืึทืŸ.

ืขืก ืื™ื– ื ืึธืจ ืื™ื™ืŸ ืงืœื™ื™ืŸ ื–ืึทืš ืฆื• ื˜ืึธืŸ: ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืึท ืžื™ืงืจืึธืคืึธืŸ. ื ืจืขื’ื•ืœืขืจ ื•ืกื‘ ืžื™ืงืจืึธืคืึธืŸ ื•ื•ืขื˜ ื˜ืึธืŸ, ืึธื‘ืขืจ ืขืก ื•ื•ืขื˜ ื ื™ืฉื˜ ืงื•ืงืŸ ื’ื•ื˜ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ื“ื™ RPI. ืื‘ืขืจ ืืคื™ืœื• ื“ืึธ ื“ื™ ืœื™ื™ื–ื•ื ื’ ืžืžืฉ "ืœื™ื’ื˜ ื ื™ืจื‘ื™ื™." ืฆื• ืจืขืงืึธืจื“ื™ืจืŸ ืงื•ืœ, ืžื™ืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื• ื ื•ืฆืŸ ื“ื™ Voice Bonnet ื‘ืจืขื˜ ืคื•ืŸ ื“ื™ ืงื™ื˜ Google AIY ืงื•ืœ ืงื™ื˜, ืื•ื™ืฃ ื•ื•ืึธืก ืขืก ืื™ื– ืึท ื•ื•ื™ื™ืขืจื“ ืกื˜ืขืจื™ืึธื• ืžื™ืงืจืึธืคืึธืŸ.

ืืจืืคืงืืคื™ืข Raspbian ืคึฟื•ืŸ AIY ืคึผืจืึทื“ื–ืฉืขืงืก ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ืฆื•ืคึฟืขืœื™ืงืขืจ ืขืก ืฆื• ืึท ื‘ืœื™ืฅ ืคืึธืจ, ืคึผืจื•ื‘ื™ืจืŸ ืึทื– ื“ืขืจ ืžื™ืงืจืึธืคืึธืŸ ืึทืจื‘ืขื˜ ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ (ืขืก ื•ื•ืขื˜ ืจืขืงืึธืจื“ื™ืจืŸ ืึทื•ื“ื™ืึธ 5 ืกืขืงื•ื ื“ืขืก ืœืึทื ื’ ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ืขืก ืื™ืŸ ืึท ื˜ืขืงืข):

arecord -d 5 -r 16000 test.wav

ืื™ืš ื–ืึธืœ ืžื™ื“ ื˜ืึธืŸ ืึทื– ื“ืขืจ ืžื™ืงืจืึธืคืึธืŸ ืื™ื– ื–ื™ื™ืขืจ ืฉืคึผื™ืจืขื•ื•ื“ื™ืง ืื•ืŸ ืคึผื™ืงืก ืึทืจื•ื™ืฃ ืจืึทืฉ ื’ืขื–ื•ื ื˜. ืฆื• ืคืึทืจืจื™ื›ื˜ืŸ ื“ืขื, ืœืึธื–ืŸ ืื•ื ื“ื– ื’ื™ื™ืŸ ืฆื• alsamixer, ืกืขืœืขืงื˜ื™ืจืŸ ืงืึทืคึผื˜ื•ืจืข ื“ืขื•ื•ื™ืกืขืก ืื•ืŸ ืจืขื“ื•ืฆื™ืจืŸ ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืกื™ื’ื ืึทืœ ืžื“ืจื’ื” ืฆื• 50-60%.

OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi
ืžื™ืจ ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ื“ืขื ื’ื•ืฃ ืžื™ื˜ ืึท ื˜ืขืงืข ืื•ืŸ ืึทืœืฅ ืคื™ืฅ, ืื™ืจ ืงืขื ืขืŸ ืืคื™ืœื• ืคืึทืจืžืึทื›ืŸ ืขืก ืžื™ื˜ ืึท ื“ืขืงืœ

ืึทื“ื™ื ื’ ืึท ื’ืจืื“ืŸ ืงื ืขืคึผืœ

ื•ื•ืขืŸ ืžื™ืจ ื ืขืžืขืŸ ื“ื™ AIY Voice Kit ื‘ืึทื–ื•ื ื“ืขืจ, ืžื™ืจ ื’ืขื“ืขื ืงืขืŸ ืึทื– ืขืก ืื™ื– ืึท RGB ืงื ืขืคึผืœ, ื“ื™ ื‘ืึทืงืœื™ื™ื˜ ืคื•ืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทื ื˜ืจืึธื•ืœื“ ื“ื•ืจืš ื•ื•ื™ื™ื›ื•ื•ืืจื’. ืžื™ืจ ื–ื•ื›ืŸ ืคึฟืึทืจ "Google AIY Led" ืื•ืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ: https://aiyprojects.readthedocs.io/en/latest/aiy.leds.html
ืคืืจื•ื•ืืก ื˜ืึธืŸ ื ื™ื˜ ื ื•ืฆืŸ ื“ืขื ืงื ืขืคึผืœ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ื“ืขืจืงืขื ื˜ ืขืžืึธืฆื™ืข, ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืœื•ื™ื– 7 ืงืœืืกืŸ, ืื•ืŸ ื“ื™ ืงื ืขืคึผืœ ื”ืื˜ 8 ืคืืจื‘ืŸ, ืคึผื•ื ืงื˜ ื’ืขื ื•ื’!

ืžื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื“ืขื ืงื ืขืคึผืœ ื“ื•ืจืš GPIO ืฆื• Voice Bonnet, ืœืึธื“ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืœื™ื™ื‘ืจืขืจื™ื– (ื–ื™ื™ ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ืŸ ื“ื™ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ื™ื ื•ื•ืขื ื˜ืึทืจ ืคื•ืŸ 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])))

OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi
ืงื ืขืคึผืœ, ื‘ืจืขื ืขืŸ!

ืึทืจื‘ืขื˜ ืžื™ื˜ ืงื•ืœ

ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืคึผื™ืึทื•ื“ื™ืึธ ืฆื• ื›ืึทืคึผืŸ ื“ืขื ื˜ื™ื™ึทืš ืคึฟื•ืŸ ื“ื™ ืžื™ืงืจืึธืคืึธืŸ ืื•ืŸ ื•ื•ืขื‘ืจื˜ืงื•ื•ืึทื“ ืฆื• ืคื™ืœื˜ืขืจ ืจืึทืฉ ืื•ืŸ ื“ืขื˜ืขืงื˜ ืงื•ืœ. ืื™ืŸ ื“ืขืจืฆื•, ืžื™ืจ ื•ื•ืขืœืŸ ืžืึทื›ืŸ ืึท ืจื™ื™ ืฆื• ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืึทืกื™ื ื˜ืฉืจืึธื ืึธื•ืกืœื™ ืœื™ื™ื’ืŸ ืื•ืŸ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ืงื•ืœ ืขืงืกืขืจืคึผืฅ.

ื–ื™ื ื˜ webrtcvad ื”ืื˜ ืึท ื‘ืึทื’ืจืขื ืขืฆื•ื ื’ ืื•ื™ืฃ ื“ื™ ื’ืจื™ื™ืก ืคื•ืŸ ื“ื™ ืกืึทืคึผืœื™ื™ื“ ืคืจืึทื’ืžืขื ื˜ - ืขืก ืžื•ื–ืŸ ื–ื™ื™ืŸ ื’ืœื™ื™ึทืš ืฆื• 10/20/30ms, ืื•ืŸ ื“ื™ ื˜ืจื™ื™ื ื™ื ื’ ืคื•ืŸ ื“ื™ ืžืึธื“ืขืœ ืคึฟืึทืจ ื“ืขืจืงืขื ืขืŸ ื™ืžืึธื•ืฉืึทื ื– (ื•ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ืœืขืจื ืขืŸ ืฉืคึผืขื˜ืขืจ) ืื™ื– ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื•ื™ืฃ ืึท 48kHz ื“ืึทื˜ืึทืกืขื˜, ืžื™ืจ ื•ื•ืขืœืŸ ื›ืึทืคึผืŸ ื˜ืฉืึทื ื’ืงืก ืคื•ืŸ ื’ืจื™ื™ืก 48000 ร— 20 ืžืก / 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 = []

ืขืก ืื™ื– ืฆื™ื™ื˜ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืคืึทืจ-ื˜ืจื™ื™ื ื“ ืžืึธื“ืขืœืก ืื™ืŸ ื“ื™ ืฆื™ื‘ื•ืจ ืคืขืœื“, ื’ื™ื™ืŸ ืฆื• ื’ื™ื˜ื”ื•ื‘, Google, ืึธื‘ืขืจ ื’ืขื“ืขื ืงืขืŸ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื‘ืึทื’ืจืขื ืขืฆื•ื ื’ ืื•ื™ืฃ ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ื’ืขื ื™ืฆื˜. ื“ืึธืก ืื™ื– ืึท ื’ืึทื ืฅ ืฉื•ื•ืขืจ ื˜ื™ื™ืœ, ื•ื•ื™ื™ึทืœ ืื™ืจ ื”ืึธื‘ืŸ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืžืึธื“ืขืœืก ืื•ื™ืฃ ื“ื™ื™ืŸ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ื“ืึทื˜ืŸ, ืื•ืŸ ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื’ืขืจ ื–ื™ื™ ืฆื• ื“ื™ ื™ื ืขืจืœืขืš ืคึฟืึธืจืžืึทื˜ ืคื•ืŸ OpenVINO - IR (ื™ื ื˜ืขืจืžืขื“ื™ืึทื˜ืข ืจืขืคึผืจืขืกืขื ื˜ืึทื˜ื™ืึธืŸ). ืžื™ืจ ื’ืขืคืจื•ื•ื•ื˜ ื•ื•ืขื’ืŸ 5-7 ืคืึทืจืฉื™ื“ืขื ืข ืกืึทืœื•ืฉืึทื ื– ืคื•ืŸ ื’ื™ื˜ื”ื•ื‘, ืื•ืŸ ืื•ื™ื‘ ื“ืขืจ ืžืึธื“ืขืœ ืคึฟืึทืจ ื“ืขืจืงืขื ื•ื ื’ ืคื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ื’ืขืืจื‘ืขื˜ ืžื™ื“, ืžื™ื˜ ืงื•ืœ ื“ืขืจืงืขื ื•ื ื’ ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ื•ื•ืึทืจื˜ืŸ ืžืขืจ - ื–ื™ื™ ื ื•ืฆืŸ ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–.

ืžื™ืจ ืคืึธืงื•ืก ืื•ื™ืฃ ื“ื™ ืคืืœื’ืขื ื“ืข:

  • ื™ืžืึธื•ืฉืึทื ื– ืคื•ืŸ ื“ื™ ืงื•ืœ - https://github.com/alexmuhr/Voice_Emotion
    ืขืก ืึทืจื‘ืขื˜ ืœื•ื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืจื™ื ืฆื™ืคึผ: ืึทื•ื“ื™ืึธ ืื™ื– ืฉื ื™ื™ึทื“ืŸ ืื™ืŸ ืคึผืึทืกื™ื“ื–ืฉื™ื– ืคื•ืŸ ืึท ื–ื™ื›ืขืจ ื’ืจื™ื™ืก, ืคึฟืึทืจ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืคึผืึทืกื™ื“ื–ืฉื™ื– ืžื™ืจ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ MFCC ืื•ืŸ ื“ืขืจื ืึธืš ืคืึธืจืœื™ื™ื’ืŸ ื–ื™ื™ ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ ืฆื• CNN
  • ืงื•ืœ ื“ืขืจืงืขื ื•ื ื’ - https://github.com/linhdvu14/vggvox-speaker-identification
    ื“ืึธ, ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ MFCC, ืžื™ืจ ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ืกืคึผืขืงื˜ืจืึธื’ืจืึทื, ื ืึธืš FFT ืžื™ืจ ืงืึธืจืžืขืŸ ื“ื™ ืกื™ื’ื ืึทืœ ืฆื• CNN, ื•ื•ื• ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ื•ื•ืขืงื˜ืึธืจ ืคืึทืจื˜ืจืขื˜ื•ื ื’ ืคื•ืŸ ื“ื™ ืงื•ืœ.

ื•ื•ื™ื™ึทื˜ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืงืึทื ื•ื•ืขืจื˜ื™ื ื’ ืžืึธื“ืขืœืก, ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ ื˜ืขืึธืจื™ืข. OpenVINO ื›ื•ืœืœ ืขื˜ืœืขื›ืข ืžืึทื“ื–ืฉื•ืœื–:

  • ืขืคึฟืŸ ืžืึธื“ืขืœ ื–ืึธืึธืœืึธื’ื™ืฉืขืจ ื’ืึธืจื˜ืŸ, ืžืึธื“ืขืœืก ืคื•ืŸ ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืื•ืŸ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื™ืŸ ื“ื™ื™ืŸ ืคึผืจืึธื“ื•ืงื˜
  • ืžืึธื“ืขืœ ืึธืคึผื˜ื™ืžื™ื–ืขืจ, ื“ืึทื ืง ืฆื• ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ื’ืขืจ ืึท ืžืึธื“ืขืœ ืคื•ืŸ ืคืึทืจืฉื™ื“ืŸ ืคืจื™ื™ืžื•ื•ืขืจืง ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ (ื˜ืขื ืกืึธืจืคืœืึธื•ื•, ONNX ืขื˜ืง) ืื™ืŸ ื“ื™ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืจืขืคึผืจืขืกืขื ื˜ืึทื˜ื™ืึธืŸ ืคึฟืึธืจืžืึทื˜, ืžื™ื˜ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืึทืจื‘ืขื˜ืŸ ื•ื•ื™ื™ึทื˜ืขืจ
  • ื™ื ืคืขื ืกืข ืขื ื’ื™ื ืข ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื•ื™ืคืŸ ืžืึธื“ืขืœืก ืื™ืŸ IR ืคึฟืึธืจืžืึทื˜ ืื•ื™ืฃ ื™ื ื˜ืขืœ ืคึผืจืึทืกืขืกืขืจื–, ืžื™ืจื™ืึทื“ ื˜ืฉื™ืคึผืก ืื•ืŸ ื ืขื•ืจืึทืœ ืงืึทืžืคึผื™ื•ื˜ืข ืกื˜ื™ืง ืึทืงืกืขืœืขืจื™ื™ื˜ืขืจื–
  • ื“ื™ ืžืขืจืกื˜ ืขืคืขืงื˜ื™ื•ื• ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹OpenCV (ืžื™ื˜ Inference Engine ืฉื˜ื™ืฆืŸ)
    ื™ืขื“ืขืจ ืžืึธื“ืขืœ ืื™ืŸ ื™ืจ ืคึฟืึธืจืžืึทื˜ ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ื“ื•ืจืš ืฆื•ื•ื™ื™ ื˜ืขืงืขืก: .ืงืกืžืœ ืื•ืŸ .ื‘ื™ืŸ.
    ืžืึธื“ืขืœืก ื–ืขื ืขืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืฆื• IR ืคึฟืึธืจืžืึทื˜ ื“ื•ืจืš ืžืึธื“ืขืœ ืึธืคึผื˜ื™ืžื™ื–ืขืจ ื•ื•ื™ ื’ื™ื™ื˜:

    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, ืึธื‘ืขืจ ืžื™ืจ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื’ืจืึธื‘ืŸ ืึทื–ื•ื™ ื•ื•ื™ื™ึทื˜ ืื•ืŸ ืคืฉื•ื˜ ืคืึทืจืคืขืกื˜ื™ืงื˜ ืขืก ืคึฟืึทืจ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืžืึธื“ืขืœืก.
    ื“ืขืจื ืึธืš, ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืœืึธื“ืŸ ื“ื™ ืฉื•ื™ืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืžืึธื“ืขืœ ืื™ืŸ ื™ืจ ืคึฟืึธืจืžืึทื˜ ื“ื•ืจืš ื“ื™ DNN ืžืึธื“ื•ืœืข ืื™ืŸ OpenCV ืื•ืŸ ืคืึธืจื•ื™ืก ืขืก.

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

    ื“ื™ ืœืขืฆื˜ืข ืฉื•ืจื” ืื™ืŸ ื“ืขื ืคืึทืœ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืจื™ื“ืขืจืขืงื˜ ื—ืฉื‘ื•ื ื•ืช ืฆื• ื“ื™ ื ืขื•ืจืึทืœ ืงืึทืžืคึผื™ื•ื˜ืข ืฉื˜ืขืงืŸ, ื™ืงืขืจื“ื™ืง ื—ืฉื‘ื•ื ื•ืช ื–ืขื ืขืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื•ื™ืฃ ื“ื™ ืคึผืจืึทืกืขืกืขืจ, ืึธื‘ืขืจ ืื™ืŸ ื“ืขื ืคืึทืœ ืคื•ืŸ ื“ื™ Raspberry Pi ื“ืึธืก ื•ื•ืขื˜ ื ื™ืฉื˜ ืึทืจื‘ืขื˜ืŸ, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ืึท ืฉื˜ืขืงืŸ.

    ื“ืขืจื ืึธืš, ื“ื™ ืœืึธื’ื™ืง ืื™ื– ื•ื•ื™ ื’ื™ื™ื˜: ืžื™ืจ ื˜ื™ื™ืœืŸ ืื•ื ื“ื–ืขืจ ืึทื•ื“ื™ืึธ ืื™ืŸ ืคึฟืขื ืฆื˜ืขืจ ืคื•ืŸ ืึท ื–ื™ื›ืขืจ ื’ืจื™ื™ืก (ืคึฟืึทืจ ืื•ื ื“ื– ืขืก ืื™ื– 0.4 s), ืžื™ืจ ื’ืขืจ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืคึฟืขื ืฆื˜ืขืจ ืื™ืŸ MFCC, ื•ื•ืึธืก ืžื™ืจ ืงืึธืจืžืขืŸ ืฆื• ื“ื™ ื’ืจื™ื“:

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

    ื“ืขืจื ืึธืš, ืœืึธื–ืŸ ืื•ื ื“ื– ื ืขืžืขืŸ ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ืงืœืึทืก ืคึฟืึทืจ ืึทืœืข ืคึฟืขื ืฆื˜ืขืจ. ื ืคึผืฉื•ื˜ ืœื™ื™ื–ื•ื ื’, ืึธื‘ืขืจ ืคึฟืึทืจ ืึท ื›ืึทืงืึทื˜ื”ืึธืŸ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืงื•ืžืขืŸ ืึทืจื•ื™ืฃ ืžื™ื˜ ืขืคึผืขืก ืฆื• ืึทื‘ืกื˜ืจืึทืงื˜, ื ืึธืจ ืื•ื™ื‘ ืื™ืจ ื”ืึธื˜ ืฆื™ื™ื˜. ืžื™ืจ ื”ืึธื‘ืŸ ื ืึธืš ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืึทืจื‘ืขื˜ ืฆื• ื˜ืึธืŸ, ืึทื–ื•ื™ ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทืš ืื•ื™ืฃ - ืžื™ืจ ื•ื•ืขืœืŸ ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ืงื•ืœ ื“ืขืจืงืขื ื•ื ื’. ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืžืึทื›ืŸ ืึท ืกืึธืจื˜ ืคื•ืŸ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ื•ื•ืึธืก ืกืคึผืขืงื˜ืจืึธื’ืจืึทืžื– ืคื•ืŸ ืคืึทืจ-ืจืขืงืึธืจื“ืขื“ ืฉื˜ื™ืžืขืŸ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืกื˜ืึธืจื“. ื–ื™ื ื˜ ืขืก ืื™ื– ืึท ื‘ื™ืกืœ ืฆื™ื™ื˜ ืœื™ื ืงืก, ืžื™ืจ ื•ื•ืขืœืŸ ื”ืึทืœื˜ืŸ ื“ืขื ืึทืจื•ื™ืกื’ืขื‘ืŸ ื•ื•ื™ ื‘ืขืกื˜ืขืจ ืžื™ืจ ืงืขื ืขืŸ.

    ื ืึทืžืขืœื™, ืžื™ืจ ืžืึทื›ืŸ ืึท ืฉืจื™ืคื˜ ืคึฟืึทืจ ืจืขืงืึธืจื“ื™ื ื’ ืึท ืงื•ืœ ืขืงืกืขืจืคึผื˜ (ืขืก ืึทืจื‘ืขื˜ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’ ื•ื•ื™ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื•ื™ื‘ืŸ, ื ืึธืจ ื•ื•ืขืŸ ื™ื ื˜ืขืจืึทืคึผื˜ื™ื“ ืคื•ืŸ ื“ื™ ืงืœืึทื•ื•ื™ืึทื˜ื•ืจ ืขืก ื•ื•ืขื˜ ืจืึทื˜ืขื•ื•ืขืŸ ื“ื™ ืงื•ืœ ืฆื• ืึท ื˜ืขืงืข).

    ืœืืžื™ืจ ืคืจื•ื‘ื™ืจืŸ:

    python3 voice_db/record_voice.py test.wav

    ืžื™ืจ ืจืขืงืึธืจื“ื™ืจืŸ ื“ื™ ืงื•ืœื•ืช ืคื•ืŸ ืขื˜ืœืขื›ืข ืžืขื ื˜ืฉืŸ (ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ื“ืจื™ื™ ืžืึทื ืฉืึทืคึฟื˜ ืžื™ื˜ื’ืœื™ื“ืขืจ)
    ื“ืขืจื ืึธืš, ืคึฟืึทืจ ื™ืขื“ืขืจ ืจืขืงืึธืจื“ืขื“ ืงื•ืœ, ืžื™ืจ ื“ื•ืจื›ืคื™ืจืŸ ืึท ืฉื ืขืœ ืคื™ืจืขืจ ื™ื‘ืขืจืžืึทื›ืŸ, ื‘ืึทืงื•ืžืขืŸ ืึท ืกืคึผืขืงื˜ืจืึธื’ืจืึทื ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ืขืก ื•ื•ื™ ืึท ื ืึทืžืคึผื™ ืžืขื ื’ืข (.ื ืคึผื™):

    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 ืคึฟืึทืจ ื™ื ืคืขืจืึทื ืก). ืžื™ืจ ื”ืึธื‘ืŸ ื ื™ื˜ ืžืขืจ ืฆื™ื™ื˜ ืฆื• ืœื™ื™ื’ืŸ ื ื™ื™ึทืข ืžืึธื“ืขืœืก ืื•ืŸ ืคืึธื•ืงื™ืกื˜ ืื•ื™ืฃ ืฉืจื™ื™ื‘ืŸ ืึท ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ ืคื•ืŸ ื“ื™ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

    ื•ื•ืขื‘ ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ

    ืึท ื•ื•ื™ื›ื˜ื™ืง ืคื•ื ื˜: ืžื™ืจ ื ืขืžืขืŸ ืึท ืจืึทื•ื˜ืขืจ ืžื™ื˜ ืื•ื ื“ื– ืคื•ืŸ ืฉื˜ื•ื‘ ืื•ืŸ ืฉื˜ืขืœืŸ ืึทืจื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื”ื™ื’ืข ื ืขืฅ, ืขืก ื”ืขืœืคึผืก ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืžื™ื˜ืœ ืื•ืŸ ืœืึทืคึผื˜ืึทืคึผืก ืื™ื‘ืขืจ ื“ื™ ื ืขืฅ.

    ื“ื™ ื‘ืึทืงืขื ื“ ืื™ื– ืึท ืกื•ืฃ-ืฆื•-ืกื•ืฃ ืึธื ื–ืึธื’ ืงืึทื ืึทืœ ืฆื•ื•ื™ืฉืŸ ื“ื™ ืคืจืึธื ื˜ ืื•ืŸ Raspberry Pi, ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื•ื•ืขื‘ืกืึธืงืงืขื˜ ื˜ืขื›ื ืึธืœืึธื’ื™ืข (ื”ื˜ื˜ืคึผ ืื™ื‘ืขืจ tcp ืคึผืจืึธื˜ืึธืงืึธืœ).

    ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ื™ื ืข ืื™ื– ืฆื• ื‘ืึทืงื•ืžืขืŸ ืคึผืจืึทืกืขืกื˜ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืžืึทืœืขื ืข, ื“ืึธืก ื”ื™ื™ืกื˜, ืคึผืจื™ื“ื™ืงื˜ืขืจื– ืคึผืึทืงื˜ ืื™ืŸ ื“ื–ืฉืกืึธืŸ, ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื”ืึทืœื‘ ื•ื•ืขื’ ื“ื•ืจืš ื–ื™ื™ืขืจ ืจื™ื™ื–ืข ืึทื–ื•ื™ ืึทื– ืกื˜ืึทื˜ื™ืกื˜ื™ืง ืงืขื ืขืŸ ื–ื™ื™ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื•ื•ืขื’ืŸ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืก ืขืžืึธืฆื™ืึธื ืขืœ ื”ื™ื ื˜ืขืจื’ืจื•ื ื˜ ืคึฟืึทืจ ื“ื™ ืฆื™ื™ื˜. ื“ืขืจ ืคึผืึทืงืึทื˜ ืื™ื– ื“ืขืจื ืึธืš ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ืคืจืึธื ื˜ืขื ื“, ื•ื•ืึธืก ื ื™ืฆื˜ ืึทื‘ืึธื ืขืžืขื ื˜ ืื•ืŸ ื ืขืžื˜ ืคึผืึทืงื™ืฅ ืคึฟื•ืŸ ื“ื™ ื•ื•ืขื‘ืกืึธืงืงืขื˜ ืขื ื“ืคึผื•ื™ื ื˜. ื“ืขืจ ื’ืื ืฆืขืจ ื‘ืึทืงืขื ื“ ืžืขืงืึทื ื™ื–ืึทื ืื™ื– ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ื“ื™ ื’ืึธืœืึทื ื’ ืฉืคึผืจืึทืš; ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ื•ื•ื™ื™ึทืœ ืขืก ืื™ื– ื’ืขื–ื•ื ื˜ ืคึผืึทืกื™ืง ืคึฟืึทืจ ื™ื™ืกื™ื ื’ืงืจืึทื ืึทืก ื˜ืึทืกืงืก, ื•ื•ืึธืก ื’ืึธืจืึธื•ื˜ื™ื ื– ืฉืขืคึผืŸ ื’ืขื–ื•ื ื˜.
    ื•ื•ืขืŸ ืึทืงืกืขืกื™ื ื’ ื“ื™ ืขื ื“ืคึผื•ื™ื ื˜, ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืื™ื– ืจืขื’ื™ืกื˜ืจื™ืจื˜ ืื•ืŸ ืืจื™ื™ืŸ ืื™ืŸ ื“ื™ ืกื˜ืจื•ืงื˜ื•ืจ, ืื•ืŸ ื–ื™ื™ืŸ ืึธื ื–ืึธื’ ืื™ื– ื‘ืืงื•ืžืขืŸ. ื‘ื™ื™ื“ืข ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืื•ืŸ ื“ืขืจ ืึธื ื–ืึธื’ ื–ืขื ืขืŸ ืืจื™ื™ืŸ ืื™ืŸ ืึท ืคึผืจืึธืกื˜ ื›ืึทื‘, ืคื•ืŸ ื•ื•ืึธืก ืึทืจื˜ื™ืงืœืขืŸ ื–ืขื ืขืŸ ืฉื•ื™ืŸ ื’ืขืฉื™ืงื˜ ื•ื•ื™ื™ึทื˜ืขืจ (ืฆื• ื“ื™ ืึทื‘ืึธื ืขื ื˜ ืคืจืึธื ื˜), ืื•ืŸ ืื•ื™ื‘ ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืงืœืึธื•ื–ื™ื– ื“ื™ ืงืฉืจ (ืžืึทืœืขื ืข ืึธื“ืขืจ ืคืจืึธื ื˜), ื–ื™ื™ืŸ ืึทื‘ืึธื ืขืžืขื ื˜ ืื™ื– ืงืึทื ืกืึทืœื“ ืื•ืŸ ืขืจ ืื™ื– ืึทื•ื•ืขืงื’ืขื ื•ืžืขืŸ ืคื•ืŸ ื“ื™ ื›ืึทื‘.

    OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi
    ืžื™ืจ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืึท ืงืฉืจ ืคื•ืŸ ื“ื™ ืฆื•ืจื™ืง

    ืคืจืึธื ื˜-ืขื ื“ ืื™ื– ืึท ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ื ื™ืฆืŸ ื“ื™ ืจืขืึทืงื˜ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืฆื• ืคืึทืจื’ื™ื›ืขืจืŸ ืื•ืŸ ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคึผืจืึธืฆืขืก. ื“ืขืจ ืฆื™ืœ ืคื•ืŸ ื“ืขื ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ื– ืฆื• ื•ื•ื™ื–ืฉื•ื•ืึทืœื™ื™ื– ื“ืึทื˜ืŸ ื‘ืืงื•ืžืขืŸ ืžื™ื˜ ืึทืœื’ืขืจื™ื“ืึทืžื– ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ื“ื™ ืฆื•ืจื™ืง-ืกื•ืฃ ื–ื™ื™ึทื˜ ืื•ืŸ ื’ืœื™ื™ึทืš ืื•ื™ืฃ ื“ื™ Raspberry Pi. ื“ืขืจ ื‘ืœืึทื˜ ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืกืขืงืฉืึทื ืึทืœ ืจื•ื˜ื™ื ื’ ืžื™ื˜ ืจืขืึทื’ื™ืจืŸ ืจืึทื•ื˜ืขืจ, ืึธื‘ืขืจ ื“ืขืจ ื”ื•ื™ืคึผื˜ ื‘ืœืึทื˜ ืคื•ืŸ ืื™ื ื˜ืขืจืขืก ืื™ื– ื“ืขืจ ื”ื•ื™ืคึผื˜ ื‘ืœืึทื˜, ื•ื•ื• ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง ื˜ื™ื™ึทืš ืคื•ืŸ ื“ืึทื˜ืŸ ืื™ื– ื‘ืืงื•ืžืขืŸ ืื™ืŸ ืคืึทืงื˜ื™ืฉ ืฆื™ื™ื˜ ืคึฟื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ื ื™ืฆืŸ WebSocket ื˜ืขื›ื ืึธืœืึธื’ื™ืข. Raspberry Pi ื“ื™ื˜ืขืงืฅ ืึท ืงื•ืœ, ื‘ืืฉืœืืกืŸ ืฆื™ ืขืก ื’ืขื”ืขืจื˜ ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืžืขื ื˜ืฉ ืคื•ืŸ ื“ื™ ืจืขื’ื™ืกื˜ืจื™ืจื˜ ื“ืึทื˜ืึทื‘ื™ื™ืก, ืื•ืŸ ืกืขื ื“ื– ืึท ืžืึทืฉืžืึธืขืก ืจืฉื™ืžื” ืฆื• ื“ืขื ืงืœื™ืขื ื˜. ื“ืขืจ ืงืœื™ืขื ื˜ ื“ื™ืกืคึผืœื™ื™ื– ื“ื™ ืœืขืฆื˜ืข ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ื“ืึทื˜ืŸ, ื“ื™ืกืคึผืœื™ื™ื– ื“ื™ ืึทื•ื•ืึทื˜ืึทืจ ืคื•ืŸ ื“ืขืจ ืžืขื ื˜ืฉ ื•ื•ืึธืก ืจื•ื‘ึฟ ืžืกืชึผืžื ื’ืขืจืขื“ื˜ ืื™ืŸ ื“ื™ ืžื™ืงืจืึธืคืึธืŸ, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื“ื™ ืขืžืึธืฆื™ืข ืžื™ื˜ ื•ื•ืึธืก ืขืจ ืคึผืจืึทื ืึทื•ื ืกื™ื– ื“ื™ ื•ื•ืขืจื˜ืขืจ.

    OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi
    ื”ื™ื™ื ื‘ืœืึทื˜ ืžื™ื˜ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืคึฟืึธืจื•ื™ืกื–ืึธื’ืŸ

    ืกืึธืฃ

    ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื ื™ื˜ ืžืขื’ืœืขืš ืฆื• ืคืึทืจืขื ื“ื™ืงืŸ ืึทืœืฅ ื•ื•ื™ ืคึผืœืึทื ื ืขื“, ืžื™ืจ ืคืฉื•ื˜ ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืฆื™ื™ึทื˜, ืึทื–ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ื”ืึธืคืขื ื•ื ื’ ืื™ื– ื’ืขื•ื•ืขืŸ ืื™ืŸ ื“ื™ ื“ืขืžืึธ, ืึทื– ืึทืœืฅ ื•ื•ืึธืœื˜ ืึทืจื‘ืขื˜. ืื™ืŸ ื“ืขืจ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื–ื™ื™ ื’ืขืจืขื“ื˜ ื•ื•ืขื’ืŸ ื•ื•ื™ ืึทืœืฅ ืึทืจื‘ืขื˜, ื•ื•ืึธืก ืžืึธื“ืขืœืก ื–ื™ื™ ื’ืขื ื•ืžืขืŸ, ื•ื•ืึธืก ืคึผืจืึธื‘ืœืขืžืก ื–ื™ื™ ื’ืขืคึผืœืึธื ื˜ืขืจื˜. ื“ืขืจื ืึธืš ืื™ื– ื’ืขื•ื•ืขืŸ ื“ืขืจ ื“ืขืžืึธ ื˜ื™ื™ืœ - ืขืงืกืคึผืขืจืฅ ื’ืขื’ืื ื’ืขืŸ ืึทืจื•ื ื“ื™ ืฆื™ืžืขืจ ืื™ืŸ ื˜ืจืึทืค - ืกื“ืจ ืื•ืŸ ืึทืคึผืจืึธื•ื˜ืฉื˜ ื™ืขื“ืขืจ ืžืึทื ืฉืึทืคึฟื˜ ืฆื• ืงื•ืงืŸ ืื™ืŸ ื“ื™ ืึทืจื‘ืขื˜ ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผ. ื–ื™ื™ ื”ืึธื‘ืŸ ืื•ื ื“ื– ืื•ื™ืš ื’ืขืคืจืขื’ื˜ ืฉืืœื•ืช, ืึทืœืขืžืขืŸ ื’ืขืขื ื˜ืคืขืจื˜ ื–ื™ื™ืขืจ ื˜ื™ื™ืœ, ื–ื™ื™ ืœื™ื ืงืก ื“ื™ ื•ื•ืขื‘ ืื•ื™ืฃ ื“ื™ ืœืึทืคึผื˜ืึทืคึผ, ืื•ืŸ ืึทืœืฅ ื˜ืึทืงืข ื’ืขืืจื‘ืขื˜ ื•ื•ื™ ื“ืขืจื•ื•ืึทืจื˜.

    ืœืึธื–ืŸ ืžื™ืจ ื˜ืึธืŸ ืึทื– ื“ื™ ื’ืึทื ืฅ ืคึผืจื™ื™ึทื– ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืœื™ื™ื–ื•ื ื’ ืื™ื– ื’ืขื•ื•ืขืŸ $ 150:

    • Raspberry Pi 3 ~ $35
    • Google AIY Voice Bonnet (ืื™ืจ ืงืขื ืขืŸ ื ืขืžืขืŸ ืึท ืจืขื“ื ืขืจ ืึธืคึผืฆืึธืœ) ~ 15 $
    • ื™ื ื˜ืขืœ ื ืงืก 2 ~ 100 $

    ื•ื•ื™ ืฆื• ืคึฟืึทืจื‘ืขืกืขืจืŸ:

    • ื ื™ืฆืŸ ืจืขื’ื™ืกื˜ืจืึทืฆื™ืข ืคึฟื•ืŸ ื“ืขื ืงืœื™ืขื ื˜ - ืคืจืขื’ืŸ ืฆื• ืœื™ื™ืขื ืขืŸ ื“ืขื ื˜ืขืงืกื˜ ื•ื•ืึธืก ืื™ื– ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืจืึทื ื“ืึทืžืœื™
    • ืœื™ื™ื’ ืึท ื‘ื™ืกืœ ืžืขืจ ืžืึธื“ืขืœืก: ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื–ืฉืขื ื“ืขืจ ืื•ืŸ ืขืœื˜ืขืจ ื“ื•ืจืš ืงื•ืœ
    • ื‘ืึทื–ื•ื ื“ืขืจ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืกืึทื•ื ื“ื™ื ื’ ืงื•ืœื•ืช (ื“ื™ืึทืจื™ื–ืึทื˜ื™ืึธืŸ)

    ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™: https://github.com/vladimirwest/OpenEMO

    OpenVINO hackathon: ื“ืขืจืงืขื ืขืŸ ืงื•ืœ ืื•ืŸ ื™ืžืึธื•ืฉืึทื ื– ืื•ื™ืฃ Raspberry Pi
    ืžื™ื“ ืึธื‘ืขืจ ืฆื•ืคืจื™ื“ืŸ ืžื™ืจ ื–ืขื ืขืŸ

    ืฆื•ื ืกื•ืฃ, ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื–ืึธื’ืŸ ืึท ื“ืึทื ืง ืฆื• ื“ื™ ืึธืจื’ืึทื ื™ื™ื–ืขืจื– ืื•ืŸ ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ. ืฆื•ื•ื™ืฉืŸ ื“ื™ ืคึผืจืึทื“ื–ืฉืขืงืก ืคื•ืŸ ืื ื“ืขืจืข ื˜ื™ืžื–, ืžื™ืจ ืคึผืขืจืกื ืึทืœื™ ืœื™ื™ืงื˜ ื“ื™ ืœื™ื™ื–ื•ื ื’ ืคึฟืึทืจ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืคืจื™ื™ ืคึผืึทืจืงื™ื ื’ ืกืคึผื™ื™ืกื™ื–. ืคึฟืึทืจ ืื•ื ื“ื–, ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื•ื•ื™ืœื“ ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ื˜ื‘ื™ืœื” ืื™ืŸ ื“ื™ ืคึผืจืึธื“ื•ืงื˜ ืื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’. ืื™ืš ื”ืึธืคึฟืŸ ืึทื– ืžืขืจ ืื•ืŸ ืžืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ื’ืขืฉืขืขื ื™ืฉืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื”ืืœื˜ืŸ ืื™ืŸ ื“ื™ ืžืงื•ืžื•ืช, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืื•ื™ืฃ ืึทื™ ื˜ืขืžืขืก.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’