Вы когда-нибудь задумывались, как было бы здорово иметь собственный ИИ. помощник? Представьте, насколько проще было бы отправлять электронные письма, не вводя ни единого слова, выполнять поиск в Википедии, фактически не открывая веб-браузеры, и выполнять множество других повседневных задач с помощью одной голосовой команды.

В этом руководстве вы узнаете, как кодировать и создавать свой собственный 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 для обработки любых возможных ошибок, которые могут возникнуть при отправке электронных писем.

Что мы уже сделали?

  1. Прежде всего, мы создали функцию wishme (), которая дает возможность приветствовать пользователя в соответствии с системным временем.
  2. После функции wishme () мы создали функцию takeCommand (), которая помогает нашему ИИ. принимать команду от пользователя. Эта функция также отвечает за возврат запроса пользователя в строковом формате.
  3. Мы разработали логику кода для открытия разных сайтов, таких как google, youtube и т. Д.
  4. Разработал логику кода для открытия Pycharm или любого другого приложения.
  5. Наконец, мы добавили функцию отправки писем.

Это ИИ?

Многие люди будут утверждать, что виртуальный помощник, который мы создали, - это не ИИ, а результат нескольких утверждений. Если мы посмотрим на самый базовый уровень, единственная цель A.I. заключается в разработке машин, которые могут выполнять человеческие задачи с такой же эффективностью или даже более эффективно.

Это факт, что наш виртуальный помощник - не очень хороший пример ИИ, но это ИИ!

Конец!

Ура! Таким образом, вы успешно сделали своего первого виртуального помощника. Изучите и попробуйте добавить к нему другие функции. Надеюсь, вам всем понравился этот блог xD