Pour les utilisateurs de SONOS

Discutez ici de vos souhaits d'évolutions et de vos idées pour eedomus

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 30 Juil 2015 08:30

Il semble qu'avec la MAJ SONOS, on ne peut plus générer de tts via le script :x
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 31 Juil 2015 22:11

Arrivez vous à créer un tts depuis ces derniers temps ?
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar Ferritales » 02 Août 2015 09:45

http://forum.micasaverde.com/index.php/ ... 63.30.html
meme problème pour tout le monde (je vous laisse lire).. mais des solutions aussi (avec modification de code), je regarde a l'occasion.
Ferritales
 
Messages : 369
Inscription : 17 Mars 2015

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 02 Août 2015 11:07

Merci Ferritales ;) , on ne dira pas merci à Google pour ce coup là ...
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar Ferritales » 06 Août 2015 15:06

Desolé, je vais pas pouvoir regarder de suite. mais les premiers test devrait etre assez simple en lisant les forums de Vera.

F.
Ferritales
 
Messages : 369
Inscription : 17 Mars 2015

Re: Pour les utilisateurs de SONOS

Messagepar toine » 09 Août 2015 10:02

Perso, j'ai réglé ce problème en modifiant la ligne concernée dans sonos.class.php:

$mp3[$i] = file_get_contents('http://translate.google.com/translate_tts?q='.$words[$i].'&tl='.$lang.'&idx=0&client=eedomus');

et j'ai également dû raccourcir le texte parlé.

Mais cela remarche chez moi maintenant.
En espérant que cela puisse aider.
A+
toine
 
Messages : 21
Inscription : 24 Fév 2015

Re: Pour les utilisateurs de SONOS

Messagepar enr37 » 09 Août 2015 11:07

Punaise j ai jamais réussi à faire fonctionner les tts sur les sonos sur ma V1.comme je compte acheter une V2, est ce que se serait plus facile pour que ça fonctionne ?
actionnaire de photoshop. partageur des 450 icones sur abavala et dans votre box.
Le savoir ne vaut que s'il est partagé par tous !
enr37
 
Messages : 1349
Inscription : 06 Juin 2013
Localisation : 37

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 26 Août 2015 07:51

toine a écrit:Perso, j'ai réglé ce problème en modifiant la ligne concernée dans sonos.class.php:

$mp3[$i] = file_get_contents('http://translate.google.com/translate_tts?q='.$words[$i].'&tl='.$lang.'&idx=0&client=eedomus');

et j'ai également dû raccourcir le texte parlé.

Mais cela remarche chez moi maintenant.
En espérant que cela puisse aider.
A+

Chez moi, ça ne fonctionne pas ....
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar tchex » 28 Août 2015 09:59

moi ça fonctionne, merci !
tchex
 
Messages : 140
Inscription : 29 Nov 2012

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 28 Août 2015 11:27

toine a écrit:Perso, j'ai réglé ce problème en modifiant la ligne concernée dans sonos.class.php:

$mp3[$i] = file_get_contents('http://translate.google.com/translate_tts?q='.$words[$i].'&tl='.$lang.'&idx=0&client=eedomus');

et j'ai également dû raccourcir le texte parlé.

Mais cela remarche chez moi maintenant.
En espérant que cela puisse aider.
A+

Peux tu indiquer quel numéro de ligne il s'agit ?
Merci !
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 02 Sep 2015 13:20

A défaut de réponse, puisque apparemment le fichier sonos.class.php corrigé règle le problème. Qui pourrait mettre en partage le fichier en question car j'ai apporté la correction mais rien ne fonctionne.
Merci d'avance !
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar tchex » 02 Sep 2015 13:59

Bonjour,

En pj tu trouveras la version que j'utilise et qui fonctionne chez moi.
En espérant que ça solutionne tes problèmes.
Pièces jointes
sonos.class.zip
(5.93 Kio) Téléchargé 435 fois
tchex
 
Messages : 140
Inscription : 29 Nov 2012

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 02 Sep 2015 16:38

Merci beaucoup :oops: ! ... mais ça ne fonctionne pas chez moi
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar tchex » 02 Sep 2015 17:08

Dans l'idéal il faudrait pouvoir utiliser la synthèse vocale de l'eedomus+ (pour ceux qui ont ce modèle) plutôt que d'aller faire des appels sur l'api google (qui sera sûrement modifiée à nouveau, voire fermée ou payante).
A la place d'appeler google translate on appellerait l'adresse ip locale de la box qui en retour nous créerait un mp3.

Je n'ai pas trop suivi ce qui est possible de faire dans ce domaine avec l'eedomus+ mais c'est sûrement une piste à creuser.
D'ailleurs, je ne sais pas si l'eedomus+ fait sa synthèse vocale toute seule ou si elle passe par le net, mais si elle est autonome ça permettrait d'avoir de la synthèse vocale même avec une connexion internet HS.
tchex
 
Messages : 140
Inscription : 29 Nov 2012

Re: Pour les utilisateurs de SONOS

Messagepar stany » 03 Sep 2015 22:28

Bonsoir,

en grattant ici et là, sur http://www.domotique-fibaro.fr il y a une parade. :)
Il suffit de rajouter le paramètre client=t, soit:
Code : Tout sélectionner
$mp3[$i] = file_get_contents('http://translate.google.com/translate_tts?client=t&q='.$words[$i].'&tl='.$lang);


En effet en tapant
Code : Tout sélectionner
http://translate.google.com/translate_tts?client=t&q=Bonjour&tl=fr
dans un barre d'adresse il n'y a plus le souci du Captcha rajouté par Google et le résultat vocal est toute de suite lancé.

Ne connaissant rien en code PhP, je ne sais pas intégrer cette modification.
Sachant qu'en ajoutant ce paramètre tel quel cela n'a pas marché pour moi :(
stany
 
Messages : 24
Inscription : 03 Sep 2015

Re: Pour les utilisateurs de SONOS

Messagepar frenchdm » 04 Sep 2015 04:55

Voilà une bonne avancée, merci ! Reste à pouvoir l'intégrer dans un php
frenchdm
 
Messages : 233
Inscription : 20 Jan 2014

Re: Pour les utilisateurs de SONOS

Messagepar stany » 04 Sep 2015 08:00

J'ai aussi trouvé une 2eme piste avec le site "http://text2speech.us".
J'ai trouvé qu'en tapant l'URL "http://text2speech.us/mp3.php?t=bonjour&lf=fr"dans une barre d'adresse, cela propose le téléchargement du MP3.
Mais pour que cela fonctionne, il faut d'abord ouvrir une première fois "http://text2speech.us" dans le navigateur avant de pouvoir utiliser autant de fois que nécessaire l'URL "http://text2speech.us/mp3.php?t=bonjour&lf=fr" dans la barre d'adresse.

Mais mes connaissances en PhP n'ont pas bien évolué en une nuit ;) .
stany
 
Messages : 24
Inscription : 03 Sep 2015

Re: Pour les utilisateurs de SONOS

Messagepar titi007 » 09 Sep 2015 14:29

je suis peut être hors sujet mais j’aurai une petite question .. sur l'utilisation des sonos.
tout fonctionne parfaitement sauf que dans une pièce, j’ai 2 play1 configurés en stéréo !
du coup, quand je fais « stop », tous les play1 s’arretent mais après quand je fais « lecture», j’ai un echos comme si il y avait une latence dans un des play?
il faut que je les désolidarise et que je recréé la stéréo… pas très pratique
vous auriez une idée ?
faut que je stoppe 1 ou les 2 plays de cette pièce et pour la lecture idem ?
titi007
 
Messages : 116
Inscription : 19 Oct 2014

Re: Pour les utilisateurs de SONOS

Messagepar teewee » 10 Sep 2015 13:46

Pour le TTS, il y a un fork / pull request du script de DjMomo qui utilise acapela, un autre système de TTS, mieux foutu que google :

https://github.com/Clement87/sonos

Vous pouvez l'utiliser, ca fonctionne sans souci.

=> récupérer sonos.class.php : https://github.com/Clement87/sonos/blob ... .class.php
=> créer un partage samba accessible aussi bien par votre sonos (partage à rajouter dans les bibliotheques musicales de l'app sonos) et dans la variable $directory de vos scripts tts.
=> modifier vos scripts tts en rajoutant la variable $ttsengine = 'acapela' et rajouter la variable $ttsengine à la fin des parametres de vos appels à PlayTTS();


Exemple de script avec le message du matin de ma femme (code crado, mais fonctionnel) :
Code : Tout sélectionner
<?php

require("sonos.class.php");


/***********************************************************/
/******* Paramètres génériques ******/
/***********************************************************/
//Répertoire ou sont stockés les scripts
$directory = "192.168.1.10/www/scripts/sonos";
//TTS
$ttsengine = 'acapela';
$lang = 'fr';

//Parametre pour forcer les sonos a sortir du mute, au cas ou
$force_unmute = 1;

// IP des sonos
$sonos_salon = "192.168.1.51";
$sonos_chambre = "192.168.1.52";
$sonos_fille = "192.168.1.53";
$sonos_bureau = "192.168.1.54";
$sonos_sdb = "192.168.1.55";


$jour = mb_strtolower(date("l"));
switch ($jour)
{
case 'monday':
   $jour = "lundi";
   break;

case 'thuesday':
   $jour ='mardi';
   break;
   
case 'wesnesday':
   $jour ='mercredi';
   break;
   
case 'thursday':
   $jour ='jeudi';
   break;
   
case 'friday':
   $jour ='vendredi';
   break;
   
case 'saturday':
   $jour ='samedi';
   break;

case 'sunday':
   $jour ='dimanche';
   break;
   }
   

$mois = date("n");
switch($mois){
case '1':
   $mois ='janvier';
   break;
   
case '2':
   $mois ='février';
   break;
   
case '3':
   $mois ='mars';
   break;
   
case '4':
   $mois ='avril';
   break;
   
case '5':
   $mois ='mai';
   break;

case '6':
   $mois ='juin';
   break;
   
case '7':
   $mois ='juillet';
   break;
   
case '8':
   $mois ='aôut';
   break;

case '9':
   $mois ='septembre';
   break;
   
case '10':
   $mois ='octobre';
   break;
   
case '11':
   $mois ='novembre';
   break;
   
case '12':
   $mois ='décembre';
   break;
}

/***********************************************************/

//récupération du volume voulu
$volume = $_GET['volume'];
if ($volume > 100){$volume = 100;}
if ($volume < 0){$volume = 0;}
if (!$volume){$volume = 25;}

// Récupération de la sonos voulue
$sonos = $_GET['sonos'];

switch($sonos){
   case salon:
      $sonos_ip = $sonos_salon;
      break;
   case chambre:
      $sonos_ip = $sonos_chambre;
      break;
   case fille:
      $sonos_ip = $sonos_fille;
      break;
   case bureau:
      $sonos_ip = $sonos_bureau;
      break;
   case sdb:
      $sonos_ip = $sonos_sdb;
      break;
}


/***********************************************************/
/********* URL pour récupérer les datas     ****************/
/***********************************************************/
//Temperature
$api_temperature = "http://192.168.1.5/api/get?api_user=xxxxxxxx&api_secret=xxxxxxxxx&action=periph.caract&periph_id=230620";

//Temps pour aller aux carmes
//$api_carmes = "http://192.168.1.5/api/get?api_user=xxxxxxxx&api_secret=xxxxxxxxx&action=periph.caract&periph_id=230902";

//Vent
$api_vent = "http://192.168.1.5/api/get?api_user=xxxxxxxx&api_secret=xxxxxxxxx&action=periph.caract&periph_id=231395";

//Conditions Meteo by Yahoo
$api_conditions = "https://query.yahooapis.com/v1/public/yql?q=select%20item.condition.text%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D'Clermont-Ferrand')%20and%20u%3D'c'&format=json";

/***********************************************************/
/********* Exploitation des JSON            ****************/
/***********************************************************/
// Récupération de la temperature extérieure
$temp_api = file_get_contents($api_temperature);
if (strpos($temp_api, '"success": 1') == false){echo "Une erreur est survenue: [".$temp_api."]";}
else{
$temp_json = json_decode($temp_api);
$temperature = $temp_json->{'body'}->{'last_value'};
}

// Récupération de la vitesse du vent
$temp_api = file_get_contents($api_vent);
if (strpos($temp_api, '"success": 1') == false){echo "Une erreur est survenue: [".$temp_api."]";}
else{
$temp_json = json_decode($temp_api);
$vent = $temp_json->{'body'}->{'last_value'};
}

// Récupération des conditions météo
$temp_api = file_get_contents($api_conditions);
$temp_json = json_decode($temp_api);
$conditions = $temp_json->{'query'}->{'results'}->{'channel'}->{'item'}->{'condition'}->{'text'};
$conditions = mb_strtolower($conditions);

/*
// Récupération du temps de trajet
$temp_api = file_get_contents($api_carmes);
if (strpos($temp_api, '"success": 1') == false){echo "Une erreur est survenue: [".$temp_api."]";}
else{
$temp_json = json_decode($temp_api);
$carmes = $temp_json->{'body'}->{'last_value'};

   //traitement de la réponse pour ne récupérer que la valeur de temps :
   $carmes = substr ($carmes,strpos($carmes, ":")+1,4);
   //On arrondit la valeur à la minute supérieure après avoir remplacé les : par une virgule
   $carmes = str_replace(":", ".",$carmes);
   $carmes = ceil($carmes);
}
*/

/***********************************************************/
/********* Traduction des conditions météos ****************/
/***********************************************************/
//Traduction des conditions météo - Penser à en faire une fonction à l'occasion
if($conditions = 'tornado')$conditions ='tornade';
if($conditions = 'tropical storm')$conditions ='touragan tropical';
if($conditions = 'hurricane')$conditions ='ouragan';
if($conditions = 'severe thunderstorms')$conditions ='orages dangereux';
if($conditions = 'thunderstorms')$conditions ='orages';
if($conditions = 'mixed rain and snow')$conditions ='pluie et neige mélées';
if($conditions = 'mixed rain and sleet')$conditions ='pluie';
if($conditions = 'mixed snow and sleet')$conditions ='neige';
if($conditions = 'freezing drizzle')$conditions ='bruine verglaçante';
if($conditions = 'drizzle')$conditions ='bruine';
if($conditions = 'freezing rain')$conditions ='pluie verglaçante';
if($conditions = 'showers')$conditions ='averses';
if($conditions = 'showers')$conditions ='averses';
if($conditions = 'snow flurries')$conditions ='averses de neige';
if($conditions = 'light snow showers')$conditions ='neige légères';
if($conditions = 'blowing snow')$conditions ='neige soufflante';
if($conditions = 'snow')$conditions ='neige';
if($conditions = 'hail')$conditions ='grêle';
if($conditions = 'sleet')$conditions ='grésil';
if($conditions = 'dust')$conditions ='poussière';
if($conditions = 'foggy')$conditions ='brouillard';
if($conditions = 'haze')$conditions ='brouillard';
if($conditions = 'smoky')$conditions ='enfumé';
if($conditions = 'blustery')$conditions ='intense';
if($conditions = 'windy')$conditions ='venteux';
if($conditions = 'cold')$conditions ='froid';
if($conditions = 'cloudy')$conditions ='nuageux';
if($conditions = 'mostly cloudy (night)')$conditions ='très nuageux (nuit)';
if($conditions = 'mostly cloudy (day)')$conditions ='très nuageux (jour)';
if($conditions = 'partly cloudy (night)')$conditions ='partiellement nuageux  (nuit)';
if($conditions = 'partly cloudy (day)')$conditions ='partiellement nuageux (jour)';
if($conditions = 'clear (night)')$conditions ='dégagé (nuit)';
if($conditions = 'sunny')$conditions ='ensoleillé';
if($conditions = 'fair (night)')$conditions ='juste';
if($conditions = 'fair (day)')$conditions ='juste';
if($conditions = 'mixed rain and hail')$conditions ='mélange pluie et grêle';
if($conditions = 'hot')$conditions ='chaud';
if($conditions = 'isolated thunderstorms')$conditions ='orages isolés';
if($conditions = 'scattered thunderstorms')$conditions ='orages épars';
if($conditions = 'scattered thunderstorms')$conditions ='orages épars';
if($conditions = 'scattered showers')$conditions ='averses éparses';
if($conditions = 'heavy snow')$conditions ='neige dure';
if($conditions = 'scattered snow showers')$conditions ='averses de neige éparses';
if($conditions = 'heavy snow')$conditions ='chute de neige';
if($conditions = 'partly cloudy')$conditions ='partiellement nuageux';
if($conditions = 'thundershowers')$conditions ='orageux';
if($conditions = 'snow showers')$conditions ='averses de neige';
if($conditions = 'isolated thundershowers')$conditions ='orages isolés';
if($conditions = 'not available')$conditions ='inconnu';
if($conditions = 'mostly cloudy')$conditions ='très nuageux';

/***********************************************************/
/********* Les messages                     ****************/
/***********************************************************/

$message1 = "Bonjour xxxxx. J'espère que vous avez bien dormi, en tout cas vous êtes resplendissante!
";

$message2 = "
Nous sommes le ".$jour." ".date("j")." ".$mois.".
Il est ".date("G")." heure ".date("i").".
";

$message3 = "
Le temps s'annonce ".$conditions.", avec une température de ".$temperature." degrés actuellement
et un vent soufflant à ".$vent." kilomètres heure.
";

//$message4 = "
//Il vous faudrait environ ".$carmes." minutes pour arriver au travail si vous partez maintenant.
//";

$message5 = "
Passez une excellente journée. Longue vie et Prospérité. Je ferme maintenant ma gueule et je vous mets la radio.
";



/***********************************************************/
/********* On envoit les messages a la bonne sonos *********/
/***********************************************************/
// Instanciation de la classe

$the_sonos = new SonosPHPController($sonos_ip);
$the_sonos->PlayTTS($message1,$directory,$volume,$force_unmute,$lang,$ttsengine);
$the_sonos->PlayTTS($message2,$directory,$volume,$force_unmute,$lang,$ttsengine);
$the_sonos->PlayTTS($message3,$directory,$volume,$force_unmute,$lang,$ttsengine);
//$the_sonos->PlayTTS($message4,$directory,$volume,$force_unmute,$lang,$ttsengine);
$the_sonos->PlayTTS($message5,$directory,$volume,$force_unmute,$lang,$ttsengine);

//lancer la radio :
$radio = "x-rincon-mp3radio://e1-live-mp3-128.scdn.arkena.com/europe1.mp3";

$radio = new SonosPHPController($sonos_ip);
$radio->SetQueue($radio);
$radio->Play();

?>



Voila voila.

//Edit du code pour éviter l'appel àun fichier externe pour lancer la radio. Comme ca, le fichier peut fonctionner chez tout le monde en copier / coller sauvage.
teewee
 
Messages : 25
Inscription : 03 Sep 2015

Re: Pour les utilisateurs de SONOS

Messagepar stany » 11 Sep 2015 09:28

Bonjour,
merci pour cette autre alternative :D

Je dois gratter de mon coté car quelque soit la solution, j'ai toujours un fichier à 0Ko .... qui me donne une "erreur de codage" sous Sonos. :(
stany
 
Messages : 24
Inscription : 03 Sep 2015

PrécédentSuivant

Retour vers Suggestions

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)