audio — Audio-moduuli¶
audio-moduulilla tallennetaan äänen näytteitä mikrofonista. Mikrofonista kaapatut PDM-näytteet suodatetaan ja desimoidaan PCM-näytteiksi, jotka voidaan välittää käyttäjän takaisinkutsulle tai lukea suoraan puskuriin.
Funktiot¶
- 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¶
Alustaa audio-moduulin. Tämä on kutsuttava ensin ennen audio-moduulin käyttöä.
channelson äänikanavien lukumäärä. Voi olla1tai2. Äänen näytteet lomitellaan, kun käytetään useampaa kuin yhtä kanavaa. Monikanavainen kaappaus on tuettu vain korteilla, joissa on useampi kuin yksi mikrofoni.frequencyon PCM-näytteenottotaajuus hertseinä. Tuettujen taajuuksien joukko on portti-/korttikohtainen.gain_dbon mikrofoniin sovellettava vahvistus desibeleinä.highpasson ylipäästösuodattimen kerroin (STM32) tai ylipäästösuodattimen käyttöön ottava totuusarvo (Alif). Jätetään huomiotta porteilla, jotka eivät toteuta ylipäästösuodatinta.sampleson kutakin takaisinkutsua varten kerättävien PCM-näytteiden lukumäärä. Jos arvoksi asetetaan-1, arvo lasketaan automaattisesti desimointikertoimesta ja kanavien lukumäärästä. Sen on oltava 16:n monikerta. Saatavilla STM32- ja Alif-porteilla.bufferson sisäisten PCM-puskureiden lukumäärä, joita käytetään näytteiden jonottamiseen DMA:n ISR:n ja käyttäjän välillä. Saatavilla Alif- ja RP2-porteilla.overflowmäärää, nostaako puskurin ylivuotoRuntimeError-virheen. Kun arvo onFalse, vanhin puskuri kirjoitetaan päälle ja virtaus jatkuu. Saatavilla Alif- ja RP2-porteilla.clkdivohittaa PIO-kellojakajan, jota käytetään PDM-kellon ohjaamiseen. Kun arvo on0, jakaja lasketaan pyydetystä taajuudesta. Saatavilla RP2-portilla.
- audio.start_streaming(callback: Callable[[bytearray], None] | None) None¶
Käynnistää äänen kaappauksen.
callbackkutsutaan ajastimelta yhdellä argumentillapcmbufaina, kun uusi PCM-puskuri on valmis.pcmbufon etumerkillinen 16-bittinen PCM-näytteidenbytearray, jonka pituuden määräävät desimointikerroin, kanavien lukumäärä jaaudio.init()-funktiolle välitettysamples-argumentti. Yksikanavaisessa tilassa kukin alkio on yksi 16-bittinen näyte; kaksikanavaisessa tilassa näytteet lomitellaan pareittain.Porteilla, jotka tukevat
audio.get_buffer()-funktiota (Alif ja RP2), ei-kutsuttavan arvon (esim.None) välittäminen käynnistää kaappauksen ilman takaisinkutsua, jolloin puskurit voidaan tyhjentääaudio.get_buffer()-funktiolla sen sijaan.
- audio.stop_streaming() None¶
Pysäyttää äänen kaappauksen ja poistaa kaikki asennetut takaisinkutsut.
- audio.get_buffer(timeout: int = 0) bytearray¶
Palauttaa seuraavan saatavilla olevan PCM-puskurin. Estää suorituksen, kunnes puskuri on valmis tai kunnes
timeoutmillisekuntia on kulunut (0tarkoittaa odottamista ikuisesti). NostaaRuntimeError-virheen, jos virtausta ei ole otettu käyttöön, jos puskurin ylivuoto on tapahtunutoverflow-arvon ollessaTrue, tai jos virtauksen takaisinkutsu on asennettu.Saatavilla Alif- ja RP2-porteilla.
- audio.read_pdm(buf: bytearray) None¶
Lukee raakoja PDM-näytteitä mikrofonista suoraan
buf-puskuriin.buf-puskurin on oltavaarray/bytearray, jonka alkion koko vastaa kanavien lukumäärää (1 tavu monolle, 2 tavua stereolle).Saatavilla vain STM32-portilla (SAI-pohjaiset kortit).
- audio.samples() int¶
Palauttaa viimeisimmän
audio.start_streaming()-kutsun jälkeen kaapattujen PCM-näytteiden kokonaismäärän.Saatavilla vain RP2-portilla.
- audio.overflow() bool¶
Palauttaa
True, jos puskurin ylivuoto on tapahtunut viimeisimmänaudio.start_streaming()-kutsun jälkeen.Saatavilla vain RP2-portilla.