ml.apps --- ML Apps

โมดูล ml.apps มีคลาสแอปพลิเคชัน ML ระดับสูงที่สร้างบนพื้นฐานของ ml.Model

คลาส MicroSpeech -- การรู้จำเสียงพูด

อ็อบเจ็กต์ MicroSpeech จดจำคำพูดง่ายๆ โดยใช้โมเดล MicroSpeech จาก TensorFlow Lite for Microcontrollers โดยค่าเริ่มต้นโมเดลจะรู้จำ "Yes" และ "No"

class ml.apps.MicroSpeech(preprocessor: ml.Model = None, micro_speech: ml.Model = None, labels: list[str] = None, **kwargs)

สร้างอ็อบเจ็กต์ MicroSpeech

preprocessor คือ audio preprocessor ml.Model หาก None จะโหลด /rom/audio_preprocessor.tflite

micro_speech คือ speech recognition ml.Model หาก None จะโหลด /rom/micro_speech.tflite

labels คือรายการสตริงป้ายกำกับที่ตรงกับหมวดหมู่เอาต์พุตของโมเดล หาก None ป้ายกำกับจะถูกนำมาจาก micro_speech.labels

อาร์กิวเมนต์คีย์เวิร์ดเพิ่มเติมจะถูกส่งต่อไปยัง audio.init() (โดยอุปกรณ์ต่อพ่วงเสียงจะเริ่มต้นด้วย channels=1, frequency=16000, และ samples=320)

audio_callback(buf: bytes) None

คอลแบ็กการสตรีมเสียงภายใน เพิ่มตัวอย่างใหม่จาก buf เข้าสู่บัฟเฟอร์เสียงแบบ rolling อัปเดต spectrogram โดยรันโมเดล preprocessor บนหน้าต่างล่าสุด และอัปเดตประวัติการทำนายโดยรันโมเดล micro_speech บน spectrogram โดยปกติไม่ควรเรียกโดยตรง

start_audio_streaming() None

ล้าง spectrogram และประวัติการทำนาย จากนั้นเริ่มการสตรีมเสียงโดยใช้ MicroSpeech.audio_callback เป็น callback ไม่ทำอะไรหากกำลังสตรีมอยู่แล้ว

stop_audio_streaming() None

หยุดการสตรีมเสียง

listen(timeout: int = 0, callback: callable = None, threshold: float = 0.65, filter: list[str] = ['Yes', 'No']) tuple[str, numpy.ndarray]

ฟังคำพูดและคืนค่า tuple ของ (label, average_scores) เมื่อตรวจพบป้ายกำกับที่มีคะแนนเฉลี่ยสูงกว่า threshold และอยู่ใน filter เรียก MicroSpeech.start_audio_streaming หากยังไม่ได้สตรีม

timeout คือเวลาสูงสุดในการฟัง เป็นมิลลิวินาที หาก 0 จะฟังไม่หยุดจนกว่าจะรู้จำคำได้ หาก -1 จะทำงานในโหมด non-blocking และคืน (None, average_scores) ทันทีหากไม่รู้จำคำใด โดยยังคงสตรีมเสียงต่อไป สำหรับค่าบวก จะฟังตามเวลาที่กำหนดแล้วคืน (None, average_scores) เมื่อหมดเวลา

callback คือ callable ที่ไม่บังคับ เรียกเป็น callback(label, average_scores) เมื่อรู้จำคำได้แทนที่จะคืนค่า เมื่อใช้ร่วมกับ timeout=0 ช่วยให้รู้จำเสียงต่อเนื่องได้

threshold คือความเชื่อมั่นเฉลี่ยขั้นต่ำที่ต้องการเพื่อยอมรับการรู้จำ

filter คือรายการสตริงป้ายกำกับที่ยอมรับ การรู้จำที่อยู่นอกรายการนี้จะถูกละเว้น

_SLICE_SIZE: int

จำนวนลักษณะเด่นต่อ spectrogram slice (40)

_SLICE_COUNT: int

จำนวน spectrogram slice ที่เก็บไว้ (49)

_SLICE_TIME_MS: int

ช่วงเวลาของ slice หนึ่งในมิลลิวินาที (30)

_AUDIO_FREQUENCY: int

อัตราตัวอย่างเสียง Hz (16000)

_SAMPLES_PER_STEP: int

จำนวนตัวอย่างเสียงต่อขั้น 10 ms (160)

_CATEGORY_COUNT: int

จำนวนหมวดหมู่เอาต์พุต (4)

_AVERAGE_WINDOW_SAMPLES: int

จำนวนเฟรมการทำนายที่เฉลี่ยใน smoothing window (1020 // _SLICE_TIME_MS)