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