EdigE
← ЛЕНТА

Voicebox FX оставляет между микрофоном и усилителем только биты I²S

Микрофон и динамик остаются физическими концами звуковой цепи, однако между ними можно оставить всего три цифровые линии: тактовый BCLK, выбор слова LRCLK и данные. Такой маршрут избавляет плату от уязвимого участка с малосигнальным аналоговым аудио, где рядом с питанием, дисплеем и радиомодулем приходится бороться с наводками, земляными токами и разводкой AFE.

Voicebox FX собран вокруг Feather RP2350 с 8 МБ PSRAM. Цифровой MEMS-микрофон ICS-43434 подключён по I²S к выводам D5, D6 и D9; I²S-усилитель MAX98357A получает отдельные BCLK, LRCLK и DIN с D10, D11 и SCL. Микрофон формирует последовательный цифровой поток у самого акустического датчика, а MAX98357A принимает поток на входе усилителя и превращает его в мощность для динамика. Для голосового устройства это аккуратный и легко повторяемый аппаратный каркас.

Память вместо сквозного тракта

В прошивке выбран монофонический режим 16 кГц. На проводах от микрофона приходят 32-битные I²S-слоты, однако API захвата сразу приводит данные к 16 битам; микшер и I²S-выход тоже работают с монофоническим 16-битным сигналом. Такой режим соответствует речи и экономит память, хотя для музыкального устройства полоса и разрядность потребовали бы иных решений.

Память вместо сквозного тракта

Граница, которую хорошо видно в коде

Самая существенная деталь скрыта в порядке работы программы. Для захвата выделено 640064 байта: это почти ровно 20 секунд монофонического 16-битного аудио при 16 кГц. При начале записи код останавливает I²S-выход, принимает поток в BytesIO, а после ручной остановки сохраняет содержимое буфера как /recording.wav. Одновременной передачи «микрофон — DSP — динамик» в опубликованной конфигурации нет.

Затем файл запускается через цепочку GranularPitchShift, Freeverb, Echo и Distortion, после чего поступает в audiomixer и I²SOut. Три аналоговых регулятора меняют pitch shift, долю реверберации и затухание эха. Получается диктофон и лупер с отложенной обработкой, где эффекты накладываются на уже записанный фрагмент.

Граница, которую хорошо видно в коде

Именно поэтому Voicebox FX полезен как reference design: он честно раскрывает пины, формат шины, размер буфера и порядок аудиомодулей CircuitPython. Такой исходник позволяет быстро проверить I²S-микрофон, усилитель и запись WAV без собственной DMA-инфраструктуры. Для эффекта вживую потребуется другой режим работы: кольцевые буферы, синхронный захват и вывод, контроль переполнений, измерение задержки и запаса вычислительной мощности. В проекте нет опубликованных данных о latency, загрузке RP2350, пропусках сэмплов, SNR или THD+N, поэтому его нельзя принимать за готовый realtime-процессор.

Показательная инженерная ценность здесь в другом: цифровой звук уже можно протянуть через маленькую самодельную плату понятным маршрутом, а граница между «записать и обработать» и «обрабатывать на лету» становится видна в нескольких строках кода и 640 килобайтах памяти.