3 хв читання

Inflect-Nano-v2 стиснули до ESP32

ttsesp32edge-ai

В обговоренні розробник повідомив, що стиснув повноцінну TTS-модель Inflect-Nano-v2 до ESP32 і отримав майже 2× реального часу. Це цікаво, оскільки офіційна картка Hugging Face описує модель як локальний англійський text-to-waveform TTS з 3 966 721 параметром, що розгортається, та виходом 24 кГц моно.

Головний трюк не в моделі, а в тому, що з неї викинули

Ключова новина проста: учасник обговорення повідомив, що повноцінну TTS-модель Inflect-Nano-v2 вдалося стиснути під маленьку плату ESP32 і отримати майже 2× реального часу. Станом на 11 серпня 2026 року це виглядає не як офіційний реліз прошивки, а як дуже цікавий інженерний кейс із практики.

У картці моделі Hugging Face для owensong/Inflect-Nano-v2 зазначено, що це complete local English text-to-waveform TTS: 3 966 721 параметр для розгортання, цільовий моно-вихід 24 кГц, генератор сімейства VITS типу "end-to-end". Для мікроконтролера це вже не жарти. ESP32 — це не про розкіш, там кожен зайвий блок швидко перетворюється на біль.

За описом картки, всередині є English phoneme frontend, monotonic alignment, stochastic latent synthesis, residual coupling flow і alias-reduced neural waveform decoder. Також указані компактні налаштування: 128 latent channels, 72 text hidden channels, 3 encoder layers, 2 heads, 384 feed-forward channels, 4 flow coupling blocks, 192 initial decoder channels і upsampling rates 8, 8, 2, 2.

І ось тут фраза про зворотну розробку важливіша, ніж сам факт запуску. Автор обговорення прямо написав, що під час розбору з’ясувалося: можна багато чого викинути. Які саме компоненти видалені, у вихідних даних не розкрито, тому чесніше не фантазувати про конкретний список шарів.

Але інженерний напрямок зрозумілий. У такої моделі є акустична частина, вирівнювання, латентна генерація та декодер хвилі. Якщо мета вузька, наприклад один англійський голос і локальне озвучення коротких фраз, частина загальної гнучкості може бути зайвим податком.

Чому майже 2× реального часу на ESP32 чіпляє

Майже двократний запас реального часу на ESP32 змінює розмову: це вже не просто ледь-ледь запищало, а потенційно придатний локальний TTS-контур. Для IoT і носимих пристроїв різниця величезна, тому що мову можна генерувати без сервера та без мережевої затримки.

Офіційне ONNX-пакування Inflect-Nano-v2 також натякає на зручну точку розрізу: duration.onnx відповідає за tokens to aligned acoustic distribution, decode.onnx за acoustic distribution plus seeded noise to waveform. Такий спліт не доводить готовність до ESP32, але показує, де модель можна пиляти, квантувати або замінювати частинами.

Я б перш за все дивився не на гарне число параметрів, а на пам’ять, типи обчислень і вартість декодера. У TTS часто можна відносно спокійно стиснути текстову частину, але надто груба атака на waveform decoder швидко перетворює мову на кашу.

Цей кейс гарний саме своєю приземленістю. Не черговий величезний генератор у хмарі, а маленька модель, яку почали розбирати викруткою до рівня мікроконтролера. Найцікавіше питання тепер не запуск, а скільки якості залишилося після всієї цієї хірургії.

Ми раніше розбирали схожий випадок із запуском Codex на Raspberry Pi — відсутність архітектурного підходу перетворила демонстрацію на міф. Ця історія про оптимізацію TTS для ESP32 наочно доповнює ту тему і показує, які інженерні рішення дійсно працюють на малопотужному залізі.