Стажировка по проекту
Компания: ООО «Тетработ»
Распознавание голосовых команд для роботов-игрушек
Суть проекта
Задача
Для чего
Вводные данные
Выходные данные
Разработка системы распознавания голосовых команд с использованием нейронных сетей, определение кодов данных команд и их передача в блок управления роботом. Проект предусматривает создание мобильного приложения для устройств на базе Android, способного принимать речь от пользователя, распознавать команды и связывать с двухбайтным кодом для управления роботом
1 команда: Несколько вариантов приложений для мобильных устройств на базе Android, python-скрипты по распознаванию речи с использованием SpeechToText моделей Vosk или Google Speech recognition

2 команда: Разработаны скрипты распознавания голосовых команд. Были представлены разработки в области эмулирования Android-приложения. Точность распознавания команд превышает 95%
Датасет записей команд, подготовленный заказчиком
Управление роботом посредством голосовых команд, передаваемых через смартфон
Участники
1 команды проекта
  • Терещенко Алексей
    Тимлид проекта
    Алексей - руководитель группы разработчиков, отвечал за полную разработку проекта
  • Некрасова Татьяна
    Работает в сфере HR
    Татьяна помогала руководителю команды организовывать процесс разработки проекта
  • Скрипник Игорь
    инженер по сопровождению программного обеспечения
    Игорь помогал руководителю команды организовывать процесс разработки проекта, также участвовал в разработке самого проекта:
    • Разработка Android-приложения на платформе App Inventor2. В качестве механизма распознавания речи использованы встроенные возможности платформы с использованием библиотеки Vosk. Предусмотрена возможность передачи команд по 3 каналам: Wi-Fi, Bluetooth, Web.
    • Подготовка проекта по распознаванию речи с использованием библиотеки Vosk на платформе «1с»
  • Новиков Андрей
    Сети Связи и Системы Коммутации. Последние годы работал Архитектором технических решений. Конструировал коммутационное ядро сетей мобильных операторов
    • Эксперименты по распознаванию голосовых команд с помощью библиотеки Vosk;
    • Эксперименты по совмещению метода измерения расстояния Левенштейна и словаря распознанных команд;
    • Создание Android приложения на языке Kotlin;
    • Система распознавания реализована таким образом, что распознанный текст может быть преобразован в любое сочетание: в простую команду, в список последовательных команд или в сочетание команды с параметром. Код команды в приложении представлен в виде десятичного, заранее определенного кода
  • Шалунов Андрей
    Технический руководитель, Системный Архитектор. Работал по всему миру на проектах внедрения OSS, BSS в Telecom и IoT сфере
    • Было опробовано несколько вариаций контроллеров Arduino и ESP32;
    • Проведены эксперименты по подключению к контроллеру из мобильного приложения по WiFi и Bluetooth;
    • Разработан sketch для ESP32 с целью отладки приложения;
    • Разработано мобильное приложение на фреймворке Flutter, которое позволяет сохранять роботов, команды и единицы измерения, а затем использовать их для управления роботом (для отправки команд)
  • Горина Анастасия
    Работала инженером-проектировщиком. Разработчик контента в УИИ
    • Обучение модели распознавания голоса DeepSpeech2 на части датасета Common Voice;
    • Создание алгоритма распознавания и обработки основных команд, а также возможность добавления пользовательских команд для Arduino. При этом была использована библиотека SpeechRecognition и расстояние Левенштейна;
    • Создание бота, демонстрирующего работу распознавания и обработки команд для Arduino
  • Иванова Наталья
    Разработчик средств автоматизации в ООО «Код безопасности»
    • Написание скриптов для esp8622 - получение ip-адреса от роутера по dhcp;
    • Настройка коммутации между esp8622 и платой arduino на примере включения светодиодов. Платы коммуницируют через serial monitor;
    • Написание скриптов для arduino - один скрипт посвящен миганию светодиода, другой - работе Н-мостового драйвера для управления двумя серводвигателями (робот-машина с двумя колесами);
    • Написание python-скриптов по распознаванию голосовых команд с использованием библиотеки Speech recognition (Google)
  • Жидовинов Никита
    Инженер-разработчик
    • Создание прототипа системы распознавания речи на основе Vosk (Jupyter notebook) с коррекцией на основе расстояния Левенштейна;
    • Создание прототипа полной системы (клиент-сервер):
    - клиент распознаёт речь и кодирует команды согласно протоколу;
    - сервер получает и декодирует команды, передавая их эмулятору робота;
    • Передача данных осуществляется через сокеты
  • Свириденко Дмитрий
    Инженер-программист (старший разработчик), индивидуальный предприниматель в сфере ИТ (c#, asp.net, javascript/nodejs, sql, html+css, cryptocoins)
    • Эксперименты с моделью SpeechToText VOSK для русского и английского языков;
    • Эксперименты с предобученными голосовыми моделями на тестовом apk-приложении;
    • Исследование и проверка способов улучшения и коррекции результатов работы SpeechToText (алгоритм Левенштейна, методика Жаккара)
  • Мурунов Роман
    Консалтинг по вопросам выстраивания ИТ проектов и инфраструктуры
    • Прошивка esp-01;
    • Реализация общения arduino nano и esp-01;
    • Создание мобильного приложения на kivymd c отправкой команд на arduino;
    • Создание прототипов в kivy моделей для Vosk, Google Speech to text
  • Леснов Петр
    Менеджер ВЭД (в международном алкогольном холдинге)
    • Создание модуля распознавания речи на основе библиотеки VOSK;
    • Запрограммирован робот Arduino для приема команд по Wi-Fi;
    • Разработка простого Andorid-приложения для управления роботом
  • Маркин Владимир
    • Создание двух версий Android-приложения (использовался нативный java/kotlin и Android Studio), которые поддерживают две SpeechToText модели Google и Vosk. В последней версии был сделан упор на дизайн и поддержку базы данных на смартфоне;
    • Эксперименты, связанные с вычислением расстояний между схожими фразами используя embedding-сиcтемы minibert и fast2text
Участники
2 команды проекта
  • Рубцов Антон
    Тимлид проекта
    Антон - руководитель группы разработчиков, отвечал за полную разработку проекта
  • Леонтьев Дмитрий
    Помощник Тимлида
    • Координация стажеров в проекте, помощь в управлении проектом. Организация и контроль исследовательских процессов;
    • Управление разработкой, помощь в выборе направления параметризации данных, подбор способов аугментации;
    • Контроль выполнения текущих и выдача новых заданий. Поддержка в анализе и визуализации аудиоданных;
    • Сбор результатов работы стажёров и отчётность перед заказчиком. Отслеживание прогресса проекта, метрик моделей классификации, создания эмуляций Android-приложений;
    • Проведение еженедельных встреч в спринт формате, помощь тимлиду
  • Юдин Николай
    Инженер - механик (МГТУ им. Н.Э.Баумана). Окончил MBA GENERAL City Business School по специализации Финансы г. Москва, Лондонскую школа A1 MBA GENERAL Англия - направление Управленческий учет
    • Данные и модель распознавания голоса: работа с базой данных голосов, использование модели Vosk;
    • Разработка локального приложения для потокового аудио: исследование и тестирование потокового аудио локально;
    • Интеграция и адаптация команд: добавление и дообучение новых команд в модель;
    • Разработка мобильного приложения на Kotlin: адаптация модели Vosk под Android, программирование на Kotlin;
    • Интеграция с Arduino и Wi-Fi передача данных: разработка методов передачи данных через Arduino и Wi-Fi;
    • Упаковка Python-проекта в GUI: Создание GUI с использованием PyQt5 и Kivy;
    • Исследование проблем стабильности подключения: Анализ и устранение проблем с Wi-Fi и HTTP-протоколом
  • Измалкин Алексей
    • Генерация данных для обучения модели: использование SILERO TEXT-TO-SPEECH и PyTorch для генерации голосовых данных;
    • Расширение и аугментация датасета: применение библиотек Audiomentations, Numpy для создания разнообразных голосовых команд;
    • Извлечение признаков из голосовых команд: Librosa, Matplotlib, Seaborn для анализа и визуализации аудиоданных;
    • Обучение базовой модели для классификации голосовых команд: работа с Sklearn, LogisticRegression для создания и оптимизации модели;
    • Обучение нейросетевой модели для классификации команд: применение PyTorch, MinMaxScaler для разработки и тестирования нейронной сети;
    • Использование техник оптимизации и регуляризации в PyTorch для повышения эффективности модели
  • Стукалов Николай
    Специалист планово-диспетчерского отдела в ООО «ВЭЛТ»
    • Работа с платформой Kivy: изучение и применение Kivy для создания приложений;
    • Использование Vosk и Sklearn для распознавания речи;
    • Изучение методов и создание Android-приложений, разработка в среде VSCode;
    • Разработка и интеграция функций в приложение: сборка всех функций в одно приложение, подключение к кнопкам;
    • Добавление функции записи команды голосом: интеграция кнопки «микрофон», работы с микрофоном, внедрение модели Vosk;
    • Разработка функции перевода текста в протокол: Дополнение приложения функцией перевода текста в высокоуровневый протокол
  • Горбунов Семён
    • Исследование и параметризация аудио данных: Librosa, IPython.display, визуализация, оценка распознавания речи;
    • Расширение датасета: Pydub, Numpy, Os. Создание датасета с разными голосами;
    • Мел-кепстральные частотные характеристики аудио, отображение изображений: Librosa, Matplotlib;
    • Нормализация данных, эксперименты с моделями Autokeras;
    • Моделирование и тестирование: Torch, Keras. Callbacks и сохранение моделей, тестирование на аудио-данных;
    • Визуализация результатов обучения с помощью Matplotlib, ConfusionMatrix
Демонстрация проекта 1 команды
Демонстрация проекта 2 команды
Благодарность университетУ