Desarrollo de un Chatbot en Python con Síntesis de Voz y Lectura de Archivos
Implementación de un Asistente de Voz en Python
A continuación se presenta el código fuente en Python para implementar un asistente conversacional básico que utiliza la biblioteca pyttsx3 para la síntesis de voz, además de la lectura de archivos de texto externo para gestionar saludos, despedidas y respuestas interactivas.
Código Fuente del Chatbot
import random as rd
import pyttsx3
def llenar_lista(nombre):
file = open(nombre, "r")
listar = file.readlines()
file.close()
tmp = []
for s in listar:
sal = s.strip("\n")
tmp.append(sal)
listar = tmp
return listar
saludos = []
saludos = llenar_lista("saludos.txt")
saludos = ["hi", 'hola', 'habla', 'holas', 'que tal', 'no tengo billete', 'que onda', 'holis', 'holiwis']
despedida = ['chao', 'bye', 'byes', 'hasta luego', 'hay los vidrios', 'topamos', 'hasta la vista baby', 'hablamos', 'posi', 'me la saco']
seguir = ['Y que mas ', 'Cuentame que deseas saber ', 'Que bien, que mas has hecho ?', 'continua', 'chuzo, en serio', 'mmm, en verdad', 'ya y?', 'prosigue']
articulos = ["y", "la", "las", "un", "en", "unos", "unas", "los", "lo", "el", "ellos", "eso", "esas", "esa", "esos", "de", "es"]
noentiendo = ["que hablas?", "explicate mejor", "queeeeeeeee?", "estas drogado, preguntame otra cosa", "habla bien flaco", "que tiro?"]
def Restaurant(lugar):
if lugar == "cercano":
print("Si y son TELEPIZZA, KFC, CHOP CHOPS, MENESTRAS DEL NEGRO")
engine.say("Si y son TELEPIZZA, KFC, CHOP CHOPS, MENESTRAS DEL NEGRO")
engine.runAndWait()
elif lugar == "lejano":
print("Si y son MC DONALD, WENDY'S, PIZZA ADICTA, BURGUER KING")
engine.say("Si y son MC DONALD, WENDY'S, PIZZA ADICTA, BURGUER KING")
engine.runAndWait()
else:
print("especifica lugar lejano o cercano")
engine = pyttsx3.init()
# engine.setProperty('voice', "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ES-MX_SABINA_11.0")
engine.setProperty('voice', "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_ES-MX_SABINA_11.0")
engine.setProperty('rate', engine.getProperty('rate') - 10)
def hablar(engine, texto):
engine.say(texto)
engine.runAndWait()
hablar(engine, "Escriba su nombre")
nombre = raw_input("Escriba su nombre: ")
fin = 0
pregunta = 0
hablar(engine, "Bienvenido al chat " + nombre + " ")
a = raw_input("Bienvenido al chat " + nombre + " ")
while fin == 0:
a = a.lower()
Características Principales del Script
- Lectura de Archivos: La función
llenar_listapermite cargar datos externos desde un archivo de texto comosaludos.txt. - Síntesis de Voz: Configuración del motor pyttsx3 para reproducir respuestas en audio utilizando voces predeterminadas del sistema operativo.
- Estructuras de Control: Uso de bucles
whiley condicionalesif-elif-elsepara gestionar el flujo de la conversación y las recomendaciones de restaurantes.