Если вы пользуетесь голосовыми ассистентами — Алисой, Siri, Google Assistant — ваш голос каждый раз отправляется в облако. Там он распознаётся, и ответ приходит обратно. Работает неплохо, но нужен интернет, есть задержка, и по сути вы передаёте свой голос на чужие серверы. А что на самом устройстве? Здесь пока всё скромно: либо дешёвые чипы, которые знают десяток заученных команд типа «включи свет», либо мощные процессоры, которые быстро расходуют батарею и не подходят для компактных устройств.
Между этими крайностями — пустое место: распознавание произвольной речи прямо на устройстве, без облака, с низким потреблением. Недавно появились микроконтроллеры MCU со встроенным нейроускорителем NPU. Я стал разбираться — может ли такой чип закрыть этот разрыв? Изучил доступные публикации и проекты — готовых решений, которые бы это делали, я не нашёл.
Из чего состоит система
Я реализовал ключевую часть системы распознавания речи на микроконтроллере STM32N6 со встроенным NPU.

Рисунок 1. Разделение системы на акустическую модель, декодер и блок рескоринга.
Подход, который я использовал, разбивает распознавание на три части — это позволяет сэкономить оперативную память и улучшить конечную точность:
Акустическая модель — наиболее ресурсоёмкая часть. Принимает сырой звук с микрофона и превращает его в поток фонем (мельчайших неделимых звуков, образующих человеческую речь).
Декодер — собирает из фонем слова, опираясь на словарь и правила языка.
Рескоринг — перепроверяет результат и выбирает наиболее вероятную фразу с учётом контекста.
Пока я сделал и протестировал именно акустическую модель — это фундамент, без которого остальное не имеет смысла. Декодер и рескоринг компактнее, над ними работаю сейчас.
Демонстрация работы
На видео устройство работает в реальном времени — произносятся произвольные фразы, и система их распознаёт. Для наглядности я написал простой интерпретатор, который переводит фонемы в слова. Внизу экрана — сырые фонемы, как их выдаёт модель. Вверху — слова и числа, полученные из этих фонем.
Важно учитывать: в демо пока используется жёсткое сопоставление фонем со словами — по сути, таблица «фонемы→слово». Это существенно ограничивает возможности. Когда будет готов полноценный фонемный декодер с языковой моделью, точность заметно вырастет, и система сможет распознавать любые слова, а не только заданные в таблице.
Энергопотребление

Рисунок 2. График потребляемой мощности при активной работе NPU.
Здесь, пожалуй, самый приятный результат — энергопотребление. Всё устройство при активном распознавании речи потребляет всего ~0.215 Вт:
Компонент |
Потребление |
|---|---|
NPU + ядро (Cortex-M55) |
160 мВт |
Внешняя память (Flash + PSRAM) |
45 мВт |
Внешние пины микроконтроллера |
~10 мВт |
Итого |
~215 мВт |
И это без какой-либо оптимизации. Я пока не занимался снижением потребления — запустил как есть. Ядро Cortex-M55 сейчас считает только мел-спектрограмму и в работе нейросети не участвует, поэтому его можно переводить в спящий режим или снижать частоту. А NPU загружен на 10.4% — тоже есть куда оптимизировать.
В реальном сценарии (проснулся по ключевому слову → распознал → заснул) фоновое потребление будет минимальным. От батареи такое устройство сможет работать долго.
Сигнал на входе модели: датасет и микрофон

Рисунок 3. Мел-спектрограмма фрагмента речи из датасета LibriSpeech.

Рисунок 4. Мел-спектрограмма того же фрагмента, записанного микрофоном устройства.
На рисунке 3 — мел-спектрограмма из LibriSpeech (датасет, на котором обучалась модель), на рисунке 4 — тот же фрагмент, но записанный микрофоном отладочной платы. Запись воспроизводилась через динамик телефона. Тем не менее, основные структуры речи сохранены, и модель получает вполне рабочий сигнал. Шума на реальной записи больше — пока никакой фильтрации перед подачей в нейросеть не применяется. Шумоподавление — один из ближайших шагов.
На что способна модель - результаты точности
Метрика |
Значение |
|---|---|
Размер модели |
8.5 млн параметров |
PER (dev_clean) |
5.3% |
PER (dev_other) |
14.4% |
Потеря точности при квантовании |
0.4% (dev_other) / 0.15% (dev_clean) |
Время инференса NPU |
52 мс на 500 мс аудио |
Итоговая Латентность |
985 мс |
Где: dev_clean — более чистые валидационные записи LibriSpeech, dev_other — более сложные и шумные записи, в том числе с акцентами. Соотношение 2,5 ожидаемо и коррелирует с опубликованными результатами других моделей.
Качество акустической модели измеряется метрикой PER (Phone Error Rate) — это доля ошибок в распознанных фонемах. Чем ниже — тем лучше модель «слышит» звуки, из которых потом декодер собирает слова.
Обучение проводилось на полном LibriSpeech, затем модель была квантована до int8 — потеря точности минимальная. Цифры в таблице — не с компьютера, а с самого устройства: весь валидационный датасет был прогнан через NPU, результаты забирались по UART и метрика рассчитывалась на ПК. Это реальные числа, полученные на целевом железе.
Про задержку: 985 мс — это полная латентность, из которых 485 мс занимает «окно в будущее» (модель подглядывает вперёд, чтобы точнее предсказывать фонемы).
Сравнение с другими решениями
Сравнивать напрямую сложно: у меня метрика PER (ошибки на уровне фонем), а в большинстве статей приводят WER (ошибки на уровне слов). WER зависит не только от акустики, но и от декодера и языковой модели — так что это разные вещи. Но для общего понимания я собрал результаты моделей похожего и большего размера:
Модель |
Размер |
PER (test_clean) |
WER (dev_clean) |
WER (dev_other) |
WER (test_clean) |
|---|---|---|---|---|---|
STM32N6 NPU acoustics model |
8.5M |
5.51 |
— |
— |
— |
wav2vec 2.0 Base |
95.04M |
5.74 |
— |
— |
6.43 |
wav2vec |
32.54M |
31.58 |
— |
— |
15.86 |
HuBERT Base |
94.68M |
5.41 |
— |
— |
6.42 |
QuartzNet 5x5 |
6.7M |
— |
5.39 |
15.69 |
7.53 |
QuartzNet 10x5 |
12.8M |
— |
4.14 |
12.33 |
— |
Что стоит отметить: при 8.5M параметров модель показывает PER 5.51% на test_clean. Это сопоставимо с wav2vec 2.0 Base (5.74%) и HuBERT Base (5.41%) — при том что они в 11 раз больше. И ни одна из них не работает на микроконтроллере. Данная модель — единственная в этой таблице, которая целиком выполняется на NPU в реальном времени.
Точность указана для расширенного набора фонем из 72 символов, что является более сложной задачей по сравнению со стандартными наборами из 39-44 фонем.
Планируемые результаты с декодером: при добавлении фонемного декодера ожидаемая точность WER ~16-25% на сложном датасете LibriSpeech dev_other при итоговом размере системы около 8-16M параметров.
Потенциал и запас роста

Рисунок 5. Текущая загрузка ресурсов MCU RAM и доступный запас для масштабирования модели.
По сути, я пока использую малую часть возможностей этого чипа.
RAM занята на 18%. В ней размещены только параметры активации — значит, модель можно увеличить примерно в четыре раза, не меняя железо.
NPU загружен на 10.4%. Вычислительный запас огромный — можно ставить модель посложнее или гонять параллельные задачи.
Энергопотребление пока не оптимизировалось. Текущие ~0.2 Вт — это с ядром на полной частоте и без спящих режимов. Есть значительный запас для снижения.
Сейчас я работаю над фонемным декодером и языковой моделью. Декодер будет видеть вероятности всех фонем на каждом шаге и выбирать наиболее вероятные слова — это должно заметно поднять точность.
Также в планах — фильтрация шума перед нейросетью. Пока она отсутствует, и в шумных условиях модели приходится работать с «грязным» сигналом.
Где MCU с NPU может заменить облако
Стоит сразу обозначить границы: это не замена Siri или Алисе. Диктовать длинные тексты в микроконтроллер не получится — для этого нужны модели от 100 МБ, которые на такой платформе просто не поместятся.
Но вот что система уже умеет и чего не умеет классический KWS (keyword spotting): она распознаёт произвольные слова и фразы. Не нужно заучивать команды. Можно сказать «сделай потеплее», «прибавь градусов пять» или «температуру вверх» — и всё это будет интерпретировано как одно действие. Обычный KWS так не может: он ждёт точного совпадения с шаблоном.
Ниша — голосовые команды, короткие сообщения и ввод данных голосом, на устройстве, без интернета. Вот где я вижу применение:
Умный дом без облака. Управление светом, климатом, техникой — но не заученными командами, а нормальной речью. «Сделай в зале поуютнее», «на кухне слишком ярко», «в детской чуть потеплее» — система разбирает фразу и понимает, что вы хотите, в какой комнате и какой параметр менять. И ни одно слово не уходит за пределы дома.
Голосовой ввод данных — показания счётчиков, результаты измерений, коды. Можно говорить как удобно: «давление сто тридцать два», «на манометре сто тридцать два» — система извлечёт число. Когда оператор работает в перчатках или руки заняты — это существенно упрощает процесс.
Промышленное оборудование. Здесь не просто «старт/стоп» — а команды с параметрами: «подать заготовку на позицию три», «скорость двадцать процентов». Оператор не отходит к панели, а управляет голосом прямо у станка.
Медицинские устройства. Тонометры, глюкометры, браслеты. Пациент может проговорить контекст: «после еды», «утром натощак». Это проще, чем тыкать кнопки, и смартфон рядом не нужен.
Склад и логистика. Сотрудник с занятыми руками диктует в гарнитуру: «на полке Б двенадцать — три коробки», «это брак, убери». Устройство разбирает фразу и извлекает ячейку, количество, действие.
Транспорт и спецтехника — там, где интернета нет: в поле, на стройке, в шахте. Водитель говорит естественным языком: «поехали на базу», «переключи на экономный». Не нужно вспоминать точную команду из инструкции.
Детские игрушки и образовательные устройства. Робот, который понимает не десять фраз, а свободную детскую речь — имена, числа, цвета. Без подписок, без Wi-Fi, без передачи голоса ребёнка куда-то на серверы.
Устройства для людей с ограниченными возможностями. Управление коляской, протезом голосом. «Поедем вперёд», «немного левее», «останови» — работает так же, как формальные «движение вперёд», «стоп». Здесь особенно важно, что устройство автономно и обеспечивает длительную работу от аккумулятора.
Заключение: так смогут ли заменить?
На текущий момент работает акустическая модель, которая распознаёт фонемы произвольной речи на микроконтроллере — в реальном времени, без интернета, потребляя ~0.2 Вт. Для диктовки текстов она не подойдёт, но для голосовых команд, ввода данных и управления устройствами — вполне достаточна. Там, где облако избыточно, а KWS слишком примитивен, микроконтроллер выигрывает ещё и по цене: чип дешевле микропроцессора, потребление ниже в разы, а разработка проще — не нужна тяжёлая аппаратная платформа и сложный программный стек.
Дальше я планирую реализовать фонемный декодер и языковую модель — чтобы из фонем получались нормальные слова и фразы. Плюс, оптимизировать потребление и добавить шумоподавление. С каждым из этих шагов MCU с NPU будут отбирать у облака всё больше задач, где важны автономность, приватность и работа без интернета.
Ресурсы
Комментарии (17)

alexey_lukyanchyk
12.04.2026 05:34Нейронка в 8.5 М - вот она настоящая инженерия, а не вайб кодинг калькулятора на пол гигабайта

LAutour
12.04.2026 05:34Недавно появились микроконтроллеры MCU со встроенным нейроускорителем NPU
Точно не недавно. С инете можно найти упоминания о китайских микроконтроллерах (именно микроконтроллерах, а не микропроцессорах) с NPU на как минимум с 2020 года. Например Kendryte.

ydss Автор
12.04.2026 05:34Если вы про Kendryte K210, то сам производитель называет его SoC, и это логично: два 64-бит RISC-V ядра и KPU для CNN - это уже не “классический микроконтроллер”, а AI SoC с MCU подобным сценарием применения. STM32N6 тоже размывает границу, но он всё же построен на Cortex-M55, и сама ST позиционирует его как MCU со встроенным NPU.

Vitalis83
12.04.2026 05:34А нельзя просто смарт старый использовать? Есть какие то модели чтоб на смарт влезли?

vanxant
12.04.2026 05:34Гугол как раз зарелизил модель гемма-4, и у неё есть урезанная версия для запуска на бюджетных смартфонах. Она не только распознавать будет, но ещё и отвечать... С задержкой порядка минуты

ydss Автор
12.04.2026 05:34Ключевое отличие здесь в том, что это всё ещё довольно тяжёлые модели, пусть и ужатые, и они рассчитаны на смартфоны с нормальным SoC и достаточным объёмом памяти.
В моём случае речь идёт совсем о другом классе устройств, а именно о микроконтроллерах с жёсткими ограничениями по памяти, энергопотреблению и стоимости. Там даже задержка в одну секунду уже критична, не говоря уже о минуте.
Плюс есть важный момент: обработка идёт в реальном времени прямо на устройстве, без накопления данных и долгого ответа.

Astroscope
12.04.2026 05:34Без подписок, без Wi-Fi, без передачи голоса ребёнка куда-то на серверы.
Не взлетит. Производитель хочет продать вам игрушку за полную розничную стоимость, а потом весь срок службы игрушки доить подпиской и собирая персональные данные для их продажи третьим лицам или, хотя бы, в надежде их когда-то продать. Автономное, неинтернетозависимое, уходит из ассортимента электронной продукции потому, что все хотят не просто продать вам какое-то изделие, которое прослужит много лет и не даст повод покупать новое взамен, а продать вам терминал для выкачки пусть небольших, но регулярно поступающих ваших же денег за подписку.

ydss Автор
12.04.2026 05:34Вы подменяет тему.
Статья не про то, отменят ли компании подписки, а про то, можно ли технически реализовать распознавание речи на микроконтроллере с NPU. Ответ: в ряде сценариев уже становится можно.То, что облачные решения выгоднее части бизнеса, не означает, что автономные решения «не взлетят». У них просто другой рынок: приватные, офлайн и энергоэффективные устройства.

Astroscope
12.04.2026 05:34Вы подменяет тему.
Не согласен. Подмена темы - эффективный демагогический прием, когда подмена осуществляется скрытно, потому что именно на самой подмене и строятся будущие, уже логические, легко проверяемые, конструкции. Я же открыто увожу тему в сторону, не подменяя (скрытно) и не противопоставляя (более явно), а именно что открыто меняю тему - на в чем-то близкую, но очевидно и нескрываемо другую.
Статья не про то, отменят ли компании подписки, а про то, можно ли технически реализовать распознавание речи на микроконтроллере с NPU. Ответ: в ряде сценариев уже становится можно.
Верно. Я этот тезис не опровергаю. Наоборот, статья очень интересна по своей основной теме.
То, что облачные решения выгоднее части бизнеса, не означает, что автономные решения «не взлетят». У них просто другой рынок: приватные, офлайн и энергоэффективные устройства.
Давление маркетинга на инженерию трудно игнорировать - именно в этом мой тезис. А так да, конечно не означает.

kostoms
12.04.2026 05:34Стоит сразу обозначить границы: это не замена Siri или Алисе.
Выглядит как раз как логичная терминальная часть для устройств типа Siri: получила wake word - начинает стримить в большого брата фонемы. И запасные ресурсы тоже пригодятся, чтобы аудиовизуализировать ответ большого брата пользователю.

sav13
12.04.2026 05:34А чем это лучше распозновалки на локальном сервере умного дома?
В Том же HA уже все есть для этого

ydss Автор
12.04.2026 05:34Тут скорее не про лучше, чем HA, а просто немного про другой сценарий.
В Home Assistant это действительно уже можно сделать, но обычно для этого всё равно нужен отдельный сервер, мини-ПК или что-то сопоставимое, что постоянно включено и потребляет свои 5-20 ватт. А здесь идея в другом: чтобы распознавание работало прямо на самом устройстве, вообще без отдельного сервера - ни облачного, ни локального.
Плюс вопрос цены. Одно дело - держать под это отдельную машину, и совсем другое - когда сама функция живёт прямо в дешёвом железе. Если такие решения станут распространёнными, голос можно будет добавлять даже в недорогие устройства, где ставить Home Assistant-сервер просто не имеет особого смысла.
То есть это не замена HA, а скорее другой уровень: не один умный домовой сервер на всё, а много маленьких автономных устройств, каждое со своей локальной логикой.

Affdey
12.04.2026 05:34Очень здорово! Тема интересная и мне близка, я делал распознавание голоса лет 12 назад, но без НС. Вы правы, важен первый блок - сам перевод звука в вероятности фонем. Можете написать подробности решения проблем разной длительности и разной высоты для одинаковых фонем (при разном произношении)? Вообще, какая подробность спектра, по скольким линиям в спектре производится поиск фонемы? Если это НС, то сколько вы потратили времени на заполнение её образцами своего голоса и обучение?

ydss Автор
12.04.2026 05:34Спасибо
Модель обучалась с помощью CTC. Это как раз удобно для речи, потому что не нужно вручную размечать, какой фонеме соответствует каждый момент времени: на вход подаётся аудио, на выходе - целевая последовательность фонем, а CTC сама учит модель выравнивать одно с другим во времени. К сожалению, я не смогу объяснить это в комментариях, так как это довольно сложная тема.
Разная высота голоса, тембр и манера произношения учитываются не поиском по нескольким фиксированным линиям спектра, а всей нейросетью целиком - она анализирует спектральный образ во времени. То есть фонема у меня определяется не по отдельным «линиям», а по совокупности признаков на последовательности кадров.
На своём голосе я модель не обучал. Она обучалась на LibriSpeech, то есть на большом многоголосом датасете.
graff59
Круто! EDGE AI - это будущее в электронике.