Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Внести вклад в разработку кода
Синхронизировать код
README.md
Введение
- YiWa (ИВа) предназначена для демонстрации семейных данных и простого взаимодействия (например: таблица самодисциплины для детей, математика для детского сада, случайный выбор изображения динозавра и т. д.); требуется микрофон, мышь не нужна, достаточно произнести команду, страница перейдёт к соответствующей функции; распознавание речи, сопоставление фраз уже локализовано, интернет-интерфейсы не используются.
- В будущем будет создан магазин функциональных плагинов, где можно будет приобрести и установить высококачественное содержимое плагинов, например: таблица самодисциплины, арифметические задачи для начальной школы, создание простого рисунка, электронные книги для семьи, мотивационные доски объявлений и т.д. Локальное распознавание речи, командные слова поддерживаются для локальной разработки, загрузки в магазин, технические основы просты в разработке. Базовый код предоставляет различные технические примеры, позволяя разработчикам на разных технических уровнях создавать свои собственные функции.
- Каждый может создать форк и добавить профессиональный контент из различных областей или организации дошкольного образования могут преобразовать его в проект изучения Python для детей. В любом случае, у него есть много возможностей; будущее зависит от того, сколько интереса и ценности останется после реализации проекта.
- Поддерживает Ubuntu, Deepin, Fedora, Mac и другие системы класса Unix для отладки, разработки и запуска, не поддерживает Windows.
Скриншоты
- Таблица самодисциплины (управление через сканирование QR-кода на мобильном устройстве, использование в домашней беспроводной сети)
Использование бывшего в употреблении планшета Surface вместо Raspberry Pi и телевизора
Примерный процесс
Получение аудиосигнала с микрофона, локальное офлайн-сопоставление пробуждающих слов snowboy; после пробуждения продолжается приём команд с микрофона, локальное распознавание речи asr_abc, преобразование в текст; затем text2vec применяется для векторного поиска совпадающих команд в зависимости от области применения, при успешном сопоставлении проводится сравнение текстовой размытой схожести, чтобы избежать попадания нерелевантного содержимого.
Через selenium открывается предварительно заданный URL-адрес команды в локальной среде, что позволяет реализовать функцию отображения содержимого страницы без использования мыши и голосового управления.
Инструкция по установке, см. Wiki
- pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
- Файл драйвера Selenium Chrome необходимо заменить на версию Chrome, установленную на вашем компьютере, текущая версия Chrome — 84,
Скачать можно здесь, выбрав нужную версию
- После загрузки файла chromedriver не изменяйте его имя, оставьте как chromedriver или chromedriver.exe;
- Обратите внимание на установку snowboy (рекомендуется найти репозиторий Gitee с более высокой скоростью загрузки),
Различные платформы систем работают по-разному (здесь уже скомпилированы версии для Apple и Raspberry Pi). См. здесь
- Распознавание речи было заменено с Baidu на asr_abc open source project, [адрес проекта] (https://github.com/glynpu/asr_abc),
Поскольку файл данных большой, скачайте его отдельно и поместите в проект (asr/asr_abc/data/exp/conformer_encoder.pt),
Скачать можно здесь
- Модель text2vec-chinese Скачать
Как использовать (при запуске программы), см. Wiki
- python3 web.py
- python3 yiwa.py
- После успешного запуска вы можете говорить в свой микрофон, в настоящее время поддерживаются следующие команды: вернуться на главную страницу, обновить команду, показать все команды, перезапустить и т. д.;
Локальная разработка, см. Wiki
- Рекомендуется разрабатывать на базе системы Linux (Debian, Ubuntu, Fedora, MacOS).
- Можно разработать плагин на основе Flask, плагин упакован отдельно и помещается в папку apps,
Плагин должен содержать файл configs.py и указывать необходимые параметры: APPID :str, APPNAME :str, COMMANDS :dict
-
init.py файл плагина должен импортировать другие файлы страниц Flask, см. существующие пакеты плагинов.
- Статические файлы пакета размещаются в соответствующих папках.
- Соглашение:
- Плагины должны быть размещены в папке apps в виде отдельных папок.
- Корневая папка плагина должна содержать файл конфигурации, описывающий плагин, configs.py, по крайней мере, с appid, appname,
Примечание
- Распознавание речи использует локальную модель asr (pytorch, на GitHub).
- Мои навыки ограничены, способности средние, сложность проекта невелика, вы тоже сможете.
- Документацию по развёртыванию и запуску на месте см. в Wiki проекта.
Задачи
-
Создать несколько страниц (как минимум, приветственную и каталог команд).
-
Использовать websocket для обновления состояния пробуждения YiWa и речевых команд, добавить индикатор записи звука («Запись...»), чтобы указать, когда нужно говорить, а не нажимать кнопки.
-
Ускорить сопоставление речевых команд, сначала используя локальный словарь для предварительного сопоставления, находя соответствующий плагин, затем используя Baidu, уменьшая область поиска (локальный словарь требует создания производственного словаря, если использовать автоматизацию для генерации, нет гарантии скорости, поэтому используется jieba для сегментации слов).
-
Реализовать базовую функцию преобразования текста в речь для плагинов (требуется обработка для разных платформ, например, mac использует mei-jia, linux использует xxx, windows использует xxx).
-
Сделать базовую функцию генерации QR-кодов для вызова плагинами, некоторые плагины могут потребовать настройки через мобильное устройство, например, будильник, маршрут на работу (для рендеринга требуется использовать пользовательский метод render, см. реализацию на главной странице).
-
Создать страницу управления настройками системы, позволяющую изменять параметры, влияющие на взаимодействие, такие как интервал записи и продолжительность записи.
-
Динамически получать IP-адрес в локальной сети.
-
Таблица самодисциплины (добавляйте поощрение за каждое выполненное задание, основной акцент на поощрении, без наказаний; в фоновом режиме можно настроить элементы самодисциплины и поощрения, а также функции вознаграждений и обмена).
-
Упрощённая версия тетриса, предназначенная для развлечения во время зимних каникул и развития пространственного мышления и концентрации внимания.
- Методы арифметики для дошкольников (предметная область не ограничивается решением задач, основное внимание уделяется методам).
- Демонстрация порядка написания китайских иероглифов.
- Случайный выбор понравившегося изображения для рисования, следуя воображению (моим детям нравятся динозавры и строительная техника, ключевые слова можно настроить в фоновом режиме).
-
Изменить логику сопоставления команд, чтобы на первом уровне можно было активировать только речевые команды этого уровня, избегая конфликтов между командами разных функций.
-
Обновить дизайн верхней панели состояния для индикации состояния записи (зелёный круг со звуковой волной во время записи, жёлтый круг с вращающимся индикатором во время распознавания, красный круг с восклицательным знаком при ошибке).
- Английские слова.
-
Приостановить оптимизацию и настройку (частично переписать код, используя возможности Python).
- Реализовать онлайн-обновление и установку приложений, резервное копирование локальных приложений, загрузку кода с gitee, замену приложений и перезапуск сервиса.
- Карты Gaode для планирования маршрута на работу/учёбу (между провинциями/городами).
- Функция временной шкалы, включающая: доисторические эпохи (палеозой, мезозой, кайнозой); хронологическую линию китайской истории; эпохи жизни китайских поэтов-классиков.
- Игра «Поедатель» (голосовое управление: вперёд, назад, влево, вправо, поворот головы [приближение к еде], остановка [сокращение времени по таймеру], ускорение, пропуск хода, невидимость, авто; настройки: количество еды, виды еды и точки роста, прохождение сквозь стены, проход сквозь себя, препятствия, пролёт орла и т. д.; прочее: рейтинг по длине [время|длина]).
-
Игра «Тетрис», см. здесь, спасибо.
- Сначала сделаем игру «Угадай фрукт» [яблоко, баклажан, двойная звезда и т. д.] для игры дома с детьми.
- Обратный отсчёт оставшегося времени жизни.
-
Использование телевизора в качестве экрана — не лучшая идея, это потребляет много энергии! Используйте бывший в употреблении планшет Surface. В конце попытаемся использовать docker для решения проблем с развёртыванием, но нужно будет разобраться с требованиями к оборудованию хост-машины. Если не получится, то воспользуемся shell для решения проблем с развёртыванием и максимально снизим сложность развёртывания.
На этом обновление этого проекта закончится. Мне ещё многому предстоит научиться, есть много идей, на реализацию которых нужно время, меня ждёт много интересного и обязательного к выполнению; здесь я просто сделал небольшую платформу и предложил идею, надеюсь, она окажется полезной для всех.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )