Comment coder la lecture de MP3 ou le TTS avec ServerlessNabaztag

Bonjour

Je ne connaissais pas ServerlessNabaztag, c’est génial. Merci pour cette référence.

J’ai commencé à integrer les commandes dans le plugin script, ca fonctionne parfaitement :slight_smile:

Par contre, je n’ai pas trouvé comment codé la lecture de MP3 ou le TTS (Que le lapin lit désespérément avec un accent anglais en étant toutefois paramètre en Français :frowning: )

Te serait il possible de montrer comment tu as codé ces deux parties et comment tu les utilises ?

Je te remercie par avance, j’ai au moins 4 lapins à faire :smile:

C’est pas simple, mais çà marche.

1. Générer un MP3

J’utilise le TTS de elevenlabs qui me place le mp3 sur le chemin web de jeedom :

http://192.168.0.4/plugins/elevenlabs/data/jBpfuIEbbb0.mp3

Attention je crois que le lapin lit les mp3 que en http.

2. Ensuite un playurl vers l’ip du lapin :

curl http://192.168.0.36/play?u=http%3A%2F%2F192.168.0.4%2Fplugins%2Felevenlabs%2Fdata%2FjBpfuIEbbb0.mp3

1 « J'aime »

Ah Merci
Je vais regarder cela de plus près et voir si j’y arrive :slight_smile:

@loic.gouraud
Et bien ca marche super et les voix sont quand même top !

J’ai deux questions supplémentaires :

  • En as tu trouvée une qui se rapproche des voix originales utilisées dans le cadre de l’heure ou des surprises ?
  • Sais tu si avec serverless on peut utiliser le lecteur NFC et le bouton du lapin ?

Merci en tout cas pour le partage de cette solution et ta réponse rapide sur le TTS, c’est top !

J’ai pas trouvé de voix proche du lapin.

Le NFC je n’ai pas fait. Mais le bouton oui. Il faut passer par un webhook non documenté trouvé dans le code « https://github.com/andreax79/ServerlessNabaztag/blob/main/firmware/utils/hooks.mtl »

il faut placer sur ton serveur web un répertoire « hooks » au même niveau que le « config » dans le VL.
Dans ce répertoire, tu places un fichier PHP « rfid.php » « click.php » ou « ears.php » qui sera appelé quand tu appuies sur le bouton ou tu bouges une oreille.

par exemple dans mon « click.php » j’ai fait un appel à une api scenario jeedom:

 <?php
$chaine='http://192.168.0.4/core/api/jeeApi.php?apikey=3akRWFQ25&type=scenario&id=13&action=start&tags=lapin%3Danatole%20hook%3Dclic';
$retour=file_get_contents($chaine);
?>
1 « J'aime »

Ah super
Je vais tester ça…
Merci !

Bonjour @loic.gouraud

Super je progresse et je vais pouvoir basculer mes nabaztag vers cette solution
Bon, il me reste quelques petit soucis parce qu’avec 4 nabz et des karotz c’est un peu bruyant
Je voudrais pouvoir :

  • désactiver les moods (surprise) automatiques et les provoquer par scénario (ça je sais) c’est désactiver que je n’ai pas trouvé
  • idem gérer l’heure moi même et pas en auto (d’autant qu’il y a aussi des messages toutes les demi heure)
  • et enfin permettre de choisir des horaires de lever / coucher à la demi heure

J’ai dans l’idée que pour réussir ça il faudrait modifier et recompiler mais la ça atteint mes limites

As tu fais des choses en ce sens ?
Merci encore pour la découverte de cette solution

désactiver les moods (surprise) automatiques et les provoquer par scénario (ça je sais) c’est désactiver que je n’ai pas trouvé.

Chez moi les surprises/et taichi sont uniquement pilotées par une commande/scenario http, le lapin n’est pas autonome. Si je veux qu’ils soient silencieux je les fait s’endormir.

gérer l’heure moi même et pas en auto (d’autant qu’il y a aussi des messages toutes les demi heure)

C’est pareil chez moi, impossible de les faire taire toutes les heures il lit l’heure.

permettre de choisir des horaires de lever / coucher à la demi heure

Pour çà j’utilise http://xxx/wakeup et http://xxx/sleep via scenario

J’ajoute que comme ils disent l’heure, il faut que tu la gères la timezone via scenario.
Quand on passe en heure d’été je lui envoie http://192.168.0.20/time?v=120
Quand on passe en heure d’hivers je lui envoie http://192.168.0.20/time?v=60

Pour savoir si on est en heure été ou hivers, j’utilise une info plugin script qui s’auto-actualise à 0 4 * * * :

json=$(curl -s "http://worldtimeapi.org/api/timezone/Europe/Paris" )
DST=$(echo $json |jq '.dst')

if [ $DST = "true" ]
then
	echo "été"
else
	echo "hiver"
fi

Hors sujet déplacé.

1 « J'aime »