En esta entrada vamos a ver cómo reproducir el texto que queramos en forma de sonido en un Google Home haciendo uso de la librería pychromecast.
En teoría esta solución ha de ser válida para todos los modelos de Google Home o aparatos compatibles con Chromecast que sean capaces de reproducir audio, en mi caso usaré un Google Nest Mini.
Índice de contenido
Motivación
En este caso, la motivación para construir un script en python que reprodujese sonido a través del altavoz de Google era estar al tanto del stock de PlayStation 5 o Xbox Series X. Hice un script que cada 5 minutos barría las páginas de estos productos en las tiendas más populares comprobando si había unidades disponibles, y, en caso afirmativo, se reproducía un sonido como este: «Hola, hay stock de PlayStation 5 en Amazon», con lo que si estaba inmerso en alguna tarea, el altavoz me daba el chivatazo y conseguía enterarme de cuando se ponían a la venta para hacerme con una. Si te preguntas si el script cumplió su cometido, la respuesta es sí 😜
Instalación
Te dejo un enlace a la página de github de la librería, donde el creador indica cómo instalarlo, haciendo uso de los siguientes comandos:
pip install -r requirements.txt
Donde este fichero tiene las siguientes dependencias:
protobuf>=3.0.0 zeroconf>=0.25.1 casttube>=0.2.0
Obtener la IP del dispositivo
Para poder reproducir contenido en el dispositivo, hemos de conocer su dirección IP dentro de la red, podemos verla a través de los dispositivos conectados en nuestro router, usando la app ‘Fing’ cuando conectados a nuestra red wifi o con la app de Google Home, como se muestra a continuación:




Una vez la tengamos, la guardaremos para usarla en el script.
Convertir texto en sonido con Python
Para reproducir sonido en el google home, primero hemos de tener un archivo en formato audio, en mi caso usaré mp3, para conseguir transformar texto en audio, usaremos la librería de python ‘gtts’:
from gtts import gTTS import shutil def generateMp3(texto): ttmp3 = gTTS(texto, lang='es-us') ttmp3.save("audio.mp3") shutil.copy("audio.mp3", "[RUTA_SERVIDOR_WEB]/audio.mp3")
Cuando llamemos a la función generateMp3, pasando el texto que queramos, se generará un fichero mp3, que a su vez se copiará a una ruta accesible de un servidor web de nuestra red. ¿por qué? Porque para que nuestro google home pueda reproducir el archivo, este ha de estar disponible a través de una url. Podemos crear un servidor sencillo en nuestra red local usando docker o cualquier otro software como xampp.
Reproducir sonido en Google Home usando Pychromecast
Ahora solo queda reproducir el mp3 creado anteriormente:
import urllib.request import pychromecast def playAudio(): device = pychromecast.Chromecast('TU_IP') device.wait() media = device.media_controller media.play_media('RUTA_SERVIDOR_WEB/audio.mp3', 'audio/mp3') media.block_until_active()
Cuando llamemos a la función playAudio, se reproducirá el archivo que hemos generado a partir de nuestro texto personalizado.
Conclusiones
La capacidad para reproducir audio programáticamente en estos aparatitos nos abre un mundo de posibilidades infinito, desde comprobar el stock de las consolas como comenté anteriormente, hasta avisar cuando haya intrusos en algún lugar, avisar cuando haga mal tiempo… en definitiva, podrías conectar cualquier sensor a una raspberry o similar, y programar avisos sonoros a través del Google Home, por ejemplo.
Saludos!