Python - Problema para pasar de texto a voz

 
Vista:
Imágen de perfil de Jey
Val: 34
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

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.


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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder