Construya un asistente virtual usando Python

El asistente de escritorio virtual es algo increíble. Si desea que su máquina funcione según sus órdenes, como lo hizo Jarvis con Tony. Sí, es posible. Es posible usando Python. Python ofrece una buena biblioteca principal para que podamos usarla para hacer un asistente virtual. Windows tiene Sapi5 y Linux tiene Espeak que nos puede ayudar a tener la voz de nuestra máquina. Es una IA débil.

Módulos necesarios

  • pyttsx3: pyttsx es una biblioteca de texto a voz multiplataforma que es independiente de la plataforma. La principal ventaja de usar esta biblioteca para la conversión de texto a voz es que funciona sin conexión. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install pyttsx3
  • SpeechRecognition: Nos permite convertir el audio en texto para su posterior procesamiento. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install SpeechRecognition
  • navegador web : proporciona una interfaz de alto nivel que permite mostrar documentos basados ​​en la web a los usuarios. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install webbrowser
  • Wikipedia: se utiliza para obtener una variedad de información del sitio web de Wikipedia. Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install wikipedia

Métodos utilizados para el Asistente Virtual

1) Método de habla

Speak Method nos ayudará a tomar la voz de la máquina. Aquí está la explicación del código de Speak Method

Python3

def speak(audio):
     
    engine = pyttsx3.init()
    # getter method(gets the current value
    # of engine property)
    voices = engine.getProperty('voices')
     
    # setter method .[0]=male voice and
    # [1]=female voice in set Property.
    engine.setProperty('voice', voices[0].id)
     
    # Method for the speaking of the assistant
    engine.say(audio) 
     
    # Blocks while processing all the currently
    # queued commands
    engine.runAndWait()

 2) Tomar método de consulta

Este método verificará la condición. Si la condición es verdadera, devolverá la salida. Podemos agregar cualquier número si las condiciones para ello y si la condición se cumple obtendremos el resultado deseado.

Python3

def Take_query():
 
    # calling the Hello function for
    # making it more interactive
    Hello()
     
    # This loop is infinite as it will take
    # our queries continuously until and unless
    # we do not say bye to exit or terminate
    # the program
    while(True):
         
        # taking the query and making it into
        # lower case so that most of the times
        # query matches and we get the perfect
        # output
        query = takeCommand().lower()
        if "open geeksforgeeks" in query:
            speak("Opening GeeksforGeeks ")
             
            # in the open method we just to give the link
            # of the website and it automatically open
            # it in your default browser
            webbrowser.open("www.geeksforgeeks.com")
            continue
         
        elif "open google" in query:
            speak("Opening Google ")
            webbrowser.open("www.google.com")
            continue
             
        elif "which day it is" in query:
            tellDay()
            continue
         
        elif "tell me the time" in query:
            tellTime()
            continue
         
        # this will exit and terminate the program
        elif "bye" in query:
            speak("Bye. Check Out GFG for more exciting things")
            exit()
         
        elif "from wikipedia" in query:
             
            # if any one wants to have a information
            # from wikipedia
            speak("Checking the wikipedia ")
            query = query.replace("wikipedia", "")
             
            # it will give the summary of 4 lines from
            # wikipedia we can increase and decrease
            # it also.
            result = wikipedia.summary(query, sentences=4)
            speak("According to wikipedia")
            speak(result)
         
        elif "tell me your name" in query:
            speak("I am Jarvis. Your desktop Assistant")

3) método de toma de comando

Este método es para tomar los comandos y reconocer el comando del módulo Speech_Recognition

Python3

# this method is for taking the commands
# and recognizing the command from the
# speech_Recognition module we will use
# the recongizer method for recognizing
def takeCommand():
 
    r = sr.Recognizer()
 
    # from the speech_Recognition module
    # we will use the Microphone module
    # for listening the command
    with sr.Microphone() as source:
        print('Listening')
         
        # seconds of non-speaking audio before
        # a phrase is considered complete
        r.pause_threshold = 0.7
        audio = r.listen(source)
         
        # Now we will be using the try and catch
        # method so that if sound is recognized
        # it is good else we will have exception
        # handling
        try:
            print("Recognizing")
             
            # for Listening the command in indian
            # english we can also use 'hi-In'
            # for hindi recognizing
            Query = r.recognize_google(audio, language='en-in')
            print("the command is printed=", Query)
             
        except Exception as e:
            print(e)
            print("Say that again sir")
            return "None"
         
        return Query

*)método decirleTiempo

Python3

# code
def tellTime(self):
# This method will give the time
    time = str(datetime.datetime.now())
      # the time will be displayed like this "2020-06-05 17:50:14.582630"
    # nd then after slicing we can get time
    print(time)
    hour = time[11:13]
    min = time[14:16]
    self.Speak(self, "The time is sir" + hour + "Hours and" + min + "Minutes")    
"""
 This method will take time and slice it "2020-06-05 17:50:14.582630" from 11 to 12 for hour
 and 14-15 for min and then speak function will be called and then it will speak the current
 time
 """

4) Hola método

Esto solo se usa para saludar al usuario con un mensaje de saludo.

Python3

def Hello():
    # This function is for when the assistant
    # is called it will say hello and then
    # take query
    speak("hello sir I am your desktop assistant. /
          Tell me how may I help you")

5) Método principal

El método principal es el método donde se ejecutan todos los archivos, por lo que llamaremos al método Take_query aquí para que pueda reconocer y decirnos o darnos el resultado deseado. 

Python3

if __name__ == '__main__':
     
    # main method for executing
    # the functions
    Take_query()

 Código completo:

Python3

import pyttsx3
import speech_recognition as sr
import webbrowser 
import datetime 
import wikipedia
 
 
# this method is for taking the commands
# and recognizing the command from the
# speech_Recognition module we will use
# the recongizer method for recognizing
def takeCommand():
 
    r = sr.Recognizer()
 
    # from the speech_Recognition module
    # we will use the Microphone module
    # for listening the command
    with sr.Microphone() as source:
        print('Listening')
         
        # seconds of non-speaking audio before
        # a phrase is considered complete
        r.pause_threshold = 0.7
        audio = r.listen(source)
         
        # Now we will be using the try and catch
        # method so that if sound is recognized
        # it is good else we will have exception
        # handling
        try:
            print("Recognizing")
             
            # for Listening the command in indian
            # english we can also use 'hi-In'
            # for hindi recognizing
            Query = r.recognize_google(audio, language='en-in')
            print("the command is printed=", Query)
             
        except Exception as e:
            print(e)
            print("Say that again sir")
            return "None"
         
        return Query
 
def speak(audio):
     
    engine = pyttsx3.init()
    # getter method(gets the current value
    # of engine property)
    voices = engine.getProperty('voices')
     
    # setter method .[0]=male voice and
    # [1]=female voice in set Property.
    engine.setProperty('voice', voices[0].id)
     
    # Method for the speaking of the assistant
    engine.say(audio) 
     
    # Blocks while processing all the currently
    # queued commands
    engine.runAndWait()
 
def tellDay():
     
    # This function is for telling the
    # day of the week
    day = datetime.datetime.today().weekday() + 1
     
    #this line tells us about the number
    # that will help us in telling the day
    Day_dict = {1: 'Monday', 2: 'Tuesday',
                3: 'Wednesday', 4: 'Thursday',
                5: 'Friday', 6: 'Saturday',
                7: 'Sunday'}
     
    if day in Day_dict.keys():
        day_of_the_week = Day_dict[day]
        print(day_of_the_week)
        speak("The day is " + day_of_the_week)
 
 
def tellTime():
     
    # This method will give the time
    time = str(datetime.datetime.now())
     
    # the time will be displayed like
    # this "2020-06-05 17:50:14.582630"
    #nd then after slicing we can get time
    print(time)
    hour = time[11:13]
    min = time[14:16]
    speak(self, "The time is sir" + hour + "Hours and" + min + "Minutes")   
 
def Hello():
     
    # This function is for when the assistant
    # is called it will say hello and then
    # take query
    speak("hello sir I am your desktop assistant. /
          Tell me how may I help you")
 
 
def Take_query():
 
    # calling the Hello function for
    # making it more interactive
    Hello()
     
    # This loop is infinite as it will take
    # our queries continuously until and unless
    # we do not say bye to exit or terminate
    # the program
    while(True):
         
        # taking the query and making it into
        # lower case so that most of the times
        # query matches and we get the perfect
        # output
        query = takeCommand().lower()
        if "open geeksforgeeks" in query:
            speak("Opening GeeksforGeeks ")
             
            # in the open method we just to give the link
            # of the website and it automatically open
            # it in your default browser
            webbrowser.open("www.geeksforgeeks.com")
            continue
         
        elif "open google" in query:
            speak("Opening Google ")
            webbrowser.open("www.google.com")
            continue
             
        elif "which day it is" in query:
            tellDay()
            continue
         
        elif "tell me the time" in query:
            tellTime()
            continue
         
        # this will exit and terminate the program
        elif "bye" in query:
            speak("Bye. Check Out GFG for more exciting things")
            exit()
         
        elif "from wikipedia" in query:
             
            # if any one wants to have a information
            # from wikipedia
            speak("Checking the wikipedia ")
            query = query.replace("wikipedia", "")
             
            # it will give the summary of 4 lines from
            # wikipedia we can increase and decrease
            # it also.
            result = wikipedia.summary(query, sentences=4)
            speak("According to wikipedia")
            speak(result)
         
        elif "tell me your name" in query:
            speak("I am Jarvis. Your desktop Assistant")
 
if __name__ == '__main__':
     
    # main method for executing
    # the functions
    Take_query()

Producción:

Publicación traducida automáticamente

Artículo escrito por abhisheksrivastaviot18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *