Mikrokontrolery z NPU do lokalnego rozpoznawania mowy: model akustyczny na STM32N6
Mikrokontroler STM32N6 z zintegrowanym NPU umożliwia realizację modelu akustycznego do rozpoznawania dowolnej mowy w czasie rzeczywistym. Zużycie energii — 0,215 W, PER na dev_clean — 5,3%, inferencja na 500 ms audio trwa 52 ms. Model jest kwantyzowany do int8, działa bez chmury i internetu, idealny dla kompaktowych urządzeń.
Architektura systemu rozpoznawania
System jest podzielony na trzy komponenty dla optymalizacji pamięci i dokładności:
- Model akustyczny: przekształca surowy sygnał audio w strumień fonemów. Moduł zasobożerny, zaimplementowany na NPU STM32N6.
- Dekoder: agreguje fonemy w słowa na podstawie słownika i gramatyki języka.
- Rescoring: koryguje hipotezy z uwzględnieniem kontekstu, zwiększając prawdopodobieństwo poprawnego wyniku.
Zaimplementowano i przetestowano model akustyczny — podstawowy element. Dekoder i rescoring są w opracowaniu, są bardziej kompaktowe i wymagają mniej zasobów.
W trybie demo model przetwarza dowolne frazy w czasie rzeczywistym. Interpreter mapuje fonemy na słowa za pomocą tabeli, wyświetlając surowe fonemy i zinterpretowane słowa. Obecne podejście ogranicza słownik; pełny dekoder z modelem językowym rozszerzy możliwości na dowolne frazy.
Zużycie energii i parametry sprzętowe
Podczas aktywnej inferencji całkowite zużycie — 0,215 W bez optymalizacji:
| Komponent | Zużycie |
|----------------------------|---------|
| NPU + Cortex-M55 | 160 mW |
| Zewnętrzna pamięć (Flash + PSRAM) | 45 mW |
| Zewnętrzne piny MCU | ~10 mW |
| Razem | ~215 mW |
NPU obciążony w 10,4%, Cortex-M55 używany minimalnie do mel-spektrogramu. Możliwe optymalizacje: tryb uśpienia rdzenia, obniżenie taktowania, pełne obciążenie NPU. W scenariuszu wake-word → rozpoznawanie → sleep zużycie w tle jest minimalne, zapewniając długą autonomię.
Mel-spektrogramy z LibriSpeech i nagrania z mikrofonu płytki zachowują struktury mowy mimo szumu. Filtracja szumu — kolejny krok.
Metryki dokładności i wydajność
Model: 8,5 mln parametrów, wyszkolony na LibriSpeech, kwantyzowany do int8.
| Metryka | Wartość |
|----------------------|------------|
| PER (dev_clean) | 5,3% |
| PER (dev_other) | 14,4% |
| Strata przy kwantyzacji (dev_other / dev_clean) | 0,4% / 0,15% |
| Inferencja NPU (500 ms audio) | 52 ms |
| Całkowita latencja | 985 ms |
PER (Phone Error Rate) — błędy na poziomie fonemów. Metryki uzyskane na urządzeniu: zbiór walidacyjny przetworzony przez NPU, wyniki przez UART. Latencja obejmuje 485 ms "okna w przyszłość" do predykcji.
Porównanie z podobnymi rozwiązaniami
| Model | Rozmiar | PER (test_clean) | WER (dev_clean) |
|-------------------------|-----------|------------------|-----------------|
| STM32N6 acoustics | 8,5M | 5,51 | — |
| wav2vec 2.0 Base | 95,04M | 5,74 | 6,43 |
| HuBERT Base | 94,68M | 5,41 | 6,42 |
| QuartzNet 5x5 | 6,7M | — | 5,39 |
Model na STM32N6 osiąga PER 5,51% przy rozmiarze 11 razy mniejszym niż wav2vec/HuBERT. Działa w czasie rzeczywistym na MCU, wykorzystuje 72 fonemy — trudne zadanie. Oczekiwany WER z dekoderem: 16–25% na dev_other przy 8–16M parametrów.
Zasoby i skalowalność
Zajęte: RAM — 18%, NPU — 10,4%. Rezerwa pozwala powiększyć model 4-krotnie, dodać zadania równoległe. Optymalizacje zużycia energii wydłużą autonomię.
W opracowaniu:
- Dekoder fonemowy z probabilistycznym wyborem słów.
- Model językowy do korekty kontekstowej.
- Tłumienie szumu przed NPU.
Zastosowania MCU z NPU
Nie do długiej transkrypcji (wymaga >100 MB), ale przewyższa KWS: rozpoznaje dowolne frazy.
- Inteligentny dom: "Zrób cieplej w salonie" → wyodrębnienie pokoju, parametru.
- Wprowadzanie danych: "Ciśnienie 132" → liczba + kontekst.
- Przemysł: "Prędkość 20%" przy maszynie.
- Medycyna: "Glukoza po jedzeniu" w glukometrze.
- Logistyka: "Półka B12 — 3 pudełka".
- Transport: "Na bazę" bez internetu.
- Zabawki: Dziecięca mowa bez chmury.
- Urządzenia adaptacyjne: Głosowe sterowanie protezami.
Co najważniejsze
- Model akustyczny na STM32N6: PER 5,3% (dev_clean), 0,215 W, czas rzeczywisty.
- Rozmiar 8,5M parametrów, kwantyzacja int8 z minimalnymi stratami.
- Przewyższa KWS: dowolna mowa, nie szablony.
- Skalowalny: RAM 18%, NPU 10,4% obciążenia.
- Nisza: autonomiczne komendy, wprowadzanie danych bez chmury.
— Editorial Team
Brak komentarzy.