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 בלבד.