audio — Audio modul¶
Modul audio koristi se za snimanje zvučnih uzoraka s mikrofona. PDM uzorci snimljeni s mikrofona filtriraju se i decimiraju u PCM uzorke koji se mogu proslijediti korisničkom povratnom pozivu ili izravno učitati u međuspremnik.
Funkcije¶
- 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¶
Inicijalizira audio modul. Mora se pozvati prije korištenja audio modula.
channelsje broj zvučnih kanala. Može biti1ili2. Zvučni uzorci su isprepleteni kada se koristi više od jednog kanala. Višekanalno snimanje podržano je samo na pločama s više od jednog mikrofona.frequencyje frekvencija PCM uzorkovanja u Hz. Skup podržanih frekvencija ovisi o portu/ploči.gain_dbje pojačanje mikrofona koje se primjenjuje, u decibelima.highpassje koeficijent visokopropusnog filtra (STM32) ili logička vrijednost koja omogućuje visokopropusni filtar (Alif). Zanemaruje se na portovima koji ne implementiraju visokopropusni filtar.samplesje broj PCM uzoraka koji se akumuliraju po povratnom pozivu. Ako je postavljen na-1, vrijednost se automatski izračunava iz faktora decimacije i broja kanala. Mora biti višekratnik broja 16. Dostupno na STM32 i Alif portovima.buffersje broj internih PCM međuspremnika koji se koriste za stavljanje uzoraka u red između DMA ISR-a i korisnika. Dostupno na Alif i RP2 portovima.overflowupravlja time hoće li prelijevanje međuspremnika izazvatiRuntimeError. Kada jeFalse, najstariji međuspremnik se prepisuje i strujanje se nastavlja. Dostupno na Alif i RP2 portovima.clkdivnadjačava PIO djelitelj takta koji se koristi za pogon PDM takta. Kada je0, djelitelj se izračunava iz tražene frekvencije. Dostupno na RP2 portu.
- audio.start_streaming(callback: Callable[[bytearray], None] | None) None¶
Pokreće snimanje zvuka.
callbackse poziva iz rasporeda s jednim argumentompcmbufsvaki put kada je novi PCM međuspremnik spreman.pcmbufje predznačeni 16-bitnibytearrayPCM uzoraka čija je duljina određena faktorom decimacije, brojem kanala i argumentomsamplesproslijeđenim funkcijiaudio.init(). U jednokanalnom načinu rada svaki je unos jedan 16-bitni uzorak; u dvokanalnom načinu rada uzorci su isprepleteni u parovima.Na portovima koji podržavaju
audio.get_buffer()(Alif i RP2), prosljeđivanje vrijednosti koja se ne može pozvati (npr.None) pokreće snimanje bez povratnog poziva tako da se međuspremnici mogu prazniti pomoćuaudio.get_buffer().
- audio.get_buffer(timeout: int = 0) bytearray¶
Vraća sljedeći dostupni PCM međuspremnik. Blokira dok međuspremnik ne bude spreman ili dok ne protekne
timeoutmilisekundi (0znači čekati zauvijek). IzazivaRuntimeErrorako strujanje nije omogućeno, ako je došlo do prelijevanja međuspremnika dok jeoverflowTrue, ili ako je instaliran povratni poziv za strujanje.Dostupno na Alif i RP2 portovima.
- audio.read_pdm(buf: bytearray) None¶
Čita sirove PDM uzorke s mikrofona izravno u
buf.bufmora bitiarray/bytearrayčija veličina elementa odgovara broju kanala (1 bajt za mono, 2 bajta za stereo).Dostupno samo na STM32 portu (ploče temeljene na SAI-ju).
- audio.samples() int¶
Vraća ukupan broj PCM uzoraka snimljenih od posljednjeg poziva funkcije
audio.start_streaming().Dostupno samo na RP2 portu.
- audio.overflow() bool¶
Vraća
Trueako je došlo do prelijevanja međuspremnika od posljednjeg poziva funkcijeaudio.start_streaming().Dostupno samo na RP2 portu.