Asistente virtual de IA usando Python

Contenidos

2. Explicación del código

Por lo tanto creemos nuestro propio asistente virtual.

Notas

  • Todos los códigos están disponibles en mi GitHub.
  • El video de demostración de YouTube y el código de video de YouTube además están disponibles en mi canal.
  • Los links y paquetes necesarios se mencionan a continuación.
  • Se agradecería compartir.

Vamos a codificar

2.1. Paquetes y bibliotecas requeridos

pip install JarvisAI

Este es el último módulo de asistente virtual, creado por mí. Proporciona la funcionalidad básica de cualquier asistente virtual. El requisito previo es solo Python (> 3.6).

Uso y características

Después de instalar la biblioteca, puede importar el módulo:

import JarvisAI
obj = JarvisAI.JarvisAssistant()
response = obj.mic_input()
print(response)

La funcionalidad se borra con el nombre del método. Puede chequear el código, a modo de ejemplo.

  1. entrada_micrófono
  2. text2speech
  3. apagar
  4. sitio web_opener
  5. enviar correo
  6. tell_me_date
  7. tell_me_time
  8. launch_any_app
  9. clima
  10. Noticias
  11. dígame

Leer más sobre esto aquí y además puedes contribuir a este repositorio aquí.

2.2. Código-

Importaciones

import JarvisAI
import re
import pprint
import random

Creación de objetos de JarvisAI según documentación

obj = JarvisAI.JarvisAssistant()

Hemos creado esta función ‘t2s (texto)’. Esto convertirá cualquier texto a voz. Todo el programa utilizaremos (llamaremos) a esta función para producir voz a partir de texto.

def t2s(text):
    obj.text2speech(text)

Queremos escuchar de forma continua las aportaciones del usuario, por lo que este ‘mic_input ()’ intentará obtener audio del micrófono de la computadora de forma continua. Procesará el audio y devolverá el texto en la variable ‘res’. Podemos utilizar esta variable ‘res’ para realizar alguna acción de acuerdo con la entrada del usuario.

while True:
    res = obj.mic_input()

Pronóstico del tiempo: Estamos usando una expresión regular para hacer coincidir las consultas en la entrada del usuario. Si se encuentra ‘clima’ o ‘temperatura’ en la entrada del usuario ‘res’, entonces queremos hacer un pronóstico del tiempo. No es necesario escribir cosas desde cero, simplemente llame a ‘obj.weather (city = city)’.

Solo necesita obtener la ciudad de la entrada del usuario y pasarla a la función de clima. Le dirá el pronóstico del tiempo para su ciudad.

Podemos pasar este ‘weather_res’ devuelto a ‘t2s (weather_res)’ para producir voz desde la cadena ‘weather_res’.

while True:
    res = obj.mic_input()

if re.search('weather|temperature', res):
        city = res.split(' ')[-1]
        weather_res = obj.weather(city=city)
        print(weather_res)
        t2s(weather_res)

Noticias: De manera semejante a la anterior, haga coincidir la palabra ‘noticias’ de la entrada del usuario ‘res’. Si coincide, llame a ‘obj.news’.

Devolverá 15 noticias como una lista de cadenas. Entonces, podemos buscar noticias como ‘news_res[0]’y pasarlo a’ t2s (news_res[0]) ‘.

while True:
    res = obj.mic_input()

if re.search('news', res):
        news_res = obj.news()
        pprint.pprint(news_res)
        t2s(f"I have found {len(news_res)} news. You can read it. Let me tell you first 2 of them")
        t2s(news_res[0])
        t2s(news_res[1])

Cuenta casi todo: Obtendrá los primeros 500 caracteres de Wikipedia y los devolverá como una cadena. Puede utilizar ‘obj.tell_me (topic)’.

Debe pasar ‘tema’ a ‘tell_me (tema = tema)’. El tema es la keyword que desea conocer.

while True:
    res = obj.mic_input()

if re.search('tell me about', res):
        topic = res.split(' ')[-1]
        wiki_res = obj.tell_me(topic)
        print(wiki_res)
        t2s(wiki_res)

Fecha y hora: Le dirá la fecha y hora actuales de su sistema.

while True:
    res = obj.mic_input()

if re.search('date', res):
        date = obj.tell_me_date()
        print(date)
        print(t2s(date))

if re.search('time', res):
        time = obj.tell_me_time()
        print(time)
        t2s(time)

Abra cualquier portal web: Este ‘obj.website_opener (domain)’ abrirá cualquier portal web para usted. Solo necesita obtener el dominio de la entrada del usuario y después pasar a ‘obj.website_opener (dominio)’. Abrirá el portal web en su navegador predeterminado.

while True:
    res = obj.mic_input()

if re.search('open', res):
        domain = res.split(' ')[-1]
        open_result = obj.website_opener(domain)
        print(open_result)

Inicie cualquier aplicación, juego, etc.

Esto es un poco complicado, en ‘obj.launch_any_app (path_of_app = path)’ la función que necesita para pasar la ruta de su archivo ‘.exe’.

Por lo tanto hemos creado el diccionario ‘dict_app’ que tiene un ‘nombre de aplicación’ como clave y una ‘ruta’ como valor. Podemos utilizar este ‘dict_app’ para realizar búsquedas. Si la aplicación de entrada del usuario existe en el diccionario, la abriremos obteniendo la ruta.

El siguiente ejemplo es solo para Chrome y Epic Games.

while True:
    res = obj.mic_input()

if re.search('launch', res):
        dict_app = {
            'chrome': 'C:Program Files (x86)GoogleChromeApplicationchrome.exe',
            'epic games': 'C:Program Files (x86)Epic GamesLauncherPortalBinariesWin32EpicGamesLauncher.exe'
        }

        app = res.split(' ', 1)[1]
        path = dict_app.get(app)
if path is None:
            t2s('Application path not found')
            print('Application path not found')
else:
            t2s('Launching: ' + app)
            obj.launch_any_app(path_of_app=path)

Saludos y Charla, puedes crear saludos y chatear así por ahora.

Estoy trabajando en https://pypi.org/project/JarvisAI/ para agregar el tipo de funcionalidad de chat usando Tensorflow. Usted puede contribuir para hacerlo mejor.

while True:
    res = obj.mic_input()

if re.search('hello', res):
        print('Hi')
        t2s('Hi')

if re.search('how are you', res):
        li = ['good', 'fine', 'great']
        response = random.choice(li)
        print(f"I am {response}")
        t2s(f"I am {response}")

if re.search('your name|who are you', res):
        print("My name is Jarvis, I am your personal assistant")
        t2s("My name is Jarvis, I am your personal assistant")

Pregunte- ‘¿Qué puedes hacer?’: Aquí simplemente estamos usando ‘obj.t2s ()’ para producir algo de voz. Si conoce Python, comprenderá fácilmente el siguiente código:

while True:
    res = obj.mic_input()

if re.search('what can you do', res):
        li_commands = {
            "open websites": "Example: 'open youtube.com",
            "time": "Example: 'what time it is?'",
            "date": "Example: 'what date it is?'",
            "launch applications": "Example: 'launch chrome'",
            "tell me": "Example: 'tell me about India'",
            "weather": "Example: 'what weather/temperature in Mumbai?'",
            "news": "Example: 'news for today' ",
        }
        ans = """I can do lots of things, for example you can ask me time, date, weather in your city,
        I can open websites for you, launch application and more. See the list of commands-"""
        print(ans)
        pprint.pprint(li_commands)
        t2s(ans)

3. Complete el código

import JarvisAI
import re
import pprint
import random

obj = JarvisAI.JarvisAssistant()


def t2s(text):
    obj.text2speech(text)


while True:
    res = obj.mic_input()

    if re.search('weather|temperature', res):
        city = res.split(' ')[-1]
        weather_res = obj.weather(city=city)
        print(weather_res)
        t2s(weather_res)

    if re.search('news', res):
        news_res = obj.news()
        pprint.pprint(news_res)
        t2s(f"I have found {len(news_res)} news. You can read it. Let me tell you first 2 of them")
        t2s(news_res[0])
        t2s(news_res[1])

    if re.search('tell me about', res):
        topic = res.split(' ')[-1]
        wiki_res = obj.tell_me(topic)
        print(wiki_res)
        t2s(wiki_res)

    if re.search('date', res):
        date = obj.tell_me_date()
        print(date)
        print(t2s(date))

    if re.search('time', res):
        time = obj.tell_me_time()
        print(time)
        t2s(time)

    if re.search('open', res):
        domain = res.split(' ')[-1]
        open_result = obj.website_opener(domain)
        print(open_result)

    if re.search('launch', res):
        dict_app = {
            'chrome': 'C:Program Files (x86)GoogleChromeApplicationchrome.exe',
            'epic games': 'C:Program Files (x86)Epic GamesLauncherPortalBinariesWin32EpicGamesLauncher.exe'
        }

        app = res.split(' ', 1)[1]
        path = dict_app.get(app)
        if path is None:
            t2s('Application path not found')
            print('Application path not found')
        else:
            t2s('Launching: ' + app)
            obj.launch_any_app(path_of_app=path)

    if re.search('hello', res):
        print('Hi')
        t2s('Hi')

    if re.search('how are you', res):
        li = ['good', 'fine', 'great']
        response = random.choice(li)
        print(f"I am {response}")
        t2s(f"I am {response}")

    if re.search('your name|who are you', res):
        print("My name is Jarvis, I am your personal assistant")
        t2s("My name is Jarvis, I am your personal assistant")

    if re.search('what can you do', res):
        li_commands = {
            "open websites": "Example: 'open youtube.com",
            "time": "Example: 'what time it is?'",
            "date": "Example: 'what date it is?'",
            "launch applications": "Example: 'launch chrome'",
            "tell me": "Example: 'tell me about India'",
            "weather": "Example: 'what weather/temperature in Mumbai?'",
            "news": "Example: 'news for today' ",
        }
        ans = """I can do lots of things, for example you can ask me time, date, weather in your city,
        I can open websites for you, launch application and more. See the list of commands-"""
        print(ans)
        pprint.pprint(li_commands)
        t2s(ans)

4. Repositorio de Github

Puedes utilizar mi código con total libertad. Destaca si te gusta mi trabajo, suscríbete YouTube si amas.

Simplemente clona el repositorio https://github.com/Dipeshpal/Jarvis-Assisant.git

Después ejecute pip install -r requirements.txt

Instalará todo automáticamente.

Solo abre esto Repositorio de GitHub, léelo y comprenderá cómo puede contribuir.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.