Problema para pasar de texto a voz
Publicado por Jey (15 intervenciones) el 24/08/2019 20:19:30
Hola a todos y gracias por leerme, estoy intentando crear un programa escucha lo que digo ( esto funciona bien ) y después me devuelve mi palabra en audio ( esto no me funciona del todo ). Estoy usando la librería Pytssx3, y el problema viene en que el programa es capaz de hacer esta acción una vez, pero no entiendo por qué, no entra al bucle.
Creo que el problema está en el comando "engine.RunAndWait", como su nombre indica, se queda esperando (runandWAIT). Aquí os dejo el código, muchas gracias.
La parte de más importancia es la función "callback", ahí es donde llamo a la función "hablando" pasándole la variable "text" con lo que tiene que decir.
Como os digo, esto lo hace bien una vez, pero después es imposible crear un bucle. GRACIAS.
PD: La tabulación está bien en el código original, aquí se me ha movido no sé por qué.
Creo que el problema está en el comando "engine.RunAndWait", como su nombre indica, se queda esperando (runandWAIT). Aquí os dejo el código, muchas gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import speech_recognition as sr
import time
import pyttsx3
def hablando(text):
engine.say(text)
engine.runAndWait()
def callback(recognizer, audio):
text = r.recognize_google(audio, language = "es-ES")
print("Creo que has dicho " + text)
hablando(text)
except sr.UnknownValueError:
print("No puedo entenderte")
except sr.RequestError as e:
print("No hay resultados para el sistema de reconocimiento de Google; {0}".format(e))
#Creando la voz
engine = pyttsx3.init() #Iniciando el método
rate= engine.getProperty("rate") #Ajustando la velocidad
engine.setProperty("rate", 135)
volume = engine.getProperty("volume") #Ajustando el volumen
engine.setProperty("volume", 1)
engine.say("Ajustando micrófono")
engine.runAndWait()
voice = engine.getProperty("voices") #Seleccionando voces
engine.setProperty("voices", voice[0].id)
r = sr.Recognizer() #r reconoce la voz
m = sr.Microphone() #m es el micrófono
# Escucha 5 segundos para ajustar el ruido ambiental
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source, duration=5)
r.dynamic_energy_threshold = True
stop_listening = r.listen_in_background(m, callback)
for _ in range(50): time.sleep(0.1)
while True: time.sleep(0.1)
La parte de más importancia es la función "callback", ahí es donde llamo a la función "hablando" pasándole la variable "text" con lo que tiene que decir.
Como os digo, esto lo hace bien una vez, pero después es imposible crear un bucle. GRACIAS.
PD: La tabulación está bien en el código original, aquí se me ha movido no sé por qué.
Valora esta pregunta


1