Поддержка чипов и спецификации хранилища

Перед выбором платы или портированием новой нужно выяснить три вещи: какие чипы поддерживает прошивка, какой аудио-путь и путь слова пробуждения использует каждый чип и какая таблица разделов соответствует объёму флеш-памяти. На этой странице записано только то, что можно подтвердить исходным кодом прошивки и манифестом релиза. Электрические параметры самих чипов смотрите в официальных даташитах Espressif.

1. Поддерживаемые чипы

Числа в таблице взяты из манифеста релиза v2.5.2 (154 каталога плат, 188 вариантов прошивки). Полный список см. в разделе Поддерживаемые платы.

ЧипКаталоги платВарианты прошивкиДвижок аудиовходаЛокальное слово пробуждения
ESP32-S3114126AfeAudioEngineПо умолчанию Wakenet model with AFE, если есть PSRAM; можно выбрать пользовательские слова MultiNet
ESP32-P4627AfeAudioEngineКак у ESP32-S3
ESP32-C31010LiteAudioEngineМожно выбрать Wakenet model without AFE
ESP32-C61010LiteAudioEngineКак у ESP32-C3
ESP3267LiteAudioEngineДля Wakenet model without AFE нужна PSRAM
ESP32-S3144AfeAudioEngineКак у ESP32-S3, нужен ESP-IDF 6.1 или новее
ESP32-C544LiteAudioEngineКак у ESP32-C3

Источники: upstream main/audio/README.md (соответствие движков и целевых чипов) и main/Kconfig.projbuild (условия depends on для WAKE_WORD_TYPE).

Различия между двумя движками:

  • AfeAudioEngine: использует один экземпляр FD AFE, общий для обнаружения слова пробуждения и обработки речи на отправке; при включённой обработке аудио даёт эхоподавление (AEC) и VAD.
  • LiteAudioEngine: напрямую выдаёт необработанный моно PCM, без AEC и VAD; слово пробуждения (если настроено) использует отдельный WakeNet.

2. Требования к PSRAM

  • ESP32-S3 / P4 / S31: пользовательские слова пробуждения (MultiNet), слова пробуждения AFE и обработка аудио AFE (USE_AUDIO_PROCESSOR) требуют PSRAM.
  • ESP32: без PSRAM слово пробуждения по умолчанию отключено, диалог запускается кнопкой или внешним модулем, см. Бюджетная версия на ESP32.
  • У пула памяти LVGL графической библиотеки тоже две реализации: с PSRAM и без неё (main/display/lvgl_psram_pool.h, lvgl_no_psram_pool.h).
  • Дополнительные настройки для конфигураций вроде N8R2 (8 МБ флеш, 2 МБ PSRAM) описаны в руководстве по сборке оборудования.

3. Таблицы разделов (v2)

В таблицах разделов v2 помимо разделов приложения есть раздел assets. В нём хранятся модели слов пробуждения, шрифты, эмодзи и фоны чата, подробности см. в руководстве по пользовательским Assets.

ФайлРазделы приложенияassets
4m.csvОдин factory (0x2F0000), без двойных разделов OTA1 МБ
8m.csvota_0 / ota_1 по 0x2F00002 МБ
16m.csvota_0 / ota_1 по 0x3F0000 (около 4 МБ)8 МБ
16m_c3.csvota_0 / ota_1 по 0x3F0000 (около 4 МБ)4000K (ограничено числом доступных страниц mmap)
32m.csvota_0 / ota_1 по 4 МБ16 МБ

В partitions/v1/ сохранена старая раскладка (модели лежат в разделе model, раздела assets нет).

4. Параметры аудио

  • В config.h большинства плат задано AUDIO_INPUT_SAMPLE_RATE 16000 и AUDIO_OUTPUT_SAMPLE_RATE 24000; в кодек на отправке подаётся моно PCM 16 кГц.
  • Длительность кадра Opus составляет 60 мс (OPUS_FRAME_DURATION_MS).
  • Каналы встроенного микрофона по умолчанию объявляются как M (один микрофон) или MR (один микрофон плюс опорный сигнал воспроизведения). Объявление должно совпадать с чередующимся PCM, который возвращает кодек.

5. Среда разработки

Прошивке нужен ESP-IDF v6.0.1 или новее, рекомендуется ветка release/v6.1; матрица релиза v2.5.2 собрана на ESP-IDF 6.1.0. Установка среды описана в разделе Настройка среды ESP-IDF.

Связанные материалы

Источники: main/audio/README.md, main/Kconfig.projbuild и partitions/v2/ в 78/xiaozhi-esp32 v2.5.2.