L'architecture

Le programme mplayer est en général disponible par défaut sur toutes les distributions linux. Il est donc utilisable sur une Raspberry Pi. On peut naturellement le lancer tel quel en spécifiant un fichier audio ou l'url d'une radio. Mais pour faciliter les opérations un certain nombre de scripts bash ont été écrits. Ils permettent de lancer le programme pour une sélection de radios prédéfinies, de l'arrêter facilement, de régler le volume, etc. Ces scripts sont accessibles une fois connecté sur la rpi, soit directement soit par ssh depuis un autre ordinateur.

En janvier 2023 le programme utilisé pour la sortie audio peut-être aussi mpg123. Il est plus simple à configurer. Le choix se fait en changeant le contenu de la variable RADIOK_PLAYER.

La conception de l'application devrait être revue en suivant les principes des interfaces REST.
Le contrôle vocal est lui aussi à reprendre.

Pour éviter d'avoir à se connecter via ssh un serveur http a donc été installé sur la rpi. Il héberge une petite application web qui lance elle-même les scripts bash en fonction des requêtes http reçues par le serveur. Ces requêtes peuvent être envoyées depuis un navigateur comme Chrome, Firefox, Safari, IEx tournant sur n'importe quel autre ordinateur ou tablette. On peut aussi utiliser curl(1) ou wget(1) si l'on préfère. Le serveur propose des pages web pour sélectionner une station de radio, changer le volume, spécifier une heure de démarrage.

Le dernier moyen de contrôle de l'application est le contrôle vocal dont 2 versions ont été développées.

La première version est basé sur Jasper développé à Carnegie Mellon University. Un des outils de cette bibliothèque a été modifié pour accéder au mplayer et lui envoyer des commandes en prononçant à haute voix des mots instruction devant un microphone. Ces mots, s'ils sont correctement décodés par le programme d'analyse vocale, déclenchent l'envoi de requêtes http par curl(1) au serveur web de la rpi qui, à son tour, peut lancer les scripts bash. Le contrôleur voix joue un rôle analogue aux browsers. Il peut tourner sur la rpi elle-même mais il peut être aussi lancé sur une autre machine puisque la communication avec le reste du système s'effectue via le réseau.

La deuxième version a une architecture voisine mais l'analyse vocale n'est pas effectuée localement par un sous-programme mais par l'application proposée par google pour la reconnaissance vocale. Ce programme est disponible en ligne sur un serveur qu'on intérroge par des requêtes http.

architecture.