Вы когда-нибудь задумывались, как было бы здорово иметь собственный ИИ. помощник? Представьте, насколько проще было бы отправлять электронные письма, не вводя ни единого слова, выполнять поиск в Википедии, фактически не открывая веб-браузеры, и выполнять множество других повседневных задач с помощью одной голосовой команды.
В этом руководстве вы узнаете, как кодировать и создавать свой собственный A.I. голосовой помощник на Python.
Что может этот А. помощник делать для ВАС?
- Он может отправлять вам электронные письма.
- Он может воспроизводить музыку для вас.
- Он может выполнять поиск в Википедии за вас.
- Он может открывать веб-сайты, такие как Google, Youtube и т. Д., В веб-браузере.
- Он может открыть ваш редактор кода или IDE с помощью одной голосовой команды.
Хватит разговоров! Давайте приступим к созданию нашего собственного помощника по искусственному интеллекту.
Настройка среды для кода:
Я использовал Pycharm, чтобы закодировать это. Не стесняйтесь использовать любую другую удобную среду IDE и начинать новый проект.
P.S: Не забудьте заранее выбрать имя для своего голосового помощника: P
Определение функции речи:
Первое и самое главное для искусственного интеллекта. помощник должен говорить. Чтобы заставить нашего бота говорить, мы закодируем функцию speak (). Эта функция принимает звук в качестве аргумента, а затем произносит его.
def speak(audio):
pass #For now. We will write the conditions later.
Теперь нам понадобится звук. Итак, мы собираемся установить модуль с именем pyttsx3.
Что такое pyttsx3?
- Библиотека Python, которая поможет нам преобразовать текст в речь. Короче говоря, это библиотека преобразования текста в речь.
- Он работает в автономном режиме и совместим с Python 2, а также с Python 3.
Установка:
pip install pyttsx3
После успешной установки pyttsx3 импортируйте этот модуль в свою программу.
Использование:
import pyttsx3
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices') #getting details of the current voice
engine.setProperty('voice', voice[0].id)
Что такое sapi5?
- Речевой API, разработанный Microsoft.
- Помогает в синтезе и распознавании голоса
Что такое VoiceId?
- Голосовой идентификатор помогает нам выбирать разные голоса.
- voice [0] .id = Мужской голос
- voice [1] .id = Женский голос
Написание нашей функции speak ():
def speak(audio):
engine.say(audio)
engine.runAndWait() #Without this command, speech will not be audible to us.
Создание нашей основной функции:
Теперь мы создадим функцию main (), а внутри этой функции main () вызовем нашу функцию Speech.
if __name__=="__main__" :
speak("Hello World! Hope you all are doing well.")
Все, что вы напишете в этой функции speak (), будет преобразовано в речь. Поздравляю! Таким образом, наш A.I. имеет свой голос, и он готов говорить.
Кодирование функции wishme ():
Теперь мы собираемся создать функцию wishme (), которая заставит наш A.I. пожелайте или поприветствуйте нас в зависимости от времени на компьютере.
Чтобы предоставить текущее время A.I., нам нужно импортировать модуль с именем datetime. Импортируйте этот модуль в свою программу:
import datetime
Теперь приступим к определению нашей функции wishme ():
def wishme():
hour = int(datetime.datetime.now().hour)
Здесь мы сохранили целочисленное значение текущего часа или времени в переменной с именем hour. Теперь мы будем использовать это значение часа внутри цикла if-else.
def wishMe():
hour = int(datetime.datetime.now().hour)
if hour>=0 and hour<12:
speak("Good Morning!")
elif hour>=12 and hour<18:
speak("Good Afternoon!")
else:
speak("Good Evening!")
speak("Welcome! Please tell me how may I help you")
Определение функции takeCommand ():
Следующая важная вещь для нашего A.I. Помощник заключается в том, что он должен иметь возможность принимать команды с помощью микрофона нашей системы. Итак, теперь мы закодируем функцию takeCommand ().
С помощью функции takeCommand () наш A.I. Ассистент сможет вернуть строковый вывод, взяв у нас микрофонный вход.
Перед определением функции takeCommand () нам необходимо установить модуль под названием speechRecognition. Установите этот модуль:
pip install speechRecognition
После успешной установки этого модуля импортируйте этот модуль в программу, написав оператор импорта.
import speechRecognition as sr
Приступим к написанию нашей функции takeCommand ():
def takeCommand():
#It takes microphone input from the user and returns string output
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
Мы успешно создали нашу функцию takeCommand (). Теперь мы собираемся добавить в нашу программу блоки try и except, чтобы эффективно обрабатывать ошибки.
try:
print("Recognizing...")
query = r.recognize_google(audio, language='en-in') #Using google for voice recognition.
print(f"User said: {query}\n") #User query will be printed.
except Exception as e:
# print(e) use only if you want to print the error!
print("Say that again please...") #Say that again will be printed in case of improper voice
return "None" #None string will be returned
return query
Задача 1. Чтобы найти что-нибудь в Википедии:
Чтобы выполнять поиск в Википедии, нам необходимо установить и импортировать модуль wikipedia в нашу программу.
Установка модуля википедии:
pip install wikipedia
После успешной установки модуля Википедии импортируйте модуль Википедии в программу, написав оператор импорта.
if __name__ == "__main__":
wishMe()
while True:
query = takeCommand().lower() #Converting user query into lower case
# Logic for executing tasks based on query
if 'wikipedia' in query: #if wikipedia found in the query then this block will be executed
speak('Searching Wikipedia...')
query = query.replace("wikipedia", "")
results = wikipedia.summary(query, sentences=2)
speak("According to Wikipedia")
print(results)
speak(results)
В приведенном выше коде мы использовали оператор if, чтобы проверить, входит ли Википедия в поисковый запрос пользователя или нет. Если Википедия найдена в поисковом запросе пользователя, то два предложения (которые вы можете изменить, изменив количество предложений с 2 на любое желаемое) из резюме страницы Википедии будут преобразованы в речь с помощью речи. функция.
Задача 2: Чтобы открыть YouTube в веб-браузере:
Чтобы открыть любой веб-сайт, нам нужно импортировать модуль под названием webbrowser.
Это встроенный модуль, и нам не нужно устанавливать его с помощью оператора pip, мы можем напрямую импортировать его в нашу программу, написав оператор импорта.
Код:
elif 'open youtube' in query:
webbrowser.open("youtube.com")
Здесь мы используем цикл elif, чтобы проверить, находится ли Youtube в запросе пользователя или нет. Предположим, пользователь дает команду «Пожалуйста, откройте YouTube».
Итак, открытый youtube будет по запросу пользователя, и условие elif будет истинным.
Задача 3: Чтобы открыть сайт Google в веб-браузере:
elif 'open google' in query:
webbrowser.open("google.com")
Мы открываем Google в веб-браузере, применяя ту же логику, что и при открытии Youtube.
Задача 4: Для воспроизведения музыки:
Чтобы проигрывать музыку, нам нужно импортировать модуль под названием os. Импортируйте этот модуль напрямую с помощью оператора импорта.
elif 'play music' in query:
music_dir = 'D:\\Non Critical\\songs\\Favorite Songs2'
songs = os.listdir(music_dir)
print(songs)
os.startfile(os.path.join(music_dir, songs[0]))
В приведенном выше коде мы сначала открыли наш музыкальный каталог, а затем перечислили все песни, присутствующие в каталоге, с помощью модуля os.
С помощью os.starfile вы можете воспроизвести любую песню по вашему выбору. Вы также можете воспроизвести случайную песню с помощью случайного модуля. Каждый раз, когда вы приказываете включить музыку, A.I. будет воспроизводить любую произвольную песню из каталога песен.
Задача 5: Узнать текущее время:
elif 'the time' in query:
strTime = datetime.datetime.now().strftime("%H:%M:%S")
speak(f"Ma'am, the time is {strTime}")
В приведенном выше коде мы используем функцию datetime () и сохраняем текущее время системы в переменной strTime.
После сохранения времени в strTime мы передаем эту переменную в качестве аргумента в функцию speak. Теперь строка времени будет преобразована в речь.
Задача 6: Чтобы открыть Pycharm:
elif 'open code' in query: codePath = "
/Applications/PyCharm CE.app"
#that's the code path. os.startfile(codePath)
Чтобы открыть код Pycharm или любое другое приложение, нам нужен путь кода приложения.
После копирования цели приложения сохраните цель в переменной. Здесь я сохраняю цель в переменной с именем codePath, а затем мы используем модуль os для открытия приложения.
Задача 7: Чтобы отправить электронное письмо:
Чтобы отправить электронное письмо, нам нужно импортировать модуль под названием smtplib.
Что такое smtplib?
- Простой протокол передачи почты (SMTP) - это протокол, который позволяет нам отправлять электронные письма и маршрутизировать их между почтовыми серверами.
В модуле SMTP присутствует метод экземпляра под названием sendmail. Этот метод экземпляра позволяет нам отправлять электронную почту.
Принимает 3 параметра:
- Отправитель: адрес электронной почты отправителя.
- Получатель: адрес электронной почты получателя.
- Сообщение: строковое сообщение, которое необходимо отправить одному или нескольким получателям.
Теперь мы создадим функцию sendEmail (), которая поможет нам отправлять электронные письма одному или нескольким получателям.
def sendEmail(to, content):
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login('[email protected]', 'your-password')
server.sendmail('[email protected]', to, content)
server.close()
Примечание. Не забудьте включить функцию менее безопасных приложений в своей учетной записи Gmail. В противном случае функция sendEmail не будет работать должным образом.
Вызов функции sendEmail () внутри функции main ():
elif 'email to aishwarya' in query:
try:
speak("What should I say?")
content = takeCommand()
to = "[email protected]"
sendEmail(to, content)
speak("Email has been sent!")
except Exception as e:
print(e)
speak("Sorry my friend. I am not able to send this email")
Мы используем блок try и except для обработки любых возможных ошибок, которые могут возникнуть при отправке электронных писем.
Что мы уже сделали?
- Прежде всего, мы создали функцию wishme (), которая дает возможность приветствовать пользователя в соответствии с системным временем.
- После функции wishme () мы создали функцию takeCommand (), которая помогает нашему ИИ. принимать команду от пользователя. Эта функция также отвечает за возврат запроса пользователя в строковом формате.
- Мы разработали логику кода для открытия разных сайтов, таких как google, youtube и т. Д.
- Разработал логику кода для открытия Pycharm или любого другого приложения.
- Наконец, мы добавили функцию отправки писем.
Это ИИ?
Многие люди будут утверждать, что виртуальный помощник, который мы создали, - это не ИИ, а результат нескольких утверждений. Если мы посмотрим на самый базовый уровень, единственная цель A.I. заключается в разработке машин, которые могут выполнять человеческие задачи с такой же эффективностью или даже более эффективно.
Это факт, что наш виртуальный помощник - не очень хороший пример ИИ, но это ИИ!
Конец!
Ура! Таким образом, вы успешно сделали своего первого виртуального помощника. Изучите и попробуйте добавить к нему другие функции. Надеюсь, вам всем понравился этот блог xD