chatGPT

Tabla de contenidos

Introducción

Los asistentes de IA basados en voz son cada vez más populares en aplicaciones que van desde la atención al cliente a los asistentes personales. Este artículo describe la implementación de un chatbot habilitado para voz que permite a los usuarios interactuar con un modelo de IA hablando en lugar de escribiendo.

El chatbot integra reconocimiento de voz y conversión de texto a voz (TTS) con un chatbot de generación mejorada por recuperación (RAG) basado en Mistral LLM. De este modo, el robot escucha las consultas del usuario, recupera la información pertinente, genera respuestas y se las devuelve, creando una experiencia de conversación fluida.

Instalación

pip install pyttsx3 SpeechRecognition

1. Inicialización del chatbot de voz

El chatbot se implementa en una clase llamada VoiceChatbot, que amplía el chatbot basado en texto existente (ChatBot).

import pyttsx3
import speech_recognition as sr
from chatbot import ChatBot

Bibliotecas clave utilizadas

  • pyttsx3 → Convierte las respuestas de texto en voz.
  • speech_recognition → Captura y transcribe el habla del usuario.
  • ChatBot (importado de chatbot.py) → Maneja interacciones de IA basadas en texto. (código y explicación del chatbot)

2. Configuración del reconocimiento de voz y de la conversión de texto a voz

class VoiceChatbot():
def __init__(self, name):
self.name = name
self.chatbot = ChatBot() # Initialize the AI chatbot

# Set up text-to-speech engine
self.engine = pyttsx3.init()

# Set up speech recognition
self.voice_recognizer = sr.Recognizer()

¿Cómo funciona?

  • El chatbot se inicializa con un nombre (por ejemplo, «Faheem Bot»).
  • Se utiliza el motor TTS pyttsx3 para convertir las respuestas de texto en voz.
  • speech_recognition.Recognizer() se utiliza para capturar y procesar el habla del usuario.

3. Captura de la voz del usuario

El método listen() graba el audio del micrófono y lo convierte en texto.

def listen(self):
with sr.Microphone() as source:
audio = self.voice_recognizer.listen(source, phrase_time_limit=5)
print("Processing...")
try:
text = self.voice_recognizer.recognize_google(audio)
return text
except Exception as e:
print("Error: " + str(e))
return None

¿Cómo funciona?

  1. Graba audio desde el micrófono (límite de 5 segundos).
  2. Utiliza la API de reconocimiento de voz de Google para convertir la voz en texto.
  3. Si falla el reconocimiento de voz, imprime un mensaje de error.

Esto garantiza que el chatbot pueda capturar la entrada hablada del usuario y procesarla para generar una respuesta.

4. Conversión de respuestas de IA en voz

El chatbot utiliza el método speak() para vocalizar las respuestas.

def speak(self, text):
self.engine.say(text)
self.engine.runAndWait()

¿Cómo funciona?

  • Llama a pyttsx3.say(text) para convertir el texto en habla.
  • Utiliza runAndWait() para garantizar que el habla se reproduce completamente antes de pasar a la siguiente operación.

Esto crea una experiencia conversacional fluida, similar a la humana, en la que el chatbot habla de vuelta al usuario.

5. Ejecución del bucle conversacional

El método run() inicializa el chatbot e inicia una conversación interactiva basada en voz.

def run(self):
self.chatbot.ask(f"You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, say that you don't know. Use three sentences maximum and keep the answer concise. Your name is {self.name}.")
self.speak(f"Hello, I am {self.name}. How can I help you today?")

while True:
prompt = self.listen()
if prompt is not None:
print("You: " + prompt)
response = self.chatbot.ask(prompt)
print(self.name, ":", response)
if "Have a great day!" in response:
exit()
self.speak(response)
else:
self.speak("I'm sorry, I didn't understand that.")

¿Cómo funciona?

  1. Inicializa el chatbot con un mensaje del sistema.
  2. Saluda al usuario y dice su nombre.
  3. Entra en un bucle en el que:
  • El chatbot escucha la entrada del usuario.
  • Se imprime el texto reconocido.
  • El modelo de IA genera una respuesta basada en la entrada del usuario.
  • La respuesta se pronuncia en voz alta utilizando pyttsx3.
  • Si la respuesta es «¡Que tengas un buen día!», el chatbot sale de la conversación.
  1. Si falla el reconocimiento de voz, el chatbot se disculpa y pide al usuario que repita.

Este bucle permite una conversación continua y en tiempo real, como hablar con un humano.

6. Ejecutar el chatbot

Para iniciar el chatbot, ejecuta:

if __name__ == "__main__":
bot = VoiceChatbot("Faheem Bot")
bot.run()

Esto inicializa y pone en marcha el asistente de voz, permitiendo a los usuarios interactuar con él en modo manos libres.

Conclusión

Este chatbot de voz combina el reconocimiento de voz, la conversión de texto a voz y las respuestas basadas en IA para crear una experiencia de conversación natural. Al aprovechar Mistral LLM y RAG, el chatbot puede recuperar información y responder a preguntas basadas en datos personalizados de la empresa.

Referencias

Para la clase de chatbot visite el siguiente artículo.

          Deja una respuesta

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