Поддержка чипов и спецификации хранилища
Перед выбором платы или портированием новой нужно выяснить три вещи: какие чипы поддерживает прошивка, какой аудио-путь и путь слова пробуждения использует каждый чип и какая таблица разделов соответствует объёму флеш-памяти. На этой странице записано только то, что можно подтвердить исходным кодом прошивки и манифестом релиза. Электрические параметры самих чипов смотрите в официальных даташитах Espressif.
1. Поддерживаемые чипы
Числа в таблице взяты из манифеста релиза v2.5.2 (154 каталога плат, 188 вариантов прошивки). Полный список см. в разделе Поддерживаемые платы.
| Чип | Каталоги плат | Варианты прошивки | Движок аудиовхода | Локальное слово пробуждения |
|---|---|---|---|---|
| ESP32-S3 | 114 | 126 | AfeAudioEngine | По умолчанию Wakenet model with AFE, если есть PSRAM; можно выбрать пользовательские слова MultiNet |
| ESP32-P4 | 6 | 27 | AfeAudioEngine | Как у ESP32-S3 |
| ESP32-C3 | 10 | 10 | LiteAudioEngine | Можно выбрать Wakenet model without AFE |
| ESP32-C6 | 10 | 10 | LiteAudioEngine | Как у ESP32-C3 |
| ESP32 | 6 | 7 | LiteAudioEngine | Для Wakenet model without AFE нужна PSRAM |
| ESP32-S31 | 4 | 4 | AfeAudioEngine | Как у ESP32-S3, нужен ESP-IDF 6.1 или новее |
| ESP32-C5 | 4 | 4 | LiteAudioEngine | Как у 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), без двойных разделов OTA | 1 МБ |
8m.csv | ota_0 / ota_1 по 0x2F0000 | 2 МБ |
16m.csv | ota_0 / ota_1 по 0x3F0000 (около 4 МБ) | 8 МБ |
16m_c3.csv | ota_0 / ota_1 по 0x3F0000 (около 4 МБ) | 4000K (ограничено числом доступных страниц mmap) |
32m.csv | ota_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.