Forum eedomus
https://forum.eedomus.com/

[résolu] Synthèse vocale
https://forum.eedomus.com/viewtopic.php?f=7&t=3721
Page 1 sur 1
Auteur:  duky [ 27 Jan 2016 11:18 ]
Sujet du message:  [résolu] Synthèse vocale

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 ?
Auteur:  stef31 [ 27 Jan 2016 11:25 ]
Sujet du message:  Re: Synthèse vocale

Il me semble qu'une solution avait été apportée et tu pourrais trouver la réponse sur le forum de Touteladomotique.
Auteur:  duky [ 27 Jan 2016 12:56 ]
Sujet du message:  Re: Synthèse vocale

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...
Auteur:  fullpower [ 27 Jan 2016 14:50 ]
Sujet du message:  Re: Synthèse vocale

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 ...
Auteur:  duky [ 28 Jan 2016 09:44 ]
Sujet du message:  Re: Synthèse vocale

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
Page 1 sur 1 Le fuseau horaire est UTC+1 heure