Вот для Speex.
Узкополосный режим:
CODE
Code (inc. data) RO Data RW Data ZI Data Debug
13024 248 22632 20 6588 348904 Grand Totals
13024 248 22632 20 6588 348904 ELF Image Totals
13024 248 22632 20 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 35656 ( 34.82kB)
Total RW Size (RW Data + ZI Data) 6608 ( 6.45kB)
Total ROM Size (Code + RO Data + RW Data) 35676 ( 34.84kB)
Ширикополосный режим(звук сочнее и приятней):
CODE
Code (inc. data) RO Data RW Data ZI Data Debug
16132 294 35320 20 7236 369915 Grand Totals
16132 294 35320 20 7236 369915 ELF Image Totals
16132 294 35320 20 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 51452 ( 50.25kB)
Total RW Size (RW Data + ZI Data) 7256 ( 7.09kB)
Total ROM Size (Code + RO Data + RW Data) 51472 ( 50.27kB)
В RO data уже включена звуковая демка длиной 16 секунд.
Это собрано под отладку VL discovery(32F100, 24МГц). На PA4 через кондёр пару мкф вешаем наушник и слушаем речь ))
Но буфер у ЦАПа не очень мощный, поэтому лучше добавить где-то 100 Ом, так меньше искажений.
В main.h - настройки декодера:
SND_8KHz, SND_16KHz - режим 8/16К
ENCODED_FRAME_SIZE - скорость потока под выбранное качество.
play_message() - принимает указатель на звуковой массив и играет его. Здесь вроде не так запутанно как в Vorbis.
Декодер требует кучу не меньше 5,5 кбайт.
Ну собственно это проект по мотивам аппноута ST(диктофон), его один человек перетащил на VLdiscovery, я вырезал лишние режимы для экономии памяти.
PCM WAV кодируются в заголовки с помощью утилиты от Energy Micro(тоже есть аппноут).
Проект брать здесь:
https://yadi.sk/d/_8sxQCQhdM9C2