audio — Audio Modülü¶
audio modülü, bir mikrofondan ses örnekleri kaydetmek için kullanılır. Mikrofondan yakalanan PDM örnekleri filtrelenir ve bir kullanıcı geri çağırmasına (callback) iletilebilen veya doğrudan bir arabelleğe okunabilen PCM örneklerine indirgenir.
Fonksiyonlar¶
- 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¶
Audio modülünü başlatır. Audio modülünü kullanmadan önce ilk olarak çağrılmalıdır.
channelsses kanallarının sayısıdır.1veya2olabilir. Birden fazla kanal kullanıldığında ses örnekleri iç içe geçirilir. Çok kanallı yakalama yalnızca birden fazla mikrofona sahip kartlarda desteklenir.frequencyHz cinsinden PCM örnek frekansıdır. Desteklenen frekans kümesi porta/karta özgüdür.gain_dbdesibel cinsinden uygulanacak mikrofon kazancıdır.highpassyüksek geçiren filtre katsayısıdır (STM32) veya yüksek geçiren filtreyi etkinleştiren bir boole değeridir (Alif). Yüksek geçiren filtre uygulamayan portlarda yok sayılır.samplesher geri çağırma başına biriktirilecek PCM örneklerinin sayısıdır.-1olarak ayarlanırsa değer, indirgeme faktöründen ve kanal sayısından otomatik olarak hesaplanır. 16’nın katı olmalıdır. STM32 ve Alif portlarında kullanılabilir.buffersörnekleri DMA ISR ile kullanıcı arasında kuyruğa almak için kullanılan dahili PCM arabelleklerinin sayısıdır. Alif ve RP2 portlarında kullanılabilir.overflowbir arabellek taşmasınınRuntimeErroroluşturup oluşturmayacağını kontrol eder.Falseolduğunda en eski arabellek üzerine yazılır ve akış devam eder. Alif ve RP2 portlarında kullanılabilir.clkdivPDM saatini sürmek için kullanılan PIO saat bölücüsünü geçersiz kılar.0olduğunda bölücü, istenen frekanstan hesaplanır. RP2 portunda kullanılabilir.
- audio.start_streaming(callback: Callable[[bytearray], None] | None) None¶
Ses yakalamayı başlatır.
callback, her yeni PCM arabelleği hazır olduğunda tek birpcmbufargümanı ile zamanlayıcıdan çağrılır.pcmbuf, uzunluğu indirgeme faktörü, kanal sayısı veaudio.init()fonksiyonuna iletilensamplesargümanı tarafından belirlenen, işaretli 16 bitlik bir PCM örnekleribytearraynesnesidir. Tek kanallı modda her giriş bir 16 bitlik örnektir; çift kanallı modda örnekler çiftler halinde iç içe geçirilir.audio.get_buffer()fonksiyonunu destekleyen portlarda (Alif ve RP2), çağrılabilir olmayan bir değerin (örneğinNone) iletilmesi, yakalamayı geri çağırma olmadan başlatır; böylece arabellekler bunun yerineaudio.get_buffer()ile boşaltılabilir.
- audio.get_buffer(timeout: int = 0) bytearray¶
Kullanılabilir bir sonraki PCM arabelleğini döndürür. Bir arabellek hazır olana veya
timeoutmilisaniye geçene kadar engeller (0sonsuza kadar bekle anlamına gelir). Akış etkin değilse,overflowTrueiken bir arabellek taşması oluştuysa veya bir akış geri çağırması yüklüyseRuntimeErroroluşturur.Alif ve RP2 portlarında kullanılabilir.
- audio.read_pdm(buf: bytearray) None¶
Mikrofondan ham PDM örneklerini doğrudan
bufiçine okur.buf, eleman boyutu kanal sayısına uyan birarray/bytearrayolmalıdır (mono için 1 bayt, stereo için 2 bayt).Yalnızca STM32 portunda (SAI tabanlı kartlar) kullanılabilir.
- audio.samples() int¶
audio.start_streaming()fonksiyonuna yapılan son çağrıdan bu yana yakalanan toplam PCM örneği sayısını döndürür.Yalnızca RP2 portunda kullanılabilir.
- audio.overflow() bool¶
audio.start_streaming()fonksiyonuna yapılan son çağrıdan bu yana bir arabellek taşması oluştuysaTruedöndürür.Yalnızca RP2 portunda kullanılabilir.