Part 1 Learning Phase : pre-processing, สร้าง datasets

ลองทำ Machine Learning บนบอร์ด KB32-FT : Part1

งั้นเรามาเริ่มส่วนแรกเลยนะครับ ส่วน learning phase จะเป็นการสร้างเอไอเพื่อที่จะให้เรียนรู้สิ่งที่เราต้องการ ดังนั้นในส่วนนี้ก็จะมีการสร้างชุดข้อมูล (datasets), การเตรียมตัวชุดข้อมูลและAI, การสอน AI (Train) โดยการทำ Word Classification โดย Framework ที่ใช้สร้าง train และ แปลง จะใช้ TensorFlow ส่วน Framework ที่ใช้เขียนโปรแกรมบนบอร์ด KB32-FT จะใช้ Arduino-ESP32 นะครับ

ผมจะใช้เซ็นเซอร์ ไมโครโฟนแบบดิจิตอล ที่มี เอาท์พุต เป็น I2S เบอร์ MSM261S4030H0 เพื่อให้เราได้เสียงที่มีคุณภาพ ซึ่งตัวบอร์ด KB32-FT ที่ใช้ชิป ESP32 นั้นมีโมดูลภายในที่สามารถอ่านเซ็นเซอร์แบบ I2S ได้อยู่แล้วทำให้เราสะดวกมากขึ้น (ไมค์ตัวนี้แบบเอาของบอร์ด CorgiDude มาใช้ใครสนใจซื้อได้จาก LINK )

โดยในการที่จะทำให้ AI รู้จักคำพูดต่างๆ ที่เราพูดนั้น เพื่อให้เป็นการง่าย เราจะช่วยแยก Feature ของแต่ละคำที่เราพูดออกมา โดยใช้การแปลง Fourier transforms แยกองค์ประกอบของความถี่แต่ละเสียงที่เราพูดออกมา และส่ง Feature นี้เข้าไปยัง input ของ neural network (neural network คือโครงสร้างเซลล์สมองของ AI นั้นเอง ) เพื่อให้ AI สามารถเข้าใจรู้จักเสียงแต่ละเสียงได้ครับ

ดังนั้นก่อนอื่นเลยเราจะต้องทำการสร้าง datasets เพื่อที่จะสอน AI ให้รู้จักกับคำต่างๆ โดยผมจะสอนคำว่า หนึ่ง, สอง, สาม, เปิด และปิด โดยผมจะเก็บ datasets องค์ประกอบของเสียงตัวอย่างตัวอย่างละ 30 ถึง 40 ชุดคำ พร้อมบอกด้วยว่าเสียงนั้นคือเสียงอะไร(label) เพื่อใช้สอน(train) และทดสอบความแม่นยำ(validate)ของ AI ก่อนที่จะทำมาใช้จริง

การต่อสาย Jumper สามารถเสียบบนบอร์ดทดลองได้เลย สะดวกมากๆ

ก่อนอื่นเราไปดูตัวอย่าง code ที่ใช้สร้าง datasets กันเลย

โค้ดส่วนนี้จะเป็น การเรียก Library ที่ต้องการใช้งานเข้ามาใช้, การกำหนดค่า Parameter การทำงานต่างๆ รวมถึงลูปการเรียกอ่าน ค่าจาก Sensor Microphone ซื่งลูป นี้ผมจะให้ทำงานบน CPU ตัวที่ 2 แยกกับ CPU หลัก ให้สามารถงานได้อิสระ จาก code การทำงานหลัก

โค้ดส่วนนี้จะเป็นการ initainze โมดูลภายใน USART, I2S, GPIO, จอLCD, ปุ่มกด(ทำงานแบบ Interrupt), FFT ครับ

ส่วนสุดท้ายนี้จะเป็น Code ในส่นที่วงลูปทำงาน โดยโปรแกรมจะรอให้เสียงมีค่าเกินค่า THRESHOLD ที่ผมตั้งไว้ให้มากกว่าเสียง Brackground ในห้องนิดหน่อย ดังนั้นเมื่อ เราพูด โปรแกรมถึงจะเริ่มเก็บเสียง และแปลง FFT เพื่อหาองค์ประกอบของเสียง และแสดงค่า Amplitude ของแต่ละความถี่ออกมาทาง Serial monitor

เท่านี้ก็สามารถเก็บ datasets ของเสียงคำพูดได้แล้ว ต่อไปผมก็จะทำการ เก็บค่า เสียง ที่ละเสียงเพื่อสร้าง File CSV เป็น datasets ที่จะใช้ Train ต่อไปใน Part 2 ครับ

Part 2

GitHub Source Code LINK

ผู้ที่สนใจบอร์ด KB32-FT สามารถดูข้อมูล หรือสั่งซื้อได้ที่ LINK

ขอบคุณครับ

Last updated

Was this helpful?