Estaba intentando crear un asistente personal básico, simplemente para aprender un poco más sobre el lenguaje Python (tengo 16 así que aún no he comnenzado con la programación en clases).
Y me he encontrado con un extraño error que me dice que una variable está indefinida dentro de una función, sin embargo, estoy bastante seguro de que la he declarado, y debería aceptarla.
Aquí os dejo mi código.
# Importar Librerías import speech_recognition as sr # Reconocimiento de voz. from gtts import gTTS # Conversión de texto a MP3. import playsound # Lectura de MP3. # Declarar Variables username = "" myName = "Vewi" microphone = sr.Recognizer() tts = "" audioNumber = 0 # Ésta es la variable declarada. lang = "es-ES" # Función Presentarse def ImVewi(): audioText = ("Hola, soy " + myName + ". Mi trabajo será ayudarte. Para comunicarte conmigo, prueba a hablarle al micrófono. Ahora, te haré unas preguntas rápidas para poder mejorar tu experiencia.") TextToSpeech(audioText) ChangeUsername() # Función Obtener Username def ChangeUsername(): global audioText with sr.Microphone() as source: audioText = ("¿Cómo te llamas?") TextToSpeech(audioText) print("a") audio = microphone.listen(source) print("Listened") try: username = microphone.recognize_google(audio, language=lang) audioText = ("Perfecto, ahora te llamaré " + username + ".") TextToSpeech(audioText) except sr.UnknownValueError: audioText = ("Disculpa, no te he entendido. ¿Podrías repetirlo?") TextToSpeech(audioText) ChangeUsername() except sr.RequestError: audioText = ("Disculpa, se ha producido un error. ¿Podrías repetirlo?") TextToSpeech(audioText) ChangeUsername() # Transformar Texto a Audio def TextToSpeech(audioText): # Ésta es la función con el error. audioNumber+=audioNumber # El error lo da en esta línea. tts = gTTS(text=audioText, lang = lang) tts.save("Audio/Speech"+str(audioNumber)+".mp3") playsound.playsound("Audio/Speech"+str(audioNumber)+".mp3", True) # Llamar Funciones ImVewi()
Debería crear un archivo MP3 llamado “Speech1.mp3” ya que no me deja por defecto sobreescribir los archivos anteriormente creados, por lo que no puede ser simplemente “Speech.mp3” o un nombre predefinido.
En la terminal me da este problema:
Undefined variable ‘audioNumber’ // Línea 58, columna 5
También me serviría si alguien supiese otra forma de hacer ésto, o de sobreescribir los archivos MP3 anteriormente creados.
He estado un buen rato intentándolo y no he sabido solucionarlo. Gracias de antemano.