Para poder recuperar y escuchar aquellas palabras #identificables que irán sucediendo 🔴 I’m Live!, es necesario montar un pequeño servidor web que pueda comunicar a la una Raspberry Pi Central, y que también podría ser un ordenador.

Hay distintas maneras de realizar esta misión, se puede instalar por ejemplo un servidor web Apache, o LAMP. Hay mucha documentación actualizada al respecto.
Sin embargo, descubrí que hay una librería para Python bastante sencilla y que de momento he podido hacer funcionar bien. Este módulo se llama http.server y se puede ver toda la descripción, clases y parámetros aquí.

En este post describiré cómo he hecho un código .py, que lee el estado de una URL y lo inserta en la sintaxis de nuestro querido espeak. Me he basado en un ejemplo publicado por Henry Cheung en donde hace un webserver para prender y apagar un led.

  1. Hacer un archivo de Python con la extensión .py. Para ello estoy usando editores de texto: Brackets o Atom. Una vez que tengo terminados los códigos los creo dentro de la Raspberry Pi. Para este ejemplo lo llamaremos tts_webserver.py. También se puede crear directamente desde la Raspberry con:
    sudo nano tts_webserver.py
  2. Dentro del archivo, colocar el siguiente código:
from subprocess import call #texttospeech
import os
from http.server import BaseHTTPRequestHandler, HTTPServer

host_name = '192.168.1.106'    # Change this to your Raspberry Pi IP address
host_port = 8000 #Puerto a escuchar



class MyServer(BaseHTTPRequestHandler):
    """ A special implementation of BaseHTTPRequestHander for reading data from
        and control GPIO of a Raspberry Pi
    """

    def do_HEAD(self):
        """ do_HEAD() can be tested use curl command
            'curl -I http://server-ip-address:port'
        """
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()

    def do_GET(self):
        self.do_HEAD()
        status = ''
        if self.path=='/':
            print("Path vacio")
        elif self.path!='/':
            texto = self.path #variable para leer lo que hay después del slash /
            print(texto) #imprimir en terminal
            os.system("espeak "+ texto +" -ves-la -k5 -s140 --stdout | aplay -D bluealsa") #Aquí dam$



if __name__ == '__main__':
    http_server = HTTPServer((host_name, host_port), MyServer)
    print("Server Starts - %s:%s" % (host_name, host_port))

    try:
        http_server.serve_forever()
    except KeyboardInterrupt:
        http_server.server_close()

3. Cerrar el archivo von Ctrl+X y ejecutar el código con:
python3 tts_webserver.py

Instantáneamente después, terminal devolverá la ip con el puerto que has designado. 

4. Abrir un navegador web y colocar la IP y el puerto, en mi caso por ejemplo: 
192.168.1.106:8000
5. Añadir texto después de la barra, por ejemplo:
192.168.1.106:800/hola,mundo
Aquí deberías escuchar a tu altavoz decir estas palabras, si es así, hemos logrado que un robot nos murmure al oído.

Warning! Esto está aún en proceso.
Cosas por reparar:
– De momento de alguna manera el GET llama también al path vacío y me devuelve en TTS un “favicon.ico”. Why?