OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° Raspberry Pi

30 Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ - 1 Π΄Π΅ΠΊΠ΅ΠΌΠ²Ρ€ΠΈ Π²ΠΎ НиТни Новгород сС ΠΎΠ΄Ρ€ΠΆΠ° OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½. УчСсницитС Π±Π΅Π° Π·Π°ΠΌΠΎΠ»Π΅Π½ΠΈ Π΄Π° создадат ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΎΡ‚ Π°Π»Π°Ρ‚ΠΊΠΈ Π½Π° Intel OpenVINO. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ˜Π° листа Π½Π° ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΏΠΎ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΠΎΠ΄ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ Π½Π° Π·Π°Π΄Π°Ρ‡Π°, Π½ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Π°Ρ‚Π° ΠΎΠ΄Π»ΡƒΠΊΠ° остана Π½Π° Ρ‚ΠΈΠΌΠΎΠ²ΠΈΡ‚Π΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, бСшС ΠΎΡ…Ρ€Π°Π±Ρ€Π΅Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠΎΠΈ Π½Π΅ сС Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΎΡ‚.

OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° Raspberry Pi

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС Π²ΠΈ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π³ΠΎ создадовмС Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΎΡ‚, со кој Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π³ΠΎ Π·Π°Π·Π΅Π΄ΠΎΠ²ΠΌΠ΅ ΠΏΡ€Π²ΠΎΡ‚ΠΎ мСсто.

На Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½ΠΎΡ‚ учСствуваа повСќС ΠΎΠ΄ 10 Π΅ΠΊΠΈΠΏΠΈ. Π£Π±Π°Π²ΠΎ Π΅ ΡˆΡ‚ΠΎ Π½Π΅ΠΊΠΎΠΈ ΠΎΠ΄ Π½ΠΈΠ² дојдоа ΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ. ΠœΠ΅ΡΡ‚ΠΎΡ‚ΠΎ Π½Π° Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½ΠΎΡ‚ бСшС комплСксот β€žΠšΡ€Π΅ΠΌΠ»ΠΈΠ½ΡΠΊΠΈ Π½Π° ΠŸΠΎΡ‡Π°ΠΈΠ½β€œ, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π±Π΅Π° обСсСни Π°Π½Ρ‚ΠΈΡ‡ΠΊΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΎΠ΄ НиТни Новгород, Π²ΠΎ ΠΏΡ€ΠΈΠ΄Ρ€ΡƒΠΆΠ±Π°! (Π’Π΅ потсСтувам Π΄Π΅ΠΊΠ° Π²ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½Π°Ρ‚Π° ΠΊΠ°Π½Ρ†Π΅Π»Π°Ρ€ΠΈΡ˜Π° Π½Π° Π˜Π½Ρ‚Π΅Π» сС Π½Π°ΠΎΡ“Π° Π²ΠΎ НиТни Новгород). УчСсницитС добија 26 часа Π΄Π° Π½Π°ΠΏΠΈΡˆΠ°Ρ‚ ΠΊΠΎΠ΄, Π° Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° Π³ΠΎ прСтстават своСто Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ПосСбна прСдност бСшС присуството Π½Π° Π΄Π΅ΠΌΠΎ сСсија Π·Π° Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° сè ΡˆΡ‚ΠΎ Π΅ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ Π΅ навистина ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ΠΌΠ° Π΄Π° останС ΠΈΠ΄Π΅ΠΈ Π²ΠΎ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π‘Ρ‚ΠΎΠΊΠ°, Π³Ρ€ΠΈΡ†ΠΊΠΈ, Ρ…Ρ€Π°Π½Π°, сè имашС ΠΈ Ρ‚Π°ΠΌΡƒ!

ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, Π˜Π½Ρ‚Π΅Π» ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ ΠΊΠ°ΠΌΠ΅Ρ€ΠΈ, Raspberry PI, Neural Compute Stick 2.

Π˜Π·Π±ΠΎΡ€ Π½Π° Π·Π°Π΄Π°Ρ‡Π°

Π•Π΄Π΅Π½ ΠΎΠ΄ Π½Π°Ρ˜Ρ‚Π΅ΡˆΠΊΠΈΡ‚Π΅ Π΄Π΅Π»ΠΎΠ²ΠΈ ΠΎΠ΄ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π·Π° Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½ Π²ΠΎ слободна Ρ„ΠΎΡ€ΠΌΠ° Π΅ ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊ. Π’Π΅Π΄Π½Π°Ρˆ Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° смислимС Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ сè ΡƒΡˆΡ‚Π΅ Π³ΠΎ Π½Π΅ΠΌΠ° Π²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΎΡ‚, бидСјќи Π½Π° огласот ΠΏΠΈΡˆΡƒΠ²Π°ΡˆΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π΄ΠΎΠ±Ρ€Π΅Π΄ΠΎΡ˜Π΄Π΅Π½ΠΎ.

Имајќи Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠΈ сС Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΎΡ‚ Π²ΠΎ ΡΠ΅Π³Π°ΡˆΠ½ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Π΄ΠΎΠ°Ρ“Π°ΠΌΠ΅ Π΄ΠΎ Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΎΠ΄ Π½ΠΈΠ² Ρ€Π΅ΡˆΠ°Π²Π°Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠΈΠΎΡ‚ Π²ΠΈΠ΄. Π—Π³ΠΎΡ€Π° Π½Π° Ρ‚ΠΎΠ°, ΠΌΠ½ΠΎΠ³Ρƒ Π΅ Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС дојдС Π΄ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΎ областа Π½Π° ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΡΠΊΠ°Ρ‚Π° визија ΡˆΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π΅ΡˆΠΈ со помош Π½Π° OpenVINO, ΠΏΠ° Π΄ΡƒΡ€ΠΈ ΠΈ Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС измисли, Ρ‚Π΅ΡˆΠΊΠΎ Π΅ Π΄Π° сС Π½Π°Ρ˜Π΄Π°Ρ‚ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎ Ρ˜Π°Π²Π½ΠΈΠΎΡ‚ Π΄ΠΎΠΌΠ΅Π½. ΠžΠ΄Π»ΡƒΡ‡ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° ΠΊΠΎΠΏΠ°ΠΌΠ΅ Π²ΠΎ Π΄Ρ€ΡƒΠ³Π° насока - ΠΊΠΎΠ½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π³ΠΎΠ²ΠΎΡ€ ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ°. АјдС Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ интСрСсна Π·Π°Π΄Π°Ρ‡Π° Π·Π° ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ Π½Π° Π΅ΠΌΠΎΡ†ΠΈΠΈ ΠΎΠ΄ Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚. ΠœΠΎΡ€Π° Π΄Π° сС ΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° OpenVINO вСќС ΠΈΠΌΠ° ΠΌΠΎΠ΄Π΅Π» кој Π³ΠΈ ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° Π΅ΠΌΠΎΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° личност Π²Ρ€Π· основа Π½Π° Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ Π»ΠΈΡ†Π΅, Π½ΠΎ:

  • ВСорСтски, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС создадС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚Π°ΠΌ кој ќС Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ Π½Π° Π·Π²ΡƒΠΊ ΠΈ Π½Π° слика, ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄Π°Π΄Π΅ Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° точноста.
  • ΠšΠ°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ±ΠΈΡ‡Π½ΠΎ ΠΈΠΌΠ°Π°Ρ‚ тСсСн Π°Π³ΠΎΠ» Π½Π° глСдањС; ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Π° Π΅ повСќС ΠΎΠ΄ Π΅Π΄Π½Π° ΠΊΠ°ΠΌΠ΅Ρ€Π° Π·Π° ΠΏΠΎΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠ° ΠΏΠΎΠ²Ρ€ΡˆΠΈΠ½Π°; Π·Π²ΡƒΠΊΠΎΡ‚ Π½Π΅ΠΌΠ° Ρ‚Π°ΠΊΠ²ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅.

Π”Π° ја Ρ€Π°Π·Π²ΠΈΠ΅ΠΌΠ΅ ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π°: Π΄Π° ја Π·Π΅ΠΌΠ΅ΠΌΠ΅ ΠΈΠ΄Π΅Ρ˜Π°Ρ‚Π° Π·Π° ΠΌΠ°Π»ΠΎΠΏΡ€ΠΎΠ΄Π°ΠΆΠ½ΠΈΠΎΡ‚ сСгмСнт ΠΊΠ°ΠΊΠΎ основа. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ задоволството Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° каситС Π²ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π°Ρ‚Π°. Ако нСкој ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π΅ Π½Π΅Π·Π°Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΠΎΠ΄ услугата ΠΈ ΠΏΠΎΡ‡Π½Π΅ Π΄Π° Π³ΠΎ ΠΊΡ€Π΅Π²Π° ΡΠ²ΠΎΡ˜ΠΎΡ‚ Ρ‚ΠΎΠ½, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ вСднаш Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ°Ρ‚Π΅ администраторот Π·Π° помош.
Π’ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ Π½Π° Ρ‡ΠΎΠ²Π΅Ρ‡ΠΊΠΈ глас, ΠΎΠ²Π° ќС Π½ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° Π³ΠΈ Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π°ΠΌΠ΅ Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈΡ‚Π΅ Π²ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π°Ρ‚Π° ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΈ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΌΠ΅ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° сСкој ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ†. Па, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ќС ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° самитС Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π²ΠΎ ΠΏΡ€ΠΎΠ΄Π°Π²Π½ΠΈΡ†Π°Ρ‚Π°, Π΄Π° сС ΠΎΡ†Π΅Π½ΠΈ атмосфСрата Π²ΠΎ Ρ‚ΠΈΠΌΠΎΡ‚, Π·Π²ΡƒΡ‡ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ!

НиС Π³ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ Π±Π°Ρ€Π°ΡšΠ°Ρ‚Π° Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

  • Мала Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° Ρ†Π΅Π»Π½ΠΈΠΎΡ‚ ΡƒΡ€Π΅Π΄
  • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅
  • Ниска Ρ†Π΅Π½Π°
  • ЛСсна приспособливост

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, Π³ΠΎ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ Raspberry Pi 3 c ΠΊΠ°ΠΊΠΎ Ρ†Π΅Π» ΡƒΡ€Π΅Π΄ Π˜Π½Ρ‚Π΅Π» NCS 2.

ОвдС Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° сС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ Π΅Π΄Π½Π° Π²Π°ΠΆΠ½Π° карактСристика Π½Π° NCS - Π½Π°Ρ˜Π΄ΠΎΠ±Ρ€ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° со стандарднитС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ Π½Π° CNN, Π½ΠΎ Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π» со сопствСни слоСви Π½Π° Π½Π΅Π³ΠΎ, Ρ‚ΠΎΠ³Π°Ρˆ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°Ρ˜Ρ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ.

Има само Π΅Π΄Π½Π° ΠΌΠ°Π»Π° Ρ€Π°Π±ΠΎΡ‚Π°: Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½. ΠžΠ±ΠΈΡ‡Π΅Π½ USB ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½ ќС Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ±Π°Ρ€, Π½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π΄ΠΎΠ±Ρ€ΠΎ Π·Π°Π΅Π΄Π½ΠΎ со RPI. Но, Π΄ΡƒΡ€ΠΈ ΠΈ Ρ‚ΡƒΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ β€žΠ»Π΅ΠΆΠΈ Π²ΠΎ Π±Π»ΠΈΠ·ΠΈΠ½Π°β€œ. Π—Π° снимањС глас, ΠΎΠ΄Π»ΡƒΡ‡ΡƒΠ²Π°ΠΌΠ΅ Π΄Π° ја користимС Ρ‚Π°Π±Π»Π°Ρ‚Π° Voice Bonnet ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΎΡ‚ Google AIY Voice Kit, Π½Π° кој ΠΈΠΌΠ° ΠΆΠΈΡ‡Π΅Π½ стСрСо ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½.

ΠŸΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ Raspbian ΠΎΠ΄ AIY ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΠΈ ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Ρ‚Π΅ Π³ΠΎ Π½Π° Ρ„Π»Π΅Ρˆ-ΡƒΡ€Π΅Π΄, Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π΄Π°Π»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ со помош Π½Π° слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π° (ќС снима Π°ΡƒΠ΄ΠΈΠΎ Π΄ΠΎΠ»Π³ΠΎ 5 сСкунди ΠΈ ќС Π³ΠΎ Π·Π°Ρ‡ΡƒΠ²Π° Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°):

arecord -d 5 -r 16000 test.wav

Π’Π΅Π΄Π½Π°Ρˆ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½ΠΎΡ‚ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ чувствитСлСн ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ Π³ΠΎ Π·Π΅ΠΌΠ° ΡˆΡƒΠΌΠΎΡ‚. Π—Π° Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΎΠ²Π°, ΠΎΠ΄ΠΈΠΌΠ΅ Π²ΠΎ alsamixer, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Capture devices ΠΈ Π½Π°ΠΌΠ°Π»Π΅Ρ‚Π΅ Π³ΠΎ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° Π²Π»Π΅Π·Π½ΠΈΠΎΡ‚ сигнал Π½Π° 50-60%.

OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° 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 Tuple ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ ΠΎΠ΄ класата aiy.leds.Led, ΠΏΡ€Π΅ΠΊΡƒ кој ќС ја Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ Π±ΠΎΡ˜Π°Ρ‚Π°:

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 Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° Raspberry Pi
ΠšΠΎΠΏΡ‡Π΅, ΠΈΠ·Π³ΠΎΡ€ΠΈ!

Π Π°Π±ΠΎΡ‚Π° со глас

ЌС користимС pyaudio Π·Π° снимањС Π½Π° прСносот ΠΎΠ΄ ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½ΠΎΡ‚ ΠΈ webrtcvad Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π±ΡƒΡ‡Π°Π²Π°Ρ‚Π° ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π½Π° гласот. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, ќС создадСмС Ρ€Π΅Π΄ΠΈΡ†Π° Π½Π° која асинхроно ќС Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ ΠΈ отстранувамС гласовни ΠΈΠ·Π²Π°Π΄ΠΎΡ†ΠΈ.

Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ webrtcvad ΠΈΠΌΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° доставСниот Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ - Ρ‚ΠΎΡ˜ ΠΌΠΎΡ€Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π΅Π΄Π½Π°ΠΊΠΎΠ² Π½Π° 10/20/30ms, Π° ΠΎΠ±ΡƒΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π·Π° ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ Π΅ΠΌΠΎΡ†ΠΈΠΈ (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ќС Π΄ΠΎΠ·Π½Π°Π΅ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΡ†Π½Π°) бСшС спровСдСна Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ 48 kHz, ќС ΡΠ½ΠΈΠΌΠ°Ρ˜Ρ‚Π΅ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ° со Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° 48000Γ—20ms/1000Γ—1(ΠΌΠΎΠ½ΠΎ)=960 Π±Π°Ρ˜Ρ‚ΠΈ. Webrtcvad ќС Π²Ρ€Π°Ρ‚ΠΈ Π’ΠΎΡ‡Π½ΠΎ/НСточно Π·Π° сСкоС ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ Π΄Π΅Π»ΠΎΠ²ΠΈ, ΡˆΡ‚ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° присуството ΠΈΠ»ΠΈ отсуството Π½Π° глас Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚.

Π”Π° ја спровСдСмС слСднава Π»ΠΎΠ³ΠΈΠΊΠ°:

  • ЌС Π³ΠΈ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ Π½Π° списокот ΠΎΠ½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ° ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ΠΈΠΌΠ° гласањС; Π°ΠΊΠΎ Π½Π΅ΠΌΠ° глас, Ρ‚ΠΎΠ³Π°Ρˆ ќС Π³ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΠΈΠΌΠ΅ Π±Ρ€ΠΎΡ˜Π°Ρ‡ΠΎΡ‚ Π½Π° ΠΏΡ€Π°Π·Π½ΠΈ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ°.
  • Ако Π±Ρ€ΠΎΡ˜Π°Ρ‡ΠΎΡ‚ Π½Π° ΠΏΡ€Π°Π·Π½ΠΈ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ° Π΅ >=30 (600 ms), Ρ‚ΠΎΠ³Π°Ρˆ ја Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°Ρ‚Π° Π½Π° списокот со Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°Π½ΠΈ ΠΏΠ°Ρ€Ρ‡ΠΈΡšΠ°; Π°ΠΊΠΎ Π΅ >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 = []

Π’Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° Π±Π°Ρ€Π°Ρ‚Π΅ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎ Ρ˜Π°Π²Π½ΠΈΠΎΡ‚ Π΄ΠΎΠΌΠ΅Π½, ΠΎΠ΄Π΅Ρ‚Π΅ Π½Π° github, Google, Π½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° ΡˆΡ‚ΠΎ сС користи. Ова Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Ρ‚Π΅ΠΆΠΎΠΊ Π΄Π΅Π», бидСјќи Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΈ тСстиратС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π²Π»Π΅Π·Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π²ΠΎ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° OpenVINO - IR (срСдно ΠΏΡ€Π΅Ρ‚ΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅). ΠŸΡ€ΠΎΠ±Π°Π²ΠΌΠ΅ ΠΎΠΊΠΎΠ»Ρƒ 5-7 Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° ΠΎΠ΄ github ΠΈ Π°ΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π·Π° ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ Π΅ΠΌΠΎΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΈ вСднаш, Ρ‚ΠΎΠ³Π°Ρˆ со ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅Ρ‚ΠΎ глас Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° Ρ‡Π΅ΠΊΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΠ»Π³ΠΎ - користат послоТСни Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ.

Π‘Π΅ фокусирамС Π½Π° слСдново:

  • Π•ΠΌΠΎΡ†ΠΈΠΈ ΠΎΠ΄ гласот - https://github.com/alexmuhr/Voice_Emotion
    Π Π°Π±ΠΎΡ‚ΠΈ спорСд слСдниот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ: Π°ΡƒΠ΄ΠΈΠΎ сС сСчС Π½Π° пасуси со ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°, Π·Π° сСкој ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ пасуси Π½ΠΈΠ΅ Π³ΠΎ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ MFCC Π° ΠΏΠΎΡ‚ΠΎΠ° доставСтС Π³ΠΈ ΠΊΠ°ΠΊΠΎ Π²Π»Π΅Π·Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π΄ΠΎ CNN
  • ΠŸΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас - https://github.com/linhdvu14/vggvox-speaker-identification
    ОвдС, намСсто MFCC, Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅ со спСктрограм, ΠΏΠΎ FFT Π³ΠΎ Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΠΌΠ΅ сигналот Π΄ΠΎ CNN, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Π½Π° ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ вСкторска прСтстава Π½Π° гласот.

Π‘Π»Π΅Π΄Π½ΠΎ ќС Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΎΠ΄ Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. OpenVINO Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ:

  • ΠžΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Π» зоолошка Π³Ρ€Π°Π΄ΠΈΠ½Π°, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄ ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користат ΠΈ Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄
  • Model Optimzer, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° кој ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Π» ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π°ΠΌΠΊΠΎΠ²Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ (Tensorflow, ONNX ΠΈΡ‚Π½.) Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° срСдно ΠΏΡ€Π΅Ρ‚ΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅, со кој ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ ќС Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌΠ΅
  • Inference Engine Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° стартуватС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎ IR Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π° Intel процСсори, ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ Π±Ρ€ΠΎΡ˜ Ρ‡ΠΈΠΏΠΎΠ²ΠΈ ΠΈ Neural Compute Stick Π°ΠΊΡ†Π΅Π»Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ
  • ΠΠ°Ρ˜Π΅Ρ„ΠΈΠΊΠ°ΡΠ½Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° OpenCV (со ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Inference Engine)
    БСкој ΠΌΠΎΠ΄Π΅Π» Π²ΠΎ IR Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ опишан со Π΄Π²Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ: .xml ΠΈ .bin.
    ΠœΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π°Π°Ρ‚ Π²ΠΎ IR Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΡ€Π΅ΠΊΡƒ Model Optimizer Π½Π° слСдниов Π½Π°Ρ‡ΠΈΠ½:

    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, Π½ΠΎ Π½ΠΈΠ΅ Π½Π΅ ископавмС Ρ‚ΠΎΠ»ΠΊΡƒ Π΄Π°Π»Π΅ΠΊΡƒ ΠΈ Сдноставно ја ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠ²ΠΌΠ΅ Π·Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅.
    Π‘Π»Π΅Π΄Π½ΠΎ, ајдС Π΄Π° сС ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ Π²Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ вСќС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΈΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π» Π²ΠΎ IR Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΡ€Π΅ΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΎΡ‚ DNN Π²ΠΎ OpenCV ΠΈ Π΄Π° Π³ΠΎ прослСдимС Π΄ΠΎ Π½Π΅Π³ΠΎ.

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

    ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° линија Π²ΠΎ овој ΡΠ»ΡƒΡ‡Π°Ρ˜ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΈ прСнасочитС прСсмСткитС Π½Π° Neural Compute Stick, основнитС прСсмСтки сС Π²Ρ€ΡˆΠ°Ρ‚ Π½Π° процСсорот, Π½ΠΎ Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ΠΎΡ‚ со Raspberry Pi ΠΎΠ²Π° Π½Π΅ΠΌΠ° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, ќС Π²ΠΈ Ρ‚Ρ€Π΅Π±Π° стап.

    Π‘Π»Π΅Π΄Π½ΠΎ, Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π΅ слСдна: Π³ΠΎ Π΄Π΅Π»ΠΈΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ Π°ΡƒΠ΄ΠΈΠΎ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ со ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° (Π·Π° нас Π΅ 0.4 с), сСкој ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ†ΠΈ Π³ΠΎ ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π°ΠΌΠ΅ Π²ΠΎ 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 Π·Π° Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ). Π’Π΅ΡœΠ΅ Π½Π΅ΠΌΠ°Π²ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ сС фокусиравмС Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°.

    Π’Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°

    Π’Π°ΠΆΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°: Π·Π΅ΠΌΠ°ΠΌΠ΅ Ρ€ΡƒΡ‚Π΅Ρ€ со нас ΠΎΠ΄ Π΄ΠΎΠΌΠ° ΠΈ ја поставувамС Π½Π°ΡˆΠ°Ρ‚Π° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΡ€Π΅ΠΆΠ°, ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π°Ρ‚ ΡƒΡ€Π΅Π΄ΠΎΡ‚ ΠΈ Π»Π°ΠΏΡ‚ΠΎΠΏΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΊΡƒ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

    Π—Π°Π΄Π½ΠΈΠ½Π°Ρ‚Π° Π΅ ΠΊΠ°Π½Π°Π» Π·Π° ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΎΠ΄ ΠΊΡ€Π°Ρ˜ Π΄ΠΎ ΠΊΡ€Π°Ρ˜ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΡ€Π΅Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΈ Raspberry Pi, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π²Π΅Π±-сокСт (http over tcp ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»).

    ΠŸΡ€Π²Π°Ρ‚Π° Ρ„Π°Π·Π° Π΅ Π΄Π° сС Π΄ΠΎΠ±ΠΈΡ˜Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ΄ ΠΌΠ°Π»ΠΈΠ½Π°, односно ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°Ρ‡ΠΈ спакувани Π²ΠΎ json, ΠΊΠΎΠΈ сС Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΠΏΠ°Ρ‚ ΠΎΠ΄ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΏΠ°Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ статистики Π·Π° Π΅ΠΌΠΎΡ†ΠΈΠΎΠ½Π°Π»Π½Π°Ρ‚Π° ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π° Π½Π° корисникот Π·Π° Ρ‚ΠΎΡ˜ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄. Овој ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠ° сС ΠΈΡΠΏΡ€Π°ΡœΠ° Π΄ΠΎ ΠΏΡ€Π΅Π΄Π½ΠΈΠΎΡ‚ Π΄Π΅Π», кој користи ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π° ΠΈ ΠΏΡ€ΠΈΠΌΠ° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΠ΄ ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π²Π΅Π±-сокСтот. Π¦Π΅Π»ΠΈΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° Π·Π°Π΄Π½ΠΈΠ½Π° Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ Π³ΠΎΠ»Π°Π½Π³; Ρ‚ΠΎΡ˜ Π΅ ΠΈΠ·Π±Ρ€Π°Π½ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π΅ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ Π·Π° асинхрони Π·Π°Π΄Π°Ρ‡ΠΈ, со ΠΊΠΎΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½ΠΈΡ‚Π΅ Π΄ΠΎΠ±Ρ€ΠΎ сС справуваат.
    ΠŸΡ€ΠΈ пристап Π΄ΠΎ ΠΊΡ€Π°Ρ˜Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ°, корисникот сС рСгистрира ΠΈ сС внСсува Π²ΠΎ структурата, ΠΏΠΎΡ‚ΠΎΠ° сС ΠΏΡ€ΠΈΠΌΠ° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΡ€Π°ΠΊΠ°. И корисникот ΠΈ ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° сС внСсуваат Π²ΠΎ Π·Π°Π΅Π΄Π½ΠΈΡ‡ΠΊΠΈ Ρ†Π΅Π½Ρ‚Π°Ρ€, ΠΎΠ΄ кој ΠΏΠΎΡ€Π°ΠΊΠΈΡ‚Π΅ вСќС сС ΠΈΡΠΏΡ€Π°ΡœΠ°Π°Ρ‚ ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ (Π΄ΠΎ ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π΅Π½ΠΈΠΎΡ‚ Ρ„Ρ€ΠΎΠ½Ρ‚), Π° Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ корисникот ја Π·Π°Ρ‚Π²ΠΎΡ€ΠΈ врската (ΠΌΠ°Π»ΠΈΠ½Π° ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π½Π°), Ρ‚ΠΎΠ³Π°Ρˆ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΡƒΠ²Π° ΠΈ Ρ‚ΠΎΡ˜ Π΅ отстранСт ΠΎΠ΄ Ρ…Π°Π±ΠΎΡ‚.

    OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° Raspberry Pi
    Π§Π΅ΠΊΠ°ΠΌΠ΅ врска ΠΎΠ΄ ΠΏΠΎΠ·Π°Π΄ΠΈ

    Front-end Π΅ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° напишана Π²ΠΎ JavaScript со помош Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° React Π·Π° Π΄Π° сС Π·Π°Π±Ρ€Π·Π° ΠΈ поСдностави процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜. Π¦Π΅Π»Ρ‚Π° Π½Π° ΠΎΠ²Π°Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π΅ Π΄Π° Π³ΠΈ Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π΄ΠΎΠ±ΠΈΠ΅Π½ΠΈ со помош Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ ΠΊΠΎΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π½Π° Π·Π°Π΄Π½Π°Ρ‚Π° страна ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° Raspberry Pi. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° ΠΈΠΌΠ° сСкциско Ρ€ΡƒΡ‚ΠΈΡ€Π°ΡšΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ со помош Π½Π° Ρ€Π΅Π°ΠΊΡ‚-Ρ€ΡƒΡ‚Π΅Ρ€, Π½ΠΎ Π³Π»Π°Π²Π½Π°Ρ‚Π° страница ΠΎΠ΄ интСрСс Π΅ Π³Π»Π°Π²Π½Π°Ρ‚Π° страница, ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС ΠΏΡ€ΠΈΠΌΠ° Π²ΠΎ Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΎΠ΄ сСрвСрот ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° WebSocket. Raspberry Pi Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€Π° глас, ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° Π΄Π°Π»ΠΈ ΠΌΡƒ ΠΏΡ€ΠΈΠΏΠ°Ρ“Π° Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° личност ΠΎΠ΄ рСгистрираната Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ ΠΈΡΠΏΡ€Π°ΡœΠ° листа Π½Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚ Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π³ΠΈ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° Π½Π°Ρ˜Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π³ΠΎ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° Π°Π²Π°Ρ‚Π°Ρ€ΠΎΡ‚ Π½Π° личноста која Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π·Π±ΠΎΡ€ΡƒΠ²Π°Π»Π° Π½Π° ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΠ½ΠΎΡ‚, ΠΊΠ°ΠΊΠΎ ΠΈ Π΅ΠΌΠΎΡ†ΠΈΡ˜Π°Ρ‚Π° со која Π³ΠΈ ΠΈΠ·Π³ΠΎΠ²Π°Ρ€Π° Π·Π±ΠΎΡ€ΠΎΠ²ΠΈΡ‚Π΅.

    OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° Raspberry Pi
    ΠŸΠΎΡ‡Π΅Ρ‚Π½Π° страница со Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ°

    Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

    НС бСшС ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС Π·Π°Π²Ρ€ΡˆΠΈ сè ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ бСшС ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ, Сдноставно Π½Π΅ΠΌΠ°Π²ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π³Π»Π°Π²Π½Π°Ρ‚Π° Π½Π°Π΄Π΅ΠΆ бСшС Π²ΠΎ Π΄Π΅ΠΌΠΎΡ‚ΠΎ, Π΄Π΅ΠΊΠ° сè ќС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°. Π’ΠΎ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π±ΠΎΡ€ΡƒΠ²Π°Π° Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° сè, ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π΅ΠΌΠ°Π»Π΅, со ΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ наишлС. Π‘Π»Π΅Π΄Π΅Π½ бСшС Π΄Π΅ΠΌΠΎ-Π΄Π΅Π»ΠΎΡ‚ - СкспСртитС ΡˆΠ΅Ρ‚Π°Π° Π½ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° ΠΏΠΎ случаСн рСдослСд ΠΈ ΠΌΡƒ ΠΏΡ€ΠΈΠΎΡ“Π°Π° Π½Π° сСкој Ρ‚ΠΈΠΌ Π·Π° Π΄Π° Π³ΠΎ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ. И нас Π½ΠΈ поставуваа ΠΏΡ€Π°ΡˆΠ°ΡšΠ°, сСкој си ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π°ΡˆΠ΅, ја ΠΎΡΡ‚Π°Π²ΠΈΡ˜Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Π»Π°ΠΏΡ‚ΠΎΠΏΠΎΡ‚ ΠΈ навистина сè Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°ΡˆΠ΅ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΡˆΠ΅.

    Π”ΠΎΠ·Π²ΠΎΠ»Π΅Ρ‚Π΅ ΠΌΠΈ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠ°ΠΌ Π΄Π΅ΠΊΠ° Π²ΠΊΡƒΠΏΠ½Π°Ρ‚Π° Ρ†Π΅Π½Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ бСшС 150 Π΄ΠΎΠ»Π°Ρ€ΠΈ:

    • Raspberry Pi 3 ~ 35 Π΄ΠΎΠ»Π°Ρ€ΠΈ
    • Google AIY Voice Bonnet (ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π΅ΠΌΠ΅Ρ‚Π΅ такса Π·Π° Π³ΠΎΠ²ΠΎΡ€Π½ΠΈΠΊ) ~ 15$
    • Intel NCS 2 ~ 100 $

    Како Π΄Π° сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅:

    • ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ - ΠΏΠΎΠ±Π°Ρ€Π°Ρ˜Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ тСкстот ΡˆΡ‚ΠΎ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΏΠΎ случаСн ΠΈΠ·Π±ΠΎΡ€
    • Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΡƒΡˆΡ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΌΠΎΠ΄Π΅Π»ΠΈ: ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ΄Ρ€Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ» ΠΈ возраст ΠΏΡ€Π΅ΠΊΡƒ глас
    • ΠžΠ΄Π΄Π΅Π»Π΅Ρ‚Π΅ Π³ΠΈ истоврСмСно Π·Π²ΡƒΡ‡Π½ΠΈΡ‚Π΅ гласови (Π΄ΠΈΡ˜Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°)

    Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡƒΠΌ: https://github.com/vladimirwest/OpenEMO

    OpenVINO Ρ…Π°ΠΊΠ°Ρ‚ΠΎΠ½: ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ глас ΠΈ Π΅ΠΌΠΎΡ†ΠΈΠΈ Π½Π° Raspberry Pi
    Π£ΠΌΠΎΡ€Π½ΠΈ, Π½ΠΎ ΡΡ€Π΅ΡœΠ½ΠΈ смС

    Како Π·Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ, Π±ΠΈ сакал Π΄Π° ΠΈΠΌ сС Π·Π°Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π°ΠΌ Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΈ учСсницитС. ΠœΠ΅Ρ“Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Ρ‚ΠΈΠΌΠΎΠ²ΠΈ, Π»ΠΈΡ‡Π½ΠΎ Π½ΠΈ сС Π΄ΠΎΠΏΠ°Π΄Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° слСдСњС Π½Π° слободнитС ΠΏΠ°Ρ€ΠΊΠΈΠ½Π³ мСста. Π—Π° нас, Ρ‚ΠΎΠ° бСшС ΠΌΠ½ΠΎΠ³Ρƒ ΠΊΡƒΠ» искуство Π½Π° ΠΏΠΎΡ‚ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΎΡ‚ ΠΈ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° сС повСќС ΠΈ повСќС интСрСсни настани ќС сС ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈΡ‚Π΅, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ Π½Π° Ρ‚Π΅ΠΌΠΈ Π·Π° Π²Π΅ΡˆΡ‚Π°Ρ‡ΠΊΠ° ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ†ΠΈΡ˜Π°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€