audio --- Mô-đun Âm thanh¶
Mô-đun audio được dùng để ghi lại các mẫu âm thanh từ microphone. Các mẫu PDM thu được từ microphone sẽ được lọc và giảm tần số xuống thành các mẫu PCM, có thể được truyền tới hàm gọi lại của người dùng hoặc đọc trực tiếp vào một bộ đệm.
Hàm¶
- 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¶
Khởi tạo mô-đun âm thanh. Phải được gọi trước tiên trước khi sử dụng mô-đun âm thanh.
channelslà số kênh âm thanh. Có thể là1hoặc2. Các mẫu âm thanh được xen kẽ khi sử dụng nhiều hơn một kênh. Chụp đa kênh chỉ được hỗ trợ trên các board có nhiều hơn một microphone.frequencylà tần số mẫu PCM tính bằng Hz. Tập hợp các tần số được hỗ trợ phụ thuộc vào cổng/board cụ thể.gain_dblà độ khuếch đại microphone cần áp dụng, tính bằng decibel.highpasslà hệ số bộ lọc thông cao (STM32) hoặc một giá trị boolean bật bộ lọc thông cao (Alif). Bị bỏ qua trên các cổng không triển khai bộ lọc thông cao.sampleslà số mẫu PCM tích lũy cho mỗi lần gọi lại. Nếu đặt thành-1, giá trị sẽ được tính tự động từ hệ số giảm tần và số kênh. Phải là bội số của 16. Có sẵn trên cổng STM32 và Alif.bufferslà số bộ đệm PCM nội bộ được dùng để xếp hàng các mẫu giữa DMA ISR và người dùng. Có sẵn trên cổng Alif và RP2.overflowkiểm soát liệu tràn bộ đệm có gây raRuntimeErrorhay không. Khi làFalse, bộ đệm cũ nhất sẽ bị ghi đè và việc phát trực tuyến tiếp tục. Có sẵn trên cổng Alif và RP2.clkdivghi đè bộ chia xung nhịp PIO được dùng để điều khiển xung nhịp PDM. Khi là0, bộ chia sẽ được tính từ tần số yêu cầu. Có sẵn trên cổng RP2.
- audio.start_streaming(callback: Callable[[bytearray], None] | None) None¶
Bắt đầu thu âm thanh.
callbackđược gọi từ bộ lập lịch với một đối số duy nhất làpcmbufmỗi khi có bộ đệm PCM mới sẵn sàng.pcmbuflà mộtbytearray16-bit có dấu của các mẫu PCM với độ dài được xác định bởi hệ số giảm tần, số kênh và đối sốsamplesđược truyền choaudio.init(). Ở chế độ một kênh, mỗi phần tử là một mẫu 16-bit; ở chế độ hai kênh, các mẫu được xen kẽ theo từng cặp.Trên các cổng hỗ trợ
audio.get_buffer()(Alif và RP2), việc truyền một giá trị không thể gọi (ví dụ:None) sẽ bắt đầu thu mà không có hàm gọi lại, do đó bộ đệm có thể được lấy ra bằngaudio.get_buffer()thay thế.
- audio.get_buffer(timeout: int = 0) bytearray¶
Trả về bộ đệm PCM tiếp theo có sẵn. Chặn cho đến khi có bộ đệm sẵn sàng hoặc đến khi
timeoutmili giây đã trôi qua (0có nghĩa là đợi mãi mãi). Gây raRuntimeErrornếu phát trực tuyến chưa được bật, nếu xảy ra tràn bộ đệm trong khioverflowlàTrue, hoặc nếu đã cài đặt hàm gọi lại phát trực tuyến.Có sẵn trên cổng Alif và RP2.
- audio.read_pdm(buf: bytearray) None¶
Đọc các mẫu PDM thô từ microphone trực tiếp vào
buf.bufphải là mộtarray/bytearraycó kích thước phần tử phù hợp với số kênh (1 byte cho mono, 2 byte cho stereo).Chỉ có sẵn trên cổng STM32 (các board dựa trên SAI).
- audio.samples() int¶
Trả về tổng số mẫu PCM đã thu kể từ lần gọi cuối cùng tới
audio.start_streaming().Chỉ có sẵn trên cổng RP2.
- audio.overflow() bool¶
Trả về
Truenếu đã xảy ra tràn bộ đệm kể từ lần gọi cuối cùng tớiaudio.start_streaming().Chỉ có sẵn trên cổng RP2.