ml.apps — יישומי ML

המודול ml.apps מכיל מחלקות יישומי ML ברמה גבוהה הבנויות על גבי ml.Model.

class 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 הוא ה-ml.Model של עיבוד-המקדים של השמע. אם None, נטען /rom/audio_preprocessor.tflite.

micro_speech הוא ה-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

פונקציית callback פנימית להזרמת שמע. מצרפת דגימות חדשות מ-buf אל חוצץ השמע המתגלגל, מעדכנת את הספקטרוגרמה על ידי הרצת מודל ה-preprocessor על החלון העדכני ביותר, ומעדכנת את היסטוריית התחזיות על ידי הרצת מודל ה-micro_speech על הספקטרוגרמה. בדרך כלל אינה נקראת ישירות.

start_audio_streaming() None

מנקה את הספקטרוגרמה ואת היסטוריית התחזיות, ואז מתחיל הזרמת שמע עם 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, פועל במצב לא-חוסם ומחזיר מיד (None, average_scores) אם לא זוהתה מילה; הזרמת השמע נשארת פעילה. עבור כל ערך חיובי, מאזין למשך כמות זו של מילישניות ואז מחזיר (None, average_scores) בתום פרק הזמן.

callback הוא callable אופציונלי המופעל כ-callback(label, average_scores) כאשר מזוהה מילה במקום להחזיר. בשילוב עם timeout=0, מאפשר זיהוי רציף.

threshold הוא הביטחון הממוצע המינימלי הנדרש כדי לקבל זיהוי.

filter היא רשימת מחרוזות התוויות לקבלה. זיהויים מחוץ לרשימה זו מתעלמים מהם.

_SLICE_SIZE: int

מספר המאפיינים לכל פרוסת ספקטרוגרמה (40).

_SLICE_COUNT: int

מספר פרוסות הספקטרוגרמה המאוחסנות (49).

_SLICE_TIME_MS: int

טווח הזמן של פרוסה אחת במילישניות (30).

_AUDIO_FREQUENCY: int

קצב דגימת השמע ב-Hz (16000).

_SAMPLES_PER_STEP: int

דגימות שמע לכל צעד של 10 ms (160).

_CATEGORY_COUNT: int

מספר קטגוריות הפלט (4).

_AVERAGE_WINDOW_SAMPLES: int

מספר פריימי התחזית הממוצעים על פני חלון ההחלקה (1020 // _SLICE_TIME_MS).