[résolu] Synthèse vocale

Utilisation de vos lapins avec eedomus

[résolu] Synthèse vocale

Messagepar duky » 27 Jan 2016 11:18

Bonjour,

J'ai réactivé mon lapin (karotz) depuis peu et j'utilise avec succès la synthèse vocale de celui-ci.

Depuis un peu près mardi dernier la synthèse vocale de phrase qui ne sont pas en cache renvoie le message suivant :
{"return":"1","msg":"Unable to generate voice message."}

J'ai regardé un peu les scripts du Karotz.
Il semble utiliser Acapela (il y a du code aussi pour utiliser la synthese vocale de google et de violet mais le premier a mis en place des mécanisme de blocage des robot et le second ne tourne plus)

Je suppose donc que la démo sur le site Acapela a changé un peu de format et que le script ne fonctionne plus.

A noter, que le karotz ne dialogue pas directement avec le site acapela mais avec une page php de openkarotz.org qui je suppose s'occupe de faire l'interface avec acapela.

Sauf erreur de ma part, pour résoudre le problème il faudrait que la page php d'openkarotz.org soit mise à jour pour que cela refonctionne.

Malheureusement, je n'ai pas accès à cette page et "Massalia" (merci à lui pour tout son travail sur le karotz) ne semble plus être actif sur le projet.

Bref, dois-je attendre dans l'espoir que la page php soit mise à jour et faut-il que je refasse de mon côté un script qui se connecte à Acapela et envoie le fichier audio à Karotz ?
Dernière édition par duky le 28 Jan 2016 09:45, édité 1 fois.
duky
 
Messages : 3
Inscription : 27 Jan 2016

Re: Synthèse vocale

Messagepar stef31 » 27 Jan 2016 11:25

Il me semble qu'une solution avait été apportée et tu pourrais trouver la réponse sur le forum de Touteladomotique.
EEDOMUS V2 - RFX avec RTS
En attente de l'EEDOMUS V4
stef31
 
Messages : 2947
Inscription : 20 Août 2013
Localisation : 31

Re: Synthèse vocale

Messagepar duky » 27 Jan 2016 12:56

Le site http://karotz.mikey-life.com propose quelques petites mise à jour et scripts complémentaire pour le Karotz.

Pour le TTS, il propose de remplacer le script existant (fichier tts.inc) par celui-ci :
Code : Tout sélectionner
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:21.0) Gecko/20100101 Firefox/21.0"
 
function AcapelaTTS { 
   TTS=$1
   VOICE=$2
   NOCACHE=$3
   RVOICE=$4
   MUTE=$5
   
   MD5FILE=""
   
   CURL_PARAM=$(echo "?MyLanguages=sonid15&MySelectedVoice="$RVOICE"&MyTextForTTS="$TTS"&SendToVaaS=&t=1")                                                         
   
   RESULT=`eval $(echo "curl --request POST --header "Keep-Alive:300" --header "Connection:keep-alive" --header "Content-type:application/x-www-form-urlencoded" -s --data '${CURL_PARAM}' http://www.acapela-group.com/demo-tts/DemoHTML5Form_V2.php")`       
 
    position_depart=$(awk -v a="$RESULT" -v b="var myPhpVar = '" 'BEGIN{print index(a,b)}')
    LIEN=${RESULT:${position_depart}+15}
    position_fin=$(awk -v a="$LIEN" -v b="'" 'BEGIN{print index(a,b)}')
    RESULT=${LIEN:0:${position_fin}-1}
 
   if [ "$RESULT" != "" ]; then
 
      MD5FILE=$(echo "$TTS$VOICE" | md5sum | cut -d ' ' -f 1)
      echo $( echo \"$TTS\" | UrlDecode)  > $CNF_DATADIR/Tmp/${MD5FILE}.txt                                             
      echo $( echo $RVOICE | UrlDecode)  > $CNF_DATADIR/Tmp/${MD5FILE}.voice
      eval $(echo "curl -L -A '${UA}' -o $CNF_DATADIR/Tmp/${MD5FILE}.mp3 $RESULT" )  >>/dev/null 2>>/dev/null                   
 
      if [ "$5" != "1" ]; then
        Log "[TTS]"  "Playing sound ${MD5FILE}.mp3"
        PlaySound $CNF_DATADIR/Tmp/${MD5FILE}.mp3
     fi
 
     if [ "$NOCACHE" == "1" ]; then
        rm -f $CNF_DATADIR/Tmp/${MD5FILE}.mp3   >>/dev/null 2>>/dev/null
        rm -f $CNF_DATADIR/Tmp/${MD5FILE}.txt   >>/dev/null 2>>/dev/null
     else
        Log "[TTS]"  "Storing sound ${MD5FILE}.mp3 to cache"
     fi
   fi
   echo ${MD5FILE}   
}
 
 
function GoogleTTS {
   TTS=$1
 
   MD5FILE=$(echo "$TTS" | md5sum | cut -d ' ' -f 1)
   eval $(echo "curl -A '${UA}' -o $CNF_DATADIR/Tmp/${MD5FILE}.mp3 'http://translate.google.com/translate_tts?tl=fr&q=${TTS}'" )  >>/dev/null 2>>/dev/null
   echo $( echo "$RAW_TTS" | UrlDecode)  > $CNF_DATADIR/Tmp/${MD5FILE}.txt
 
   PlaySound $CNF_DATADIR/Tmp/${MD5FILE}.mp3     
}
 
 
function ProsodyTTS {
   TTS=$1
   VOICE=$2
   
    # Not Working
    # Need test
    return
   
   MD5FILE=$(echo "$TTS" | md5sum | cut -d ' ' -f 1)
   # curl -s -d "$TTS" http://188.165.228.65/tts/Suzanne -o  $CNF_DATADIR/Tmp/test.mp3
    $(echo "curl -A '${UA}' -o $CNF_DATADIR/Tmp/${MD5FILE}.mp3 -s -data '${TTS}' http://188.165.228.65/tts/${VOICE}" )  >>/dev/null 2>>/dev/null
   echo $( echo "$RAW_TTS" | UrlDecode)  > $CNF_DATADIR/Tmp/${MD5FILE}.txt
             
   PlaySound $CNF_DATADIR/Tmp/${MD5FILE}.mp3
}


La différence c'est qu'il se connecte directement au site Acapela et semble être maintenu (pour le moment en tout cas) par son auteur (merci à lui).

Je vais tester ça ce soir, voire si ça fonctionne...
duky
 
Messages : 3
Inscription : 27 Jan 2016

Re: Synthèse vocale

Messagepar fullpower » 27 Jan 2016 14:50

Sinon une variante peut être utilisée si tu as Imperihome pro ...
Perso c'est ce que j'utilise depuis que la synthèse vocale du lapin s'est mise en vrac ...et ce, de façon régulière malgré les correctifs de Mickey Life ...
Programmation ARDUINO, NodeMCU, ESP8266 Eedomus + / Raspberry Pi 3 B + & Raspberry Pi 3 en programmation (Magic mirror)
Elegoo Mars - Artillery Sidewinder V2 - modélisation 3D sur Sketchup, Rhino 3d, Fusion 360, etc.
fullpower
 
Messages : 1158
Inscription : 11 Déc 2015
Localisation : Elsass

Re: Synthèse vocale

Messagepar duky » 28 Jan 2016 09:44

Je n'ai pas intellihome mais au pire je ferai un petit truc sur un serveur à base de picoTTS (mais la voix est moins jolie).

La voix n'est pas hyper critique et les messages les plus important sont en cache donc indépendant de tout serveur externe.

Sinon, j'ai testé hier soir avec succès le patch de Mikey donc tout refonctionne bien. :D
duky
 
Messages : 3
Inscription : 27 Jan 2016


Retour vers Karotz & Nabaztag

Qui est en ligne ?

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