Если вы пользуетесь голосовыми ассистентами — Алисой, 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)


  1. graff59
    12.04.2026 05:34

    Круто! EDGE AI - это будущее в электронике.


  1. alexey_lukyanchyk
    12.04.2026 05:34

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


  1. LAutour
    12.04.2026 05:34

    Недавно появились микроконтроллеры MCU со встроенным нейроускорителем NPU

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


    1. ydss Автор
      12.04.2026 05:34

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


  1. Vitalis83
    12.04.2026 05:34

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


    1. ydss Автор
      12.04.2026 05:34

      Под "смартом" вы имеете в виду старый смартфон?


    1. vanxant
      12.04.2026 05:34

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


      1. ydss Автор
        12.04.2026 05:34

        Ключевое отличие здесь в том, что это всё ещё довольно тяжёлые модели, пусть и ужатые, и они рассчитаны на смартфоны с нормальным SoC и достаточным объёмом памяти.

        В моём случае речь идёт совсем о другом классе устройств, а именно о микроконтроллерах с жёсткими ограничениями по памяти, энергопотреблению и стоимости. Там даже задержка в одну секунду уже критична, не говоря уже о минуте.

        Плюс есть важный момент: обработка идёт в реальном времени прямо на устройстве, без накопления данных и долгого ответа.


  1. Astroscope
    12.04.2026 05:34

    Без подписок, без Wi-Fi, без передачи голоса ребёнка куда-то на серверы.

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


    1. ydss Автор
      12.04.2026 05:34

      Вы подменяет тему.
      Статья не про то, отменят ли компании подписки, а про то, можно ли технически реализовать распознавание речи на микроконтроллере с NPU. Ответ: в ряде сценариев уже становится можно.

      То, что облачные решения выгоднее части бизнеса, не означает, что автономные решения «не взлетят». У них просто другой рынок: приватные, офлайн и энергоэффективные устройства.


      1. Astroscope
        12.04.2026 05:34

        Вы подменяет тему.

        Не согласен. Подмена темы - эффективный демагогический прием, когда подмена осуществляется скрытно, потому что именно на самой подмене и строятся будущие, уже логические, легко проверяемые, конструкции. Я же открыто увожу тему в сторону, не подменяя (скрытно) и не противопоставляя (более явно), а именно что открыто меняю тему - на в чем-то близкую, но очевидно и нескрываемо другую.

        Статья не про то, отменят ли компании подписки, а про то, можно ли технически реализовать распознавание речи на микроконтроллере с NPU. Ответ: в ряде сценариев уже становится можно.

        Верно. Я этот тезис не опровергаю. Наоборот, статья очень интересна по своей основной теме.

        То, что облачные решения выгоднее части бизнеса, не означает, что автономные решения «не взлетят». У них просто другой рынок: приватные, офлайн и энергоэффективные устройства.

        Давление маркетинга на инженерию трудно игнорировать - именно в этом мой тезис. А так да, конечно не означает.


  1. kostoms
    12.04.2026 05:34

    Стоит сразу обозначить границы: это не замена Siri или Алисе.

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


  1. polinapa
    12.04.2026 05:34

    очень интересный проект, такое точно нужно развивать дальше!


  1. sav13
    12.04.2026 05:34

    А чем это лучше распозновалки на локальном сервере умного дома?

    В Том же HA уже все есть для этого


    1. ydss Автор
      12.04.2026 05:34

      Тут скорее не про лучше, чем HA, а просто немного про другой сценарий.

      В Home Assistant это действительно уже можно сделать, но обычно для этого всё равно нужен отдельный сервер, мини-ПК или что-то сопоставимое, что постоянно включено и потребляет свои 5-20 ватт. А здесь идея в другом: чтобы распознавание работало прямо на самом устройстве, вообще без отдельного сервера - ни облачного, ни локального.

      Плюс вопрос цены. Одно дело - держать под это отдельную машину, и совсем другое - когда сама функция живёт прямо в дешёвом железе. Если такие решения станут распространёнными, голос можно будет добавлять даже в недорогие устройства, где ставить Home Assistant-сервер просто не имеет особого смысла.

      То есть это не замена HA, а скорее другой уровень: не один умный домовой сервер на всё, а много маленьких автономных устройств, каждое со своей локальной логикой.


  1. Affdey
    12.04.2026 05:34

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


    1. ydss Автор
      12.04.2026 05:34

      Спасибо
      Модель обучалась с помощью CTC. Это как раз удобно для речи, потому что не нужно вручную размечать, какой фонеме соответствует каждый момент времени: на вход подаётся аудио, на выходе - целевая последовательность фонем, а CTC сама учит модель выравнивать одно с другим во времени. К сожалению, я не смогу объяснить это в комментариях, так как это довольно сложная тема.

      Разная высота голоса, тембр и манера произношения учитываются не поиском по нескольким фиксированным линиям спектра, а всей нейросетью целиком - она анализирует спектральный образ во времени. То есть фонема у меня определяется не по отдельным «линиям», а по совокупности признаков на последовательности кадров.

      На своём голосе я модель не обучал. Она обучалась на LibriSpeech, то есть на большом многоголосом датасете.