Часть 1: Что я хотел видеть дома в 2021"Я создавал не просто дипломную работу. Я создавал задумку для будущего, которое наступит, когда понадобятся подобные техЧасть 1: Что я хотел видеть дома в 2021"Я создавал не просто дипломную работу. Я создавал задумку для будущего, которое наступит, когда понадобятся подобные тех

От диплома до продакшена: Как я создавал архитектуру ИИ-проекта для… Часть 1: Что я хотел видеть дома в 2021

2026/02/24 09:22
9м. чтение

Часть 1: Что я хотел видеть дома в 2021


Дорогие читатели!

Перед вами первая из 7 статей о моём дипломном проекте «Голосовое управление Умным домом», который я защищал в 2021 году.

Этот проект стал для меня не просто работой для получения диплома, а настоящей возможностью погрузиться в мир науки и технологий. Стать самому тем, кто творит будущее, создавая технологии, и развивая то, что будет создавать будущее.


📋 Содержание серии из 7 частей

Часть

Тема

Краткое содержание

1

Что я хотел видеть дома в 2021

Концепция проекта, видение «Дом который тебя понимает», цели и задачи

2

Как я проектировал опыт пользователя

Проектирование пользовательского интерфейса, разделение полномочий, контекстное понимание

3

Архитектура нейросети

Многослойная обработка звуковых данных, выбор архитектуры, технические детали

4

Обучение и валидация модели

Сбор данных, извлечение признаков, процесс обучения, результаты

5

Интеграция с устройствами «Умного дома»

Протоколы связи, сценарии управления, адаптивность к новым устройствам

6

Система безопасности и приватности

Защита личных данных, механизмы приватности, контроль доступа

7

Расширенные возможности и перспективы

Наблюдение за здоровьем, безопасность детей, прогнозирование потребностей


🎯 Глава 1: От идеи к диплому

Контекст создания проекта

В 2021 году я защищал дипломный проект, получая второе высшее образование по специальности Data Science и нейронные сети. До этого у меня уже был солидный багаж:

  • 5 лет системного администрирования — понимание инфраструктуры и ограничений

  • Стратегический маркетинг — понимание пользователя и вовлечения

  • Руководство отделом продаж — управление командой и процессами

Этот бэкграунд сформировал моё видение: я создаю продукты, которые будут удобны людям, и чтобы люди могли настраивать вариативность этих продуктов для себя.

Философия проекта: «Дом который тебя понимает»

В презентации к диплому я написал:

Это было ключевым принципом — создать систему, которая понимает, а не просто слышит. Не нужно говорить «Алиса, включи свет» или «Окей, Гугл, открой дверь». Просто скажите «включи свет» в разговоре, и система поймёт, что это команда.

Почему именно голосовое управление?

На тот момент (2021) существовали системы голосового управления, но они требовали:

  • Специальных триггерных слов («Алиса», «Окей, Гугл»)

  • Чёткого произношения

  • Отсутствия фонового шума

  • Отдельных устройств (колонок, смартфонов)

Я хотел создать систему, которая:

  • Работает в обычном диалоге — команды распознаются среди обычной речи

  • Не требует дополнительных устройств — работает на обычном компьютере или сервере

  • Адаптируется под пользователя — учитывает возраст, пол, особенности речи

  • Понимает контекст — знает, кто говорит и в какой ситуации

Понимание сложности интеграции

Я понимал, что технологии, которые я запланировал, требуют много работы и много навыков в различных отраслях. Это не просто нейросеть, которая распознаёт команды — это целая экосистема взаимодействующих систем.

Примеры интеграции:

  1. GSM-звонок и шлагбаум:

    • Система распознаёт голосовую команду «Открой ворота»

    • Проверяется авторизация пользователя

    • Если пользователь имеет право — система инициирует GSM-звонок оператору

    • Оператор получает команду и включает механизм открывания шлагбаума

    • Шлагбаум открывается

  2. Детекция госномера:

    • Камера фиксирует автомобиль на подъезде

    • Система детектирует госномер на номерном знаке

    • Распознаёт цифры и буквы госномера

    • Проверяет номер по базе данных на наличие полномочий

    • Если номер авторизован — открывает ворота

Почему это важно для архитектуры?

Понимание этой сложности помогло мне спроектировать модульную архитектуру, где:

  • Каждый компонент отвечает за свою задачу

  • Компоненты могут работать независимо друг от друга

  • Можно легко добавлять новые функции без переписывания всей системы

  • Система масштабируется по мере добавления новых устройств

Это и есть микросервисный подход, который я интуитивно применял ещё в 2021 году, хотя тогда это ещё не было таким распространённым в ИИ-проектах.


🏠 Глава 2: Что я хотел видеть дома?

Сценарии использования

Сценарий 1: Управление освещением

Тогда (2021)

Сейчас (2026)

Пользователь говорит в разговоре: «Здесь темновато»

Это стало стандартом в умных домах

Система распознаёт это как команду на увеличение яркости

Но многие системы всё ещё требуют триггерных слов

Освещение автоматически регулируется

Сценарий 2: Управление дверью

Тогда (2021)

Сейчас (2026)

Пользователь говорит: «Открой дверь»

Умные замки стали популярными

Система проверяет права доступа

Но интеграция с голосовыми системами всё ещё не идеальна

Если пользователь имеет право — дверь открывается

Сценарий 3: Управление камерой наблюдения

Тогда (2021)

Сейчас (2026)

Пользователь говорит: «Покажи, что происходит на кухне»

Умные камеры с голосовым управлением существуют

Система включает камеру и показывает изображение на экране

Но интеграция с другими системами дома часто сложна


📊 Глава 3: Технические характеристики проекта

Обучающая база

Параметр

Значение

Объём базы

620 звуковых файлов (изначально), 273 файла в финальной версии

Классы команд

4 класса: «Комната», «Дверь», «Камера», «Фон»

Архитектура

Multi-input CNN (3 входа)

Параметры модели

~50,480 параметров

Точность (train)

~99.66%

Точность (val)

~94.55%

Инструменты

Python, TensorFlow/Keras, Librosa, Google Colab

Извлечение признаков

Для получения большего количества параметров я выхватывал из данных среднее, минимальное и максимальное значения из 7 групп признаков:

  1. Chroma STFT — Частота цветности

  2. RMSE — Среднеквадратичные колебания

  3. Zero Crossing Rate — Пересечения нуля

  4. Spectral Centroid — Центр масс звука

  5. Spectral Bandwidth — Ширина полосы частот

  6. Spectral Rolloff — Спектральный спад частоты

  7. MFCC — Значимые для обработки частоты

def get_featur_mean(y, sr): # Получаем различные параметры аудио которые в сумме дадут уникальный набор признаков chst1 = np.mean(librosa.feature.chroma_stft(y=y, sr=sr)) chst2 = np.max(librosa.feature.chroma_stft(y=y, sr=sr)) chst3 = np.min(librosa.feature.chroma_stft(y=y, sr=sr)) rmse1 = np.mean(librosa.feature.rms(y=y)) rmse2 = np.max(librosa.feature.rms(y=y)) rmse3 = np.min(librosa.feature.rms(y=y)) # ... и так далее для всех 7 групп признаков return ssr, crz, mfc

Визуализация данных

Это позволяет наглядно понять что имеем от каждого файла, в каком объёме и диапазоне. По результатам принимаем решение как можем использовать эти данные для достижения результата.

Визуализация MFCC признаков
Визуализация MFCC признаков

🧠 Глава 4: Архитектура нейросети

Математическое отображение модели

┌─────────────────────────────────────────────────────────────────┐ │ АРХИТЕКТУРА NEURAL NETWORK v4.6 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ВХОД 1: SSR (9 признаков) ВХОД 2: CHZ (9 признаков) │ │ Conv1D → BatchNorm → Dropout Conv1D → BatchNorm → Dropout │ │ Conv1D → Flatten → Dense Conv1D → Flatten → Dense │ │ │ │ ВХОД 3: MFC (3 признака) Dense → Dense (вторая группа)│ │ Conv1D → BatchNorm → Dropout │ │ Conv1D → Flatten → Dense │ │ │ │ CONCATENATE [x1, x3, x4] → Dense → BatchNorm → Dropout │ │ Dense → CONCATENATE [x, x4] │ │ Dense (len(labels), activation='softmax') │ │ │ │ Всего параметров: 50,480 │ │ Обучаемых параметров: 50,200 │ │ Не обучаемых параметров: 280 │ │ │ └─────────────────────────────────────────────────────────────────┘

Сборка модели

model = Sequential() input1 = Input(xTrainSSR.shape[1:]) # Входные данные, это первое число размерности оцифрованых данных input2 = Input(xTrainCHZ.shape[1:]) input3 = Input(xTrainMFC.shape[1:]) # На первую группу подаём тренировочные данные x1 = Conv1D(4, 2, activation="tanh")(input1) x1 = BatchNormalization()(x1) # Нормализация данных для исключения резких разниц в расчётах x1 = Dropout(0.2)(x1) # Во избежании "заучивания" произвольное отключение нейронов x1 = Conv1D(8, 2, activation="tanh")(x1) # Одномерный свёрточный слой x1 = Flatten()(x1) # Функция - перевод данных в вектор x1 = Dense(64, activation='tanh')(x1) # На вторую группу подаём тренировочные данные x2 = Conv1D(4, 2, activation="linear")(input2) x2 = BatchNormalization()(x2) x2 = Dropout(0.2)(x2) x2 = Conv1D(8, 2, activation="linear")(x2) x2 = Flatten()(x2) x2 = Dense(64, activation='linear')(x2) # На третью группу подаём тренировочные данные x3 = Conv1D(4, 2, activation="relu")(input3) x3 = BatchNormalization()(x3) x3 = Dropout(0.2)(x3) x3 = Conv1D(8, 2, activation="relu")(x3) x3 = Flatten()(x3) x3 = Dense(64, activation='relu')(x3) # Здесь данные из второй группы обрабатываем полносвязным слоем Dense на 64 нейрона x4 = Dense(64, activation='tanh')(x2) x4 = Dense(64, activation='tanh')(x4) # Обрабатываем меньшим количеством нейронов # Соединяем данные из групп 1, 3, 4 в группу x x = concatenate([x1, x3, x4]) x = Flatten()(x) x = Dense(128, activation='elu')(x) x = BatchNormalization()(x) x = Dropout(0.3)(x) x = Dense(128, activation='elu')(x) x = concatenate([x, x4]) # На выходе нейронов равное количеству групп len(labels) x = Dense(len(labels), activation='softmax')(x) model = Model([input1, input2, input3], x) model.compile(optimizer=Adam(1e-4), loss='categorical_crossentropy', metrics=['accuracy'])


📈 Глава 5: Обучение модели

Процесс обучения (250 эпох)

Epoch 1/250 22/22 [==============================] - 3s 33ms/step - loss: 1.8197 - accuracy: 0.2110 - val_loss: 1.2615 - val_accuracy: 0.9455 ... Epoch 247/250 22/22 [==============================] - 0s 16ms/step - loss: 0.1618 - accuracy: 0.9404 - val_loss: 0.9144 - val_accuracy: 0.9455

Результаты обучения

График обучения
График обучения

Параметр

Значение

Точность обучения

~94.04%

Точность валидации

~94.55%

Эпох обучения

250

Размер батча

10

Оптимизатор

Adam (lr=1e-4)

Функция потерь

categorical_crossentropy

Сохранение модели

# Сохраняем модель model.save_weights(WAY_NP+'Model_weight.h5') model.save(WAY_NP+'Model_Input3_v4.h5') # Загружаем модель # model.load_weights(WAY_NP+'Model_Input3_v4.h5')


💡 Глава 6: Моя философия проектирования

Интеллектуальное управление

Моя философия:

Это и есть то, что я называю объектно-ориентированным программированием в продуктах — каждый модуль можно оптимизировать и улучшать независимо друг от друга.

Микросервисная архитектура

Я не исключительно на ООП опираюсь при создании проекта. Мне больше нравится микросервисная архитектура. Также я интуитивно делаю всё по Agile.

Благодаря применению микросервисной архитектуры я могу использовать разные нейросети для одного проекта и разные проекты для одних нейросетей. Тем самым хорошо экономя на вычислительных ресурсах.

То есть я понимаю, что можно мониторить систему и видеть, что нагрузка у нас на нейросеть, которая занимается компьютерным зрением, в большей степени происходит с 10:00 до 22:00 по московскому времени. При этом есть задача компьютерного зрения схожая, которая не требует срочной обработки, поэтому мы откладываем на потом. И во время того, как освобождаются вычислительные мощности, происходит передача по стеку накопленных данных для обработки того, что необходимо обработать не в срочном порядке.


🎯 Глава 7: Уроки и выводы

Что получилось

  • ✅ Multi-input архитектура для обработки разных типов признаков

  • ✅ Модульная система, позволяющая легко добавлять новые команды

  • ✅ Точность валидации ~94.55% на небольшом датасете

  • ✅ Возможность масштабирования архитектуры

Что можно улучшить (2026 perspective)

  1. Использовать предобученные модели — Wav2Vec 2.0, HuBERT или RuBERT вместо обучения с нуля

  2. Применить трансформеры — для лучшего понимания контекста

  3. Data Augmentation — шум, питч, скорость для увеличения датасета

  4. Квантование — для deployment на edge-устройства

  5. Микросервисная архитектура — для масштабируемости и оптимизации ресурсов

  6. Мониторинг и планирование — для оптимизации вычислительных мощностей


🔜 Что будет в следующей части?

Часть 2: Как я проектировал опыт пользователя

Темы следующей статьи:

  • 📋 Проектирование пользовательских сценариев

  • 🔐 Разделение полномочий (дети/взрослые)

  • 🧠 Контекстное понимание команд

  • 🔒 Безопасность и приватность данных


📚 Источники и ресурсы

Исходные материалы проекта

Файл

Описание

Ссылка

Презентация

Презентация дипломного проекта

Скачать PDF

Jupyter Notebook

Код модели и обучение

SmartHome v4.6.ipynb

GitHub

Репозиторий проекта

github.com/AlekseyVB/SmartHome

Библиотеки и инструменты

# Основные библиотеки для работы с аудио import librosa # Обработка аудио import librosa.display # Визуализация аудио import numpy as np # Математические операции import matplotlib.pyplot as plt # Визуализация # Библиотеки для нейросетей import tensorflow as tf # Фреймворк для глубокого обучения from tensorflow.keras import layers, models # Слои и модели from tensorflow.keras.optimizers import Adam # Оптимизатор # Утилиты from sklearn.preprocessing import StandardScaler # Нормализация from sklearn.model_selection import train_test_split # Разделение данных


💬 Кажется что это было очень - очень давно ))

Источник

Возможности рынка
Логотип Ucan fix life in1day
Ucan fix life in1day Курс (1)
$0.0006739
$0.0006739$0.0006739
-19.67%
USD
График цены Ucan fix life in1day (1) в реальном времени
Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу service@support.mexc.com для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно

ZachXBT готовит крупное разоблачение, пока трейдеры Polymarket нацеливаются на объект

ZachXBT готовит крупное разоблачение, пока трейдеры Polymarket нацеливаются на объект

Крипто-рынки шумят после того, как известный специалист по расследованиям в блокчейне ZachXBT анонсировал крупное разоблачение, нацеленное на то, что он описал как "один из самых прибыльных бизнесов в крипто
Поделиться
Crypto.news2026/02/24 14:17
Bitget открыла прием заявок на конкурс питчей для предпринимательниц в сфере Web3

Bitget открыла прием заявок на конкурс питчей для предпринимательниц в сфере Web3

Криптобиржа Bitget объявила о запуске второго конкурса Pitch & Slay для женщин-предпринимательниц в сфере блокчейна, Web3 и криптовалют. Участницы представят п
Поделиться
Forklog2026/02/24 14:40
Компания RedotPay по стейблкоин-платежам планирует привлечь более $1 млрд в рамках IPO в США.

Компания RedotPay по стейблкоин-платежам планирует привлечь более $1 млрд в рамках IPO в США.

PANews сообщил 24 февраля, что, согласно Bloomberg, базирующаяся в Гонконге компания по стейблкоин-платежам RedotPay рассматривает возможность первичного публичного размещения акций (IPO
Поделиться
PANews2026/02/24 14:35