Найти в Дзене
Chill Programms

Голосовой Ассистент на python. 3 часть - main

Приветствую тебя мой друг. В прошлой части мы сделали уши для нашего ассистента, в этой части мы сделаем мозги и полноценно соберем голосового ассистента. Идея голосового ассистента была взята с канала Хауди-Хо. Так как код будет большим - я разобью статью на несколько частей: 1 часть - va_voice 2 часть - micro 3 часть - main В 3-ей части мы сделаем мозги и полноценно соберем ассистента. Установка нужных библиотек: Первым делом чтобы начать создавать голос и микрофон для нашего ассистента на нужно установить несколько библиотек. Открываем командную строку комбинаций клавиш windows и R. В данном поле ввести cmd. Открываем командную строку и устанавливаем библиотеки: pip install fuzzywuzzy pip install webbrowser pip installnum2words На данный момент у вас в проекте ассистента должны быть файлы va_voice.py и micro.py, а также одна папка model, если вы запускали va_voice.py то у вас будет еще yml файл. Создаем еще один файл.py и называем его configuration.py В 1-ой строке создаем

Приветствую тебя мой друг. В прошлой части мы сделали уши для нашего ассистента, в этой части мы сделаем мозги и полноценно соберем голосового ассистента. Идея голосового ассистента была взята с канала Хауди-Хо.

Так как код будет большим - я разобью статью на несколько частей:

1 часть - va_voice

2 часть - micro

3 часть - main

В 3-ей части мы сделаем мозги и полноценно соберем ассистента.

Установка нужных библиотек:

Первым делом чтобы начать создавать голос и микрофон для нашего ассистента на нужно установить несколько библиотек. Открываем командную строку комбинаций клавиш windows и R. В данном поле ввести cmd.

Открываем командную строку и устанавливаем библиотеки:

pip install fuzzywuzzy

pip install webbrowser

pip installnum2words

На данный момент у вас в проекте ассистента должны быть файлы va_voice.py и micro.py, а также одна папка model, если вы запускали va_voice.py то у вас будет еще yml файл.

-3

Создаем еще один файл.py и называем его configuration.py

-4

В 1-ой строке создаем переменную name и добавляем все имена какими бы вы хотели называть своего ассистента, у меня эта Кеша.

-5

Далее создаем словарь comands и добавляем в него все функции. Например функция называется 'ctime' - это наш ключ, а все остальное ('сколько время','который час','подскажи время','время','сколько времени') - это наши значения, то есть с помощью каких слов мы будем вызывать нашу функцию.

Теперь сделаем мозги нашему ассистенту. В папке проекта создаем файл.py и называем его main.py. Теперь в вашей папке проекта будет 4 питоновских файла, 1 файл yml и 1 папка model. Так же при запуске ассистента могут добавиться еще пару файлов, но они нам мешаться не будут.

-6

Открываем main.py(я пишу код в visual studio).

-7
import configuration
import va_voice
import micro
from fuzzywuzzy import fuzz
import datetime
import time
from num2words import num2words
import webbrowser
import os

В первых 3 строчках мы импортируем наши файлы. то есть main.py будет пользоваться информацией из других файлов которые мы создали на прошлых уроках, а чтобы пользоваться ими все файлы должны быть в одной папке проекта. Следующие библиотеки нам пригодятся.

-8
def speak(text):
va_voice.speak(text)
def va_respond(voice: str):
if voice.startswith(configuration.name):
# обращаются к ассистенту
cmd = recognize_cmd(filter_cmd(voice))
if cmd['cmd'] not in configuration.comands.keys():
speak("Что?")
else:
execute_cmd(cmd['cmd'],voice)
def filter_cmd(raw_voice: str):
cmd = raw_voice
for x in configuration.name:
cmd = cmd.replace(x, "").strip()
return cmd

В функции speak(text) мы будем брать из файла va_voice.py функцию которая воспроизводит текст. В функции va_respond(voice:str) мы даем ассистенту поручения. Если он услышал что его вызывают и дают команду например(кеша сколько время), то ассистент вызывает функцию filter_cmd(raw_voise:str) которая в свою очередь очищает текст. То есть у нас был текст(кеша сколько время),а filter_cmd(raw_voise:str) очищает этот текст от имени и текст становится вот таким(сколько время).

-9
def recognize_cmd(cmd: str):
rc = {'cmd': '', 'percent': 0}
for c, v in configuration.comands.items():
for x in v:
vrt = fuzz.ratio(cmd, x)
if vrt > rc['percent']:
rc['cmd'] = c
rc['percent'] = vrt
return rc
def execute_cmd(cmd,voice):
if cmd == 'stop_kesha':
speak("кеша остановленн")
exit()
elif cmd == "ctime":
now = datetime.datetime.now()
speak("Сейчас " + num2words(now.hour,lang="ru") + ":" + num2words(now.minute,lang="ru"))
elif cmd == "OpenBrauser":
webbrowser.open_new('https://yandex.ru/')
speak("программа открыта")
micro.va_listen(va_respond)

Функция recognize_cmd(cmd: str) проверяет есть ли в configuration.py значение с таким текстом которые мы получили из функции filter_cmd(raw_voise:str). Если значение такое есть, то функция получает ключ от того значения. А дальше функция execute_cmd(cmd,voice) ищет этот ключ, если нашла то выполняет программу которая заданна. Я вам привел пару примеров, можете испытать. Но вы всегда можете добавлять функции. Последняя строка отвечает за начало всей программы, она вызывает функцию va_respond с помощью функции va_listen которая находится в micro.py

Ссылка на весь проект:https://disk.yandex.ru/d/aA_lIqShnE1Xuw

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

До новых встреч!