Sonos TTS fichier de 1ko illisible

Salut à tous,
Je tourne en rond sur ce problème depuis quelques jours et nous pas de solutions dans les divers topics à ce sujet. Le pise que cela à fonctionner mais ne fonctionne plus depuis 1 ou 2 mois…
Matériel:
RPi3+ Jeedom v4.2.5 / Sonos Ikea Lampe

Sur mon plugin Controller Sonos lorsque je lance la commande « dire » sur une enceinte aucun fichier n’est lu.
La configuration à l’ait ok car le fichier est créé sur le NAS me ne fait qu’1 ko.
Il est bien sur donc illisible et sonos me dit comme à d’autre " « Impossible de lire c12c36b51486193a7f57dff5a7a43ced.mp3 le fichier n’est pas correctement codé »". Je pense donc que cela vient du TTS et de la génération du fichier audio.
Effectivement en copiant dans le partage NAS un fichier mp3 et lui donnant le nom du fichier créé précédemment Lors du lancement de la commande « dire » le fichier musique substitué est bien lu…

J’ai reset les enceintes.
J’ai installé le package ffmpeg.
l’API TTS est activé et TTS sélectionné en tant que moteur TTS
et en interne la configuration est en http.

Je ne trouve quasiment pas de logs et pourtant tout est en debug tts et playtts. D’ailleurs dans l’affichage de tous les logs, il n’y même pas « tts » qui apparait.

Je pense à un (ou plusieurs) paquet manquant peut être mais lequel…

Merci d’avance pour votre aide, je pense avoir lu tous les topic traitant de problème presque similaire mais malheureusement je n’y ai pas trouvé de solution.

Cdlt.
Mike

Hello DevilpanpanGTR,
enfin je trouve quelqu’un qui a le même souci que moi.
Je ne sais pas depuis combien ce problème existe chez moi car les MP3 du TTS qui ont été générés il y a un an continuent de fonctionner mais comme toi dès lors que je veux ajouter un nouveau TTS, Jeedom crée bien le fichier dans le dossier et il ne fait jamais que 1ko.
Lorsque je le lis via VLC, je n’entends qu’une sorte de BIP.
J’ai aussi vérifié 5X les droits d’accès et fait en sorte que le user Jeedom puisse écrire / supprimer / lire dans le dossier, rien n’y fait.
Même si j’utilise l’autre moteur TTS proposé désormais à la place de PicoTTS (Espeak), le résultat est le même.
On dirait vraiment que Jeedom n’arrive plus à générer un flux son en sortie alors qu’il a bien les droits d’accès + écriture dans le dossier.
Je ne trouve pas de solution et surtout je ne sais pas où chercher…Tout cela fonctionnait très bien à une époque et je n’y ai pas touché depuis.

NB: idem avec du TTS vers une Google Home : je ne fais qu’entendre une sorte de bip et …rien…

  • Les commandes de génération en wave fonctionnent en local pour espeak et pico2wave
  • Les dépendances sont installée ainsi que ffmpeg
  • Les anciens fichiers sont encore lus correctement donc c’est vraiment la génération du MP3 qui pose souci.
  • Jeedom 4.2 et Debian Buster en DIY

Si seulement on savait comment le core gère désormais le TTS…
Lionel

Effectivement, je pense qu’il y a surement quelque chose qui a changé… Ou peut être une mise à jour… J’espère qu’une âme charitable pourra nous mettre sur la voie et ainsi rétablir cette fonctionnalité bien pratique…

Ca semble se situer au moment de compresser en MP3.
Si je comprends bien le fonctionnement, Jeedom Core génère le wave (peu importe le moteur TTS choisi Espeak ou PicoTTS) puis il devrait le compresser en mp3 et ensuite le coller au bon endroit.
Les commmandes espak et pico fonctionnent bien en manuel vers du wave, la copie d’un fichier se fait correctement vers l’emplacement distant…il ne reste que la phase de compression qui doit poser souci.

Depuis que c’est passé dans le core, plus moyen pour moi d’aller gratter plus loin.
Ce n’est pas non plus lié au plugin et si on n’a pas de réponse je pense aussi parce qu’on n’est pas au bon endroit.
Ce qui est surprenant c’est qu’on ne semble pas être nombreux à avoir ce souci.
Es-tu aussi en DIY, Debian 10 et Jeedom 4.2 beta (sur une VM Proxmox)?

Lionel

Hello,
DIY, rasp3b+, jeedom 4.2.5 beta
Effectivement on ne semble pas nombreux à rencontrer ce problème précis… Je ne sais pas si cela ne viendrais pas du passage sur ffmpeg…
Je viens d’acquérir un service pack power pour remonter le problème au support… Je posterai tout avancement et solution si le problème est résolu…

Merci, j’attends avec impatience ton retour :wink:

Hello, as-tu eu un contact à ce sujet depuis le 13 décembre?
J’hésitais aussi à ouvrir une demande de support de mon côté juste pour montrer que tu n’es pas le seul dans ce cas mais je ne veux pas non plus le surcharger inutilement.

Lionel

Bonjour,
L’équipe est bien au courant du soucis et je pense que c’est un probleme au niveau de votre OS (surement du au passage de debian 9 à 10). Je vous invite pour cette monté de version de repartir d’une installation vierge ou mieux d’utiliser les images que l’on fait.

Bonjour, Loic,
merci pour le retour.
J’avais des doutes sur l’origine du problème…ça semble se confirmer.
En fait je n’ai pas fait d’upgrade de Debian 9 vers 10 mais une fresh install de Debian 10 sur laquelle j’ai récupéré l’ancien backup.
Est-ce qu’il serait judicieux d’essayer de passer en Debian 11 pour voir ce que ça pourrait donner?
Lionel

Debian 11 n’est pas compatible jeedom (enfin pour certain plugin, il y a la liste sur notre site de doc)

En gros votre soucis c’est qu’il manque le truc qui convertie le texte en fichier audio.

Ok, j’avais l’impression lors de mes tests que c’était plutôt la partie qui convertit le wav généré en mp3 qui ne fonctionnait pas.
En effet, j’avais réussi à générer en ligne de commande des fichiers WAV totalement lisibles et complets via PicoTTS ou Espeak.
Le truc c’est que j’ai jamais réussi à aller plus loin car je ne connais pas le process Jeedom pour effectuer cette action (compression mp3).

J’imagine que vous utilisez un outil en ligne de commande qui est chainé après la génération du WAV?
Du coup on devrait aussi avoir un mp3 généré « localement » dans un dossier temp avant déplacement vers le NAS?

Voila le code : https://github.com/jeedom/core/blob/alpha/core/api/tts.php

En gros c’est un espeak ou pico2wave chainé avec un avconv ou ffmpeg faut donc vérifier pour les 2 partie d’avoir l’un ou l’autre.

Pour info si vous passez le log tts en debug vous aurez dans la log tts la ligne de commande que jeedom fait.

Super, merci!
Je vais tester ça ce soir ou demain.
Lionel

J’ai donc fait un scenario qui lance une commande vocale de test après avoir activé les logs TTS en debug via le menu SYSTEME=> CONFIGURATION.

Je n’arrive pas à obtenir quelque log que ce soit…


Je pense que j’ai dû oublier quelque chose?
Pour info, j’avais installé le plugin playTTS qui donne le même résultat (fichier illisible de 1ko) mais pour ce dernier j’arrive à avoir des logs (qui ne m’aprennent pas grand chose d’ailleurs.
Je vais creuser un peu plus au niveau du code pour simuler l’encodage mp3 avec avconv dans le shell.

Edit : j’ai réussi à créer le MP3 correct et lisible par ligne de commandes :

 pico2wave -l='FR-fr' -w=test.wav 'TEST PICO2WAVE' > /dev/null

 ffmpeg -i test.wav -ar 44100 -ac 2 -ab 192k -f mp3 'outmp3.mp3' > /dev/null 

C’est surprenant que cela marche. Cependant je n’arrive quand même pas à avoir des logs de tts.php.
Elles seraient certainement très utiles vu que je ne connais pas le dossier temporaire de travail des wav et mp3

C’est que ça bloqué avant, peut-être regarder le log http.error sinon va falloir ouvrir un ticket avec accès support pour que je fasse du debug

J’ai vidé les logs http.error et j’ai rejoué le scénario TTS.
Rien dans les logs http.error et aucun log tts.

Par contre, je m’y perds un peu…
On sait que le fichier mp3 illisible est bien généré et envoyé sur le NAS en toute fin de traitement et pourtant il ne semble pas passer par tts.php au niveau Core.
Est-ce qu’il tenterait d’utiliser un ancien plugin ou moteur auquel il manquerait désormais une brique?

Je vois pas là c’est peut-être que sonos utilise pas le truc général de tts du core. Mais il me semblait pas avoir permis ça…

Je ne suis pas sûr de ça…Le plugin Google Cast pour le TTS me sort exactement le même résultat que le plugin Sonos.
Pour moi le souci vient bien en amont.
Je reste persuadé que je dois trouver un moyen d’avoir des logs sur le script tts.php pour y voir voir plus clair.
Je vais tenter de modifier le script et forcer l’envoi des logs quoi qu’il advienne (quitte à les avoir dans le syslog).
Si par hasard je ne récupère rien, je saurai que le process ne passe pas par le script et que le problème est bien là…

Bon, j’ai modifié le tts.php pour sortir direct en erreur 404 => aucun log aucune erreur nulle part lorsque j’appelle la fonction dire du plugin sonos
J’ai ensuite carrément supprimé tts.php et redémarré Jeedom => même constat.
(j’ai toujours le fichier illisible de 1ko (re)généré sur le NAS par contre… WTF???)

Aucune trace non plus dans http.error.
Là je dois bien dire que je sèche… il semble passer par autre chose que le standard.
Je vais tenter avec le TTS de la google home mais l’autre jour j’avais le même résultat…

Bonjour Lionel,

Je viens de clôturer mon soucis grâce à l’intervention de Loic sur mon ticket support. Le problème venait de mon plugin « stable » installé sur mon jeedom Beta… Il a fallu qu’il pousse le correctif directement sur mon serveur… Si tu n’abouti pas non, je pense qu’il te faudra également passer par l’ouverture d’un ticket permettant à l’équipe d’approfondir…
Bon courage et de bonnes fêtes à tous !!!
Mickael