คู่มือการแยกประเภทเสียง

งาน MediaPipe Audio Classifier ช่วยคุณจัดประเภทคลิปเสียงเป็นชุดหมวดหมู่ที่กำหนดไว้ได้ เช่น เพลงกีตาร์ เสียงนกหวีดรถไฟ หรือเพลงนก ระบบจะกำหนดหมวดหมู่ระหว่างการฝึกโมเดล งานนี้ดำเนินการกับข้อมูลเสียงด้วยโมเดลแมชชีนเลิร์นนิง (ML) เป็นคลิปเสียงอิสระหรือสตรีมอย่างต่อเนื่อง และแสดงรายการหมวดหมู่ที่เป็นไปได้ซึ่งจัดอันดับตามคะแนนความน่าจะเป็นจากมากไปน้อย

ลองเลย

เริ่มต้นใช้งาน

เริ่มใช้งานนี้โดยทำตามคำแนะนำในการใช้งานสำหรับแพลตฟอร์มเป้าหมาย คำแนะนำเฉพาะแพลตฟอร์มเหล่านี้จะแนะนำการใช้งานเบื้องต้นของงานนี้ ซึ่งรวมถึงโมเดลที่แนะนำและตัวอย่างโค้ดที่มีตัวเลือกการกำหนดค่าที่แนะนำ

คำแนะนำเฉพาะแพลตฟอร์มเหล่านี้จะอธิบายการติดตั้งใช้งานพื้นฐานของงานนี้ รวมถึงโมเดลที่แนะนำและตัวอย่างโค้ดที่มีตัวเลือกการกำหนดค่าที่แนะนำ

รายละเอียดงาน

ส่วนนี้จะอธิบายความสามารถ อินพุต เอาต์พุต และตัวเลือกการกำหนดค่าของงานนี้

ฟีเจอร์

  • การประมวลผลเสียงอินพุต - การประมวลผลจะรวมถึงการสุ่มเสียงซ้ำ การบัฟเฟอร์ การจัดเฟรม และการเปลี่ยนรูปแบบ Fourier
  • ติดป้ายกำกับภาษาในแผนที่ - ตั้งค่าภาษาที่ใช้สำหรับชื่อที่แสดง
  • เกณฑ์คะแนน - กรองผลลัพธ์ตามคะแนนการคาดการณ์
  • การตรวจหา Top-k - กรองผลลัพธ์การตรวจจับหมายเลข
  • ติดป้ายกำกับรายการที่อนุญาตและรายการที่ปฏิเสธ - ระบุหมวดหมู่ที่ตรวจพบ
ข้อมูลงาน เอาต์พุตของงาน
อินพุตอาจเป็นข้อมูลประเภทใดประเภทหนึ่งดังต่อไปนี้
  • คลิปเสียง
  • สตรีมเสียง
ตัวแยกประเภทเสียงจะแสดงรายการหมวดหมู่ที่มี
  • ดัชนีหมวดหมู่: ดัชนีของหมวดหมู่ในเอาต์พุตโมเดล
  • คะแนน: คะแนนความเชื่อมั่นของหมวดหมู่นี้ ซึ่งโดยมากจะเป็นความน่าจะเป็นใน [0,1]
  • ชื่อหมวดหมู่ (ไม่บังคับ): ชื่อของหมวดหมู่ตามที่ระบุไว้ในข้อมูลเมตาของโมเดล TFLite หากมี
  • ชื่อที่แสดงของหมวดหมู่ (ไม่บังคับ): ชื่อที่แสดงของหมวดหมู่ตามที่ระบุไว้ในข้อมูลเมตาของโมเดล TFLite ในภาษาที่ระบุผ่านตัวเลือกภาษาของชื่อที่แสดง (หากมี)

ตัวเลือกการกำหนดค่า

งานมีตัวเลือกการกำหนดค่าต่อไปนี้

ชื่อตัวเลือก คำอธิบาย ช่วงของค่า ค่าเริ่มต้น
running_mode ตั้งค่าโหมดการทำงาน ตัวแยกประเภทเสียงมี 2 โหมด ดังนี้

AUDIO_CLIPS: โหมดสำหรับเรียกใช้งานเสียงในคลิปเสียงที่อิสระ

AUDIO_Stream: โหมดสำหรับการเรียกใช้งานเสียงในสตรีมเสียง เช่น จากไมโครโฟน ในโหมดนี้ ต้องมีการเรียกใช้ resultsListener เพื่อตั้งค่า Listener เพื่อรับผลการจัดประเภทแบบไม่พร้อมกัน
{AUDIO_CLIPS, AUDIO_STREAM} AUDIO_CLIPS
display_names_locale ตั้งค่าภาษาของป้ายกำกับที่จะใช้กับชื่อที่แสดงซึ่งระบุไว้ในข้อมูลเมตาของโมเดลของงาน หากมี ค่าเริ่มต้นคือ en สำหรับภาษาอังกฤษ คุณเพิ่มป้ายกำกับที่แปลเป็นภาษาท้องถิ่นลงในข้อมูลเมตาของโมเดลที่กำหนดเองได้โดยใช้ TensorFlow Lite Metadata Writer API รหัสภาษา en
max_results ตั้งค่าจำนวนสูงสุดของผลลัพธ์การจัดประเภทที่มีคะแนนสูงสุด หากต้องการแสดงผล หาก < 0 ระบบจะแสดงผลทั้งหมดที่มี ตัวเลขจำนวนบวกใดก็ได้ -1
score_threshold ตั้งค่าเกณฑ์คะแนนการคาดการณ์ที่จะลบล้างเกณฑ์ที่ระบุไว้ในข้อมูลเมตาของโมเดล (หากมี) ผลลัพธ์ที่ต่ำกว่าค่านี้ถูกปฏิเสธ [0.0, 1.0] ไม่ได้ตั้งค่า
category_allowlist ตั้งค่ารายการตัวเลือกของชื่อหมวดหมู่ที่อนุญาต หากไม่ว่างเปล่า ผลลัพธ์การจัดประเภทที่ไม่มีชื่อหมวดหมู่ในชุดนี้จะถูกกรองออก ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก ตัวเลือกนี้ใช้ด้วยกันกับ category_denylist ไม่ได้ และการใช้ทั้ง 2 รายการจะทำให้เกิดข้อผิดพลาด สตริงใดก็ได้ ไม่ได้ตั้งค่า
category_denylist ตั้งค่ารายการตัวเลือกของชื่อหมวดหมู่ที่ไม่ได้รับอนุญาต หากไม่ว่างเปล่า ผลลัพธ์การจัดประเภทซึ่งมีชื่อหมวดหมู่อยู่ในชุดนี้จะถูกกรองออก ระบบจะไม่สนใจชื่อหมวดหมู่ที่ซ้ำกันหรือไม่รู้จัก ตัวเลือกนี้ใช้ด้วยกันกับ category_allowlist ไม่ได้เลย และใช้ทั้ง 2 ผลลัพธ์เกิดข้อผิดพลาด สตริงใดก็ได้ ไม่ได้ตั้งค่า
result_callback ตั้งค่า Listener ผลลัพธ์เพื่อรับผลการจัดประเภทแบบไม่พร้อมกันเมื่อตัวแยกประเภทเสียงอยู่ในโหมดสตรีมเสียง ใช้ได้เมื่อตั้งค่าโหมดการทำงานเป็น AUDIO_STREAM เท่านั้น ไม่มีข้อมูล ไม่ได้ตั้งค่า

รูปแบบ

ตัวแยกประเภทเสียงกำหนดให้ต้องดาวน์โหลดและจัดเก็บโมเดลการจัดประเภทเสียงในไดเรกทอรีโปรเจ็กต์ เริ่มต้นด้วยโมเดลเริ่มต้นที่แนะนำสำหรับแพลตฟอร์มเป้าหมายเมื่อคุณเริ่มพัฒนาด้วยงานนี้ รุ่นอื่นๆ ที่มีอยู่มักมีข้อดีข้อเสียระหว่างประสิทธิภาพ ความแม่นยำ ความละเอียด และข้อกำหนดทรัพยากร และในบางกรณีอาจมีฟีเจอร์เพิ่มเติมรวมอยู่ด้วย

โมเดล Yamnet เป็นตัวแยกประเภทเหตุการณ์เสียงที่ได้รับการฝึกในชุดข้อมูล AudioSet เพื่อคาดการณ์เหตุการณ์เสียงที่กำหนดไว้ในข้อมูล AudioSet ดูข้อมูลเกี่ยวกับเหตุการณ์เสียงที่โมเดลนี้จดจำได้ในรายการป้ายกำกับของโมเดล

ชื่อโมเดล รูปร่างอินพุต ประเภทการหาปริมาณ ฉบับ
YamNet 1 X 15,600 ไม่มี (Float32) ล่าสุด

การเปรียบเทียบงาน

นี่คือการเปรียบเทียบงานสำหรับทั้งไปป์ไลน์ตามโมเดลที่ฝึกล่วงหน้าไว้ข้างต้น ผลของเวลาในการตอบสนองคือเวลาในการตอบสนองโดยเฉลี่ยใน Pixel 6 ที่ใช้ CPU / GPU

ชื่อโมเดล เวลาในการตอบสนองของ CPU เวลาในการตอบสนองของ GPU
YamNet 12.29 มิลลิวินาที -