Aller au contenu
i-magin

Synthèse Vocale Sur Smartphone Et Serveur Paw

Recommended Posts

Tout récemment, j'ai écrit sur ce forum un petit tuto sur l'envoi de SMS via un serveur PAW.

Ce serveur Paw offre bien des possibilités, dont la gestion de la synthèse vocale...

 

Ingrédients

Cette fois, uniquement un "bon vieux smartphone android"

Paramétrer le smartphone pour que la connexion wifi soit toujours active (y compris en veille)

Vous devrez activer la fonction synthèse vocale sur celui-ci

 

Installation du serveur Paw et configuration de la fonction synthèse vocale

- lire ici : http://www.domotique-fibaro.fr/index.php/topic/74-message-sms-via-un-serveur-paw/

- ainsi que la page dédiée ici : http://www.abavala.com/2013/01/08/paw-synthese-vocale-multilingue-sous-android/

 

Tester avec une commande HTTP depuis votre navigateur préféré

http://192.xxx.xxx.xxx:8080/actions/text_to_speech.xhtml?texte=phrase%20de%20test

Passons à  la Fibaro HC2 :

On peut créer un périphérique virtuel avec adresse IP + port 8080 et la ligne "string" suivante

GET /actions/text_to_speech.xhtml?texte=alarme%20activée&langue=fr&vol=8 HTTP/1.10x0D0x0A0x0D0x0A

.... mais la contrainte c'est un bouton par type de message

 

Le code LUA de la Fibaro : on oublie pour l'instant, pour les mêmes raisons que l'envoi de SMS

 

Utiliser le code de @krikroff, la solution la plus souple

J'ai adapté le "main process" de la façon suivante :

------------------------------------------------------------------------------------------- 
-- Main process 
------------------------------------------------------------------------------------------- 
function SendSpeech(speech, vol) 
  local uri = "/actions/text_to_speech.xhtml"; 
  local params = "?texte=" .. urlencode(tostring(speech or "empty")) .. "&langue=fr&vol=" .. vol; 
  Tk.Net.isTraceEnabled = false; 
  local HttpClient = Tk.Net.HttpRequest("192.xxx.xxx.xxx", 8080); 
  HttpClient:setReadTimeout(500); 
  local response, status, errorCode = HttpClient:request("GET", 
    uri..params, { 
      "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0", 
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9" 
    }); 
  HttpClient:disconnect(); 
  HttpClient:dispose(); 
  HttpClient = nil; 
end 
-- récupération du contenu des variables globales speech (texte à  reproduire) et vol (niveau sonore)
local speech = fibaro:getGlobalValue("speech")
local vol = fibaro:getGlobalValue("vol")
SendSpeech(speech, vol);  

Commentaires :

Modifier l'adresse IP dans le code LUA

Créer sur votre box deux variables globales avec le panneau variables :

- speech (vous pouvez l'initialiser par exemple avec ce message : test de message)

- vol (vous pouvez l'initialiser par exemple à  : 15)

Si le nom de ces deux variables ne vous plait pas, vous pouvez les changer juste après les deux fonctions getGlobalValue, entre guillemets

 

Vous pourrez insérer ce type de lignes dans une scène :

--[[
%% properties
%% globals
--]]

-- message vocal à  envoyer au smartphone
fibaro:setGlobal("speech", "bienvenue chez vous")
-- volume sonore du smartphone
fibaro:setGlobal("vol", "13")
-- activation du périphérique virtuel et bouton ad hoc
fibaro:call(88, "pressButton", "9");

La voix sur mon smartphone est un peu métallique... et les oreilles de mon smartphone ne bougent pas  ;)

 

Pour terminer :

J'ai aussi adapté le main process pour la gestion de MP3 avec le serveur PAW

Mais j'ai constaté des blocages de la fonction lecture MP3 sur mon smartphone, qui m'oblige à  redémarrer celui-ci

Je n'ai pas vraiment cherché d'où vient le problème... tests trop rapprochés de lecture MP3 ?

Si certains le souhaitent, je pourrai le mettre à  disposition (pour une voix moins métallique  :) )

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Perso, j'ai pas testé le 'text to speech' avec mon serveur Paw, mais ça me donne envie d'essayer!;-)

Avec plaisir, tu peut partager...

Partager ce message


Lien à poster
Partager sur d’autres sites

... donc, très rapidement pour la lecture des MP3 (vous reporter aux explications de la synthèse vocale)

 

Info icihttp://www.abavala.com/2013/01/25/paw-lecture-de-fichier-mp3/

Attention : le PHP créé va chercher les fichiers MP sous "/sdcard/music/" et non sous "/sdcard/paw/music" comme mentionné dans les commentaires

 

Le main process que j'ai adapté.... et on remercie à  nouveau @krikroff  ;)

------------------------------------------------------------------------------------------- 
-- Main process 
------------------------------------------------------------------------------------------- 
function SendMP3(mp3) 
  local uri = "/actions/mp3.xhtml"; 
  local params = "?fichier=" .. mp3; 
  Tk.Net.isTraceEnabled = false; 
  local HttpClient = Tk.Net.HttpRequest("192.xxx.xxx.xxx", 8080); 
  HttpClient:setReadTimeout(500); 
  local response, status, errorCode = HttpClient:request("GET", 
    uri..params, { 
      "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0", 
      "Accept: text/html,application/xhtml+xml,application/xml;q=0.9" 
    }); 
  HttpClient:disconnect(); 
  HttpClient:dispose(); 
  HttpClient = nil; 
end 
local mp3 = fibaro:getGlobalValue("mp3")
-- nom du fichier mp3... 
SendMP3(mp3); 

- modifier l'adresse IP

- une seule variable globale: mp3 (à  initialiser avec un nom de fichier mp3 sans son extension)

 

Et je vous ai averti pour le blocage de la lecture des MP3 (dans ce cas rebooter votre smartphone)

 

  • Upvote 3

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Desole je dois louper un truc tout bête, car ça marche pas chez moi le VD donné ci-dessus.

1. quand j'essaie l'URL direct qui pointe sur le fichier text_to_speech.xhtml du serveur PAW : ça marche

2. quand je créai un VD avec juste un bouton de type string, avec "GET /actions/..........3 : ça marche

 

3. Je créai le VD avec le script donné ci-dessus : quand je clique sur le bouton j'ai rien. quand je clique sur Debug du bouton j'ai "[ERROR] 23:20:02: line 6: attempt to call global 'urlencode' (a nil value)

 
j'ai bien les variables "speech" et "vol" qui sont créées via le panneau de variable.
j'ai bien mis la bonne IP dans le VD.
 
Je suis avec une HC2 version 3.590
 
Merci pour votre aide..

Partager ce message


Lien à poster
Partager sur d’autres sites

J'aurais du être plus explicite, lorsque j'avais écrit "Utiliser le code de @Krikroff"  ;)

mais ce tuto faisait suite à  un autre sur l'envoi de SMS via un serveur PAW, qui s'appuie également sur le Toolkit Framework de @Krikroff

 

Il faut donc aller copier l'intégralité du code de @Krikroff : ICI  -> Voir son post du 18/12/2013

 

Puis remplacer toutes les lignes du "main process" par celles de mon tuto et suivre mes commentaires

Partager ce message


Lien à poster
Partager sur d’autres sites

J'aurais du être plus explicite, lorsque j'avais écrit "Utiliser le code de @Krikroff"  ;)

mais ce tuto faisait suite à  un autre sur l'envoi de SMS via un serveur PAW, qui s'appuie également sur le Toolkit Framework de @Krikroff

 

Il faut donc aller copier l'intégralité du code de @Krikroff : ICI  -> Voir son post du 18/12/2013

 

Puis remplacer toutes les lignes du "main process" par celles de mon tuto et suivre mes commentaires

Bonjour,

 

Je me bat mais je ne parviens pas à  faire fonctionner ce code.

PAW est installé et fonctionne.

Qu'entends tu pas l'intégralité du code ?

J'ai collé dans "main loop" Toolkit.lua suivi de Toolkit.net.lua suivi de ton code "main process" et dans debug j'ai :

[DEBUG] 19:35:18: -------------------------------------------------------------------------
[DEBUG] 19:35:18: -- HC2 Toolkit Framework version 1.0.4
[DEBUG] 19:35:18: -- Current interpreter version is Lua 5.1
[DEBUG] 19:35:18: -- Total memory in use by Lua: 75.78 Kbytes
[DEBUG] 19:35:18: -------------------------------------------------------------------------
[DEBUG] 19:35:18: Toolkit.Net loaded in memory...
[ERROR] 19:35:18: line 512: attempt to call global 'urlencode' (a nil value)

Du coup j'ai cherché la fonction parmi les 7 fichiers lua livrés par krikroff la fonction urlencode... des fois qu'il faille coller les 3000 lignes de code de Krikroff !

... rien.

Je sèche...

Partager ce message


Lien à poster
Partager sur d’autres sites

  • Cliquer sur le lien que j'ai donné pour le post de Krikrofff sur le forum Fibaro

Chercher le post datant du 18/12/2013, qui débute par ce message "For: I-margin"

Récupérer le fichier PawSMS.zip

Copier les 560 lignes de code, dans un bouton de module virtuel

Remplacer toutes les lignes du "main process" par celles de mon tuto et suivre les instructions dans la rubrique commentaires

Partager ce message


Lien à poster
Partager sur d’autres sites

Cette fois ca y est :D 'tain faut s'appeler Indiana Jones !

Cool ! Merci i-magin, ca ouvre plein de perspectives dès qu'on peut envoyer une requête http paramétrée.

Cela dit c'est vrai que l'architecture du HC2 est quand même assez contraignante.

Peut être que la v4....

Merci encore et merci àKrikroff

Partager ce message


Lien à poster
Partager sur d’autres sites

@i-magin salut

 

j'ai trouver un tablette Android et j'ai commence tout juste a avec PAW

 

j'ai tester la ligne suivante et pour le moment rien ne ce passe :  

http://192.168.0.10:8080/actions/text_to_speech.xhtml?texte=phrase%20de%20test

pour info j'ai toujours le mot de passe ADMIN ET PAW sur le serveur paw

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut, je me suis aussi lancé avec paw avec un vieux téléphone Android pour tester mais le fichier PawSMS.zip est introuvable sur le forum ainsi que le lien qui mène sur la page de  @Krikroff

Si quelqu'un pouvez re-up, merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Désolé @971jmd et @fredokl , mais mon post date de 2014, assez vieux pour avoir oublié ma procédure

 

Depuis je suis passé sur Jeedom et j'utilise pour les SMS un développement complémentaire de @dJuL qui s'appelle "Jeedom Paw Interface" (il fait bien plus, énormément plus que de simples SMS)

 

Je n'ai pas conservé le fichier PawSMS.zip.... voir peut-être avec @krikroff

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je viens d'éditer le lien que j'avais mis vers le post de Krikrofff : il renvoyait sur le forum officiel de Fibaro... et comme Fibaro a changé de forum, c'est mort de ce côté là

 

J'ai vérifié sur mes disques durs et plus rien....

 

Il faut donc demander à @Krikroff

 

Partager ce message


Lien à poster
Partager sur d’autres sites

@i-maginCool d'avoir regardé pour nous merci. Alors petit message pour @Krikroff Si jamais tu lis ceci, peux-tu remettre à dispo ton fichier PawSMS.zip stp.

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

@971jmdSalut, je suis comme toi. rien ne fonctionne pour le moment même le fonction http.

Je n'y comprend rien.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonne nouvelle, j'ai retrouvé le fichier dans mon Dropbox :)

 

Le voici donc attaché à ce post (j'espère que @Krikroff ne m'en voudra pas de cette initiative)

 

 

PawSMS.zip

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 2 heures, 971jmd a dit :

@i-magin 

j'ai tester la ligne suivante et pour le moment rien ne ce passe :  


http://192.168.0.10:8080/actions/text_to_speech.xhtml?texte=phrase%20de%20test

 

Je suppose qu'au lieu de 192.168.0.10 tu as mis la bonne adresse de ton smartphone ?

Lance un ping pour vérifier l'adresse IP, et :

Citation

Paramétrer le smartphone pour que la connexion wifi soit toujours active (y compris en veille)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui J'ai le téléphone avec le wifi activé même en mode veille. Pour l'adresse ip j'ai bien rentré la mienne mais n'y fait.

Quand je passe par un navigateur voici le message qui s'affiche dans la page. Pas plus.

URL: /actions/mp3.xhtml | Status: HTTP / 404 | PAW Server 0.97.1-android (Brazil/2.0)

Modifié par fredokl
Voici le message en entier pardon:Not Found URL: /actions/mp3.xhtml | Status: HTTP / 404 | PAW Server 0.97.1-android (Brazil/2.0)

Partager ce message


Lien à poster
Partager sur d’autres sites

Pareille


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

@fredokl, à la lecture du message retour, je constate que tu accèdes bien au serveur HTTP Paw et que c'est la fonction MP3 que tu veux utiliser

Le code retour 404 me fait penser qu'il n'accède pas à la "page" ou ressource demandée

 

Dans la doc Abavala il est indiqué :

Citation

Il vous faut également uploader de la même manière le fichier MP3 dans le répertoire /sdcard/paw/music.

 

Et dans mon post j'avais écrit

Citation

Attention : le PHP créé va chercher les fichiers MP sous "/sdcard/music/" et non sous "/sdcard/paw/music" comme mentionné dans les commentaires

 

Avez-vous essayé les deux solutions ?

 

Comme je l'avais écrit 

Citation

Et je vous ai averti pour le blocage de la lecture des MP3 (dans ce cas rebooter votre smartphone)

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Bonne nouvelle, j'ai retrouvé le fichier dans mon Dropbox 
 
Le voici donc attaché à ce post (j'espère que @Krikroff ne m'en voudra pas de cette initiative)
 
 
PawSMS.zip


Carrément pas et merci beaucoup pour ton aide


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Un dernier message, n'ayant plus cette configuration :

@fredokl tu veux utiliser la fonction lecture de fichier MP3

@971jmd tu veux utiliser la fonction synthèse vocale

 

Vérifiez que le répertoire actions est bien créé au bon endroit et que vous avez bien copié les fichiers "mp3.xhtml" et "text_to_speech.xhtml"

 

NB aux admins du forum : pourquoi seulement la saisie du 1er utilisateur ouvre un volet des inscrits et pas le suivant ?... Merci !

Modifié par i-magin

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui la fonction synthèse vocale


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

×