audio — מודול אודיו#
המודול audio משמש להקלטת דגימות אודיו ממיקרופון. דגימות PDM שנלכדות מהמיקרופון מסוננות ומדוללות לדגימות PCM שניתן להעביר לפונקציית callback של המשתמש או לקרוא ישירות אל תוך חוצץ (buffer).
פונקציות#
- audio.init(channels: int = 1, frequency: int = 16000, gain_db: int = 24, highpass: float | bool = 0.9883, samples: int = -1, buffers: int = 16, overflow: bool = True, clkdiv: int = 0) None#
מאתחל את מודול האודיו. חייב להיקרא ראשון לפני השימוש במודול האודיו.
channelsהוא מספר ערוצי האודיו. יכול להיות1או2. דגימות האודיו משולבות (interleaved) כאשר נעשה שימוש ביותר מערוץ אחד. לכידה רב-ערוצית נתמכת רק בלוחות עם יותר ממיקרופון אחד.frequencyהוא תדר דגימת ה-PCM ב-Hz. קבוצת התדרים הנתמכים תלויה ב-port/בלוח.gain_dbהוא הגבר (gain) המיקרופון שיש להחיל, ביחידות דציבל.highpassהוא מקדם המסנן מעביר-גבוהים (STM32) או ערך בוליאני המפעיל את המסנן מעביר-גבוהים (Alif). מתעלמים ממנו ב-port שאינו מממש מסנן מעביר-גבוהים.samplesהוא מספר דגימות ה-PCM לצבור בכל callback. אם נקבע ל--1, הערך מחושב אוטומטית מגורם הדילול ומספר הערוצים. חייב להיות כפולה של 16. זמין ב-port של STM32 ושל Alif.buffersהוא מספר חוצצי ה-PCM הפנימיים המשמשים לתור דגימות בין ה-DMA ISR למשתמש. זמין ב-port של Alif ושל RP2.overflowקובע האם גלישת חוצץ (buffer) מעלהRuntimeError. כאשר הערךFalseהחוצץ הישן ביותר נדרס וההזרמה ממשיכה. זמין ב-port של Alif ושל RP2.clkdivעוקף את מחלק שעון ה-PIO המשמש להנעת שעון ה-PDM. כאשר הערך0המחלק מחושב מהתדר המבוקש. זמין ב-port של RP2.
- audio.start_streaming(callback: Callable[[bytearray], None] | None) None#
מתחיל לכידת אודיו.
callbackנקראת מהמתזמן עם ארגומנט יחידpcmbufבכל פעם שחוצץ PCM חדש מוכן.pcmbufהואbytearrayשל דגימות PCM מסוג 16-bit עם סימן, שאורכו נקבע על ידי גורם הדילול, מספר הערוצים והארגומנטsamplesשהועבר אלaudio.init(). במצב חד-ערוצי כל איבר הוא דגימה אחת של 16-bit; במצב דו-ערוצי הדגימות משולבות בזוגות.ב-port שתומכים ב-
audio.get_buffer()(Alif ו-RP2), העברת ערך שאינו ניתן לקריאה כפונקציה (למשלNone) מתחילה לכידה ללא callback כך שניתן לרוקן את החוצצים באמצעותaudio.get_buffer()במקום זאת.
- audio.get_buffer(timeout: int = 0) bytearray#
מחזיר את חוצץ ה-PCM הזמין הבא. חוסם עד שחוצץ מוכן או עד שחלפו
timeoutאלפיות שנייה (0משמעו המתנה לנצח). מעלהRuntimeErrorאם ההזרמה אינה מופעלת, אם אירעה גלישת חוצץ בעודoverflowהואTrue, או אם מותקן callback של הזרמה.זמין ב-port של Alif ושל RP2.
- audio.read_pdm(buf: bytearray) None#
קורא דגימות PDM גולמיות מהמיקרופון ישירות אל תוך
buf.bufחייב להיותarray/bytearrayשגודל האיבר שלו תואם את מספר הערוצים (1 בית למונו, 2 בתים לסטריאו).זמין ב-port של STM32 (לוחות מבוססי SAI) בלבד.
- audio.samples() int#
מחזיר את המספר הכולל של דגימות PCM שנלכדו מאז הקריאה האחרונה אל
audio.start_streaming().זמין ב-port של RP2 בלבד.
- audio.overflow() bool#
מחזיר
Trueאם אירעה גלישת חוצץ מאז הקריאה האחרונה אלaudio.start_streaming().זמין ב-port של RP2 בלבד.