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.

channels ses kanallarının sayısıdır. 1 veya 2 olabilir. Birden fazla kanal kullanıldığında ses örnekleri iç içe geçirilir. Çok kanallı yakalama yalnızca birden fazla mikrofona sahip kartlarda desteklenir.

frequency Hz cinsinden PCM örnek frekansıdır. Desteklenen frekans kümesi porta/karta özgüdür.

gain_db desibel cinsinden uygulanacak mikrofon kazancıdır.

highpass yü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.

samples her geri çağırma başına biriktirilecek PCM örneklerinin sayısıdır. -1 olarak 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.

overflow bir arabellek taşmasının RuntimeError oluşturup oluşturmayacağını kontrol eder. False olduğunda en eski arabellek üzerine yazılır ve akış devam eder. Alif ve RP2 portlarında kullanılabilir.

clkdiv PDM saatini sürmek için kullanılan PIO saat bölücüsünü geçersiz kılar. 0 olduğ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 bir pcmbuf argümanı ile zamanlayıcıdan çağrılır. pcmbuf, uzunluğu indirgeme faktörü, kanal sayısı ve audio.init() fonksiyonuna iletilen samples argümanı tarafından belirlenen, işaretli 16 bitlik bir PCM örnekleri bytearray nesnesidir. 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ğin None) iletilmesi, yakalamayı geri çağırma olmadan başlatır; böylece arabellekler bunun yerine audio.get_buffer() ile boşaltılabilir.

audio.stop_streaming() None

Ses yakalamayı durdurur ve yüklü herhangi bir geri çağırmayı temizler.

audio.get_buffer(timeout: int = 0) bytearray

Kullanılabilir bir sonraki PCM arabelleğini döndürür. Bir arabellek hazır olana veya timeout milisaniye geçene kadar engeller (0 sonsuza kadar bekle anlamına gelir). Akış etkin değilse, overflow True iken bir arabellek taşması oluştuysa veya bir akış geri çağırması yüklüyse RuntimeError oluşturur.

Alif ve RP2 portlarında kullanılabilir.

audio.read_pdm(buf: bytearray) None

Mikrofondan ham PDM örneklerini doğrudan buf içine okur. buf, eleman boyutu kanal sayısına uyan bir array/bytearray olmalı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ştuysa True döndürür.

Yalnızca RP2 portunda kullanılabilir.