Te mostraremos cómo convertir Texto a Voz con gTTS en Python en una Raspberry de forma fácil. Tenemos que descargar e instalar algunas librearías y aplicaciones.
Contenido
Descargar gTTS
pip install gTTS
Tener instalado el reproductor VLC
Normalmente en la Raspberry tendrás instalado el reproductor VLC, se incluye en la distribución del sistema operativo Raspbian, si no es así, puedes instalarlo usando el siguiente comando:
sudo apt install -y vlc
VLC puede ser ejecutado por comandos en la terminal de la siguiente forma:
cvlc --play-and-exit archivo_voz.mp3
Puedes hacer una prueba después de la instalación.
Primera prueba de código
from gtts import gTTS import os #decodigo.com mytext = 'Saludos terrícola!' language = 'es' myobj = gTTS(text=mytext, lang=language, slow=False) myobj.save("voz.mp3") os.system("cvlc --play-and-exit voz.mp3")
Levantar un WebServer
Para levantar un WebServer se necesita un poco más de código, pero te lo mostramos a continuación y te aseguramos que prácticamente no deberás hacer ninguna modificación:
from http.server import BaseHTTPRequestHandler, HTTPServer import cgi from gtts import gTTS from io import BytesIO import os #decodigo.com hostName = "localhost" serverPort = 8080 PAGINA="""\ <html> <head> <title>Manda Saludo</title> <meta charset="utf-8"> </head> <body> <center><h1>Manda un saludo</h1></center> <center> <form action="/index.html" method="POST" > <label for="texto">Escribe el texto:</label><br> <textarea id="texto" name="texto" rows="4" cols="50"></textarea><br> <input type="submit" id="boton" name="boton" value="Enviar"><br> </form> </center> </body> </html> """ class MyServer(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/index.html': self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(bytes(PAGINA, "utf-8")) def do_POST(self): if self.path == '/index.html': form = cgi.FieldStorage( fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD': 'POST'} ) textoEnviado = form.getvalue("texto") print("texto: ", textoEnviado) language = 'es' myobj = gTTS(text=textoEnviado, lang=language, slow=False, tld='com.mx') myobj.save("voz.mp3") os.system("cvlc --play-and-exit voz.mp3") self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() self.wfile.write(bytes(PAGINA, "utf-8")) if __name__ == "__main__": webServer = HTTPServer(('', serverPort), MyServer) print("Server inicia http://%s:%s" % (hostName, serverPort)) try: webServer.serve_forever() except KeyboardInterrupt: pass webServer.server_close() print("Server para.")
Conocer la IP de mi Raspberry
Con el siguiente comando puedes conocer la IP de tu raspberry, aunque seguramente ya la sabrás si te has conectado desde VNC Viewer:
ip address