Skip to content

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

License

Notifications You must be signed in to change notification settings

AlmazCode/Assistent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

ASSISTENT

Легенький ассистент, который может выполнять пользовательские команды.

Установка

Для начала работы установите необходимые библиотеки:

pip install -r requirements.txt

Запуск

Запустите main.py. Вас встретит ассистент с именем "Джарвис". Имя можно изменить в файле config.py в переменной ASSISTENT_NAME. Ассистент попросит у вас разрешение на добавление в автозагрузку Windows, чтобы при запуске системы ассистент мог самостоятельно запускаться. Ассистент работает только на Windows.

Встроенные команды

Ассистент поддерживает множество встроенных команд, таких как: открыть браузер, сделать запрос в Википедию, установить таймер и т.д. Запустив файл all_commands.py, вы увидите в консоли все возможные команды, которые ассистент сможет понять.

Добавление новых слов

У ассистента есть два важных файла: dataset.py, в котором хранится список слов, которые ассистент сможет понимать, и config.py, в котором строится иерархия команд для их последующего парсинга и выполнения.

Чтобы добавить поддерживаемое слово в датасет, нужно в словаре dataset создать новый ключ, который будет хранить ваши слова. Например, чтобы ассистент понимал слово "машина", создайте ключ "CAR" и добавьте в него список слов:

"CAR": [
  "машина",
  "тачка",
]

Создание новых команд

Теперь, чтобы когда вы говорите одно из слов из ключа "CAR", и ассистент выполняет команду, вам нужно будет создать в config.py последовательность ключей, после которых выполнится функция. Например:

"CAR": {
  ELSE: [tools.tts, "Феррари - классная машина!"]
}

Здесь мы вписываем наш ключ как вход в команду, и далее, используя константу ELSE, вписываем в квадратных скобках функцию, которая будет выполнена, и ее аргументы. В нашем случае это встроенная функция tts из модуля tools, которая преобразует текст в речь.

Использование ELSE

ELSE - это функция, которая выполнится, если парсер не нашел в ключе еще ключа, который бы продолжал иерархию. То есть, имея такую команду:

"HI": {
  "HOW MUCH COST": {
    "FERRARI":
      FUNC: [tools.tts, "Цена варьируется."]
  }
  ELSE: [tools.tts, "Привет!"]
}

В данной команде теперь два варианта пути: если пользователь скажет "привет, сколько стоит феррари", то ассистент скажет "Цена варьируется.", иначе поприветствует пользователя. ELSE позволяет ассистенту реагировать на неполные или неизвестные команды, предоставляя более гибкую и адаптивную систему команд. Это может быть особенно полезно при обработке естественного языка, где пользователи могут выразить одну и ту же команду разными способами.

Использование FUNC

FUNC используется только с CONTENT или CONTENT_TO_END. В остальных случаях функцию с аргументами указывать в ключе, или ELSE если это корневой ключ. FUNC работает по следующему принципу:

  • CONTENT: набор слов (которые не обязательно должны быть в датасете), которые пойдут в аргументы функции. Например:
"SAY": {
  CONTENT: None
  FUNC: tools.tts
}

В данном примере, если пользователь скажет: "скажи привет",то ассистент скажет "Привет". Здесь мы в CONTENT записываем None, говоря парсеру, что дальше не нужно идти, и это конечная точка контента.

  • CONTENT_TO_END: передаст один аргумент в функцию, но это будут слова, начиная с ключа, после которого он идет. Например:
"SAY": {
  CONTENT_TO_END: None
  FUNC: tools.tts
}

Теперь, если пользователь скажет "привет скажи ...", то все последующие слова, пока парсер не уткнется в конец, перейдут в один аргумент.

Небольшой пример

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

"RANDOM": {
  "NUM": {
    "FROM": {
      CONTENT: {
        "BEFORE": CONTENT
      }
    }
  },
  FUNC: tools.print_random
}

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages