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