Методом тыка
получилось собрать speex под ESP32-S3. Пытаюсь кодировать синусоиду пока в буфер (массив).
Что делаю: Кодирую фрейм синусоиды (20мс) в speex, из speex декодирую в PCM и вывожу масив в Serial. На выходе не совсем то что хотелось бы видеть, но похоже. Вот пример сжатой и расжатой синусоиды 1 кГц с качеством сжатия 10, частотой дискретизации 8000гц:

Фрейм ни что иное как массив, который можно сохранять в файл.
Звук записывают обычно в два буфера. При заполнении первого буфера его отдают кодировщику с последующей записью в файл/передачей. В это время заполняют второй буфер.
То с чем пока не могу разобраться:
Не могу как либо расшифровать записанные данные в файл формата Speex на ПК.
Для коректного воспроизведения на ПК фреймы нужно не просто писать в файл а в контейнер, например ogg где нужно записывать метаданные о типе файла его свойствах и т.д.
В прикрепленном файле проект для platformio c arduino core. Кодирует синусоиду и выводит в Serial результат.
В файлике littlefs.cpp.txt попытка записи синусоиды в файл speex. После записи поднимается web сервер и можно скачать файл 192.168.ххх.ххх/download и востановленные данные 192.168.ххх.ххх/txt но с полученными файлами я ничего не смог сделать.
drive.google.com
