Aller au contenu

Emission Simplifiée Sur Squeezebox Tts Ou Mp3


JossAlf

Messages recommandés

Remplacer :

local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=" .. notification;

par :

local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&client=t&q=" .. notification;

Pour l'explication, c'est ICI et ICI

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réactivité, mais ça marche toujours pas:

 post-1128-0-83814300-1439864541_thumb.png

2minutes39 pour dire "hello world"... aucun son ne sort. sur le pc plus de capcha par contre.

Comme ça n'a jamais marcher je peux pas dire que c'est la faute a google...

Lien vers le commentaire
Partager sur d’autres sites

- Si tu lances une commande TTS directement de ton PC depuis un navigateur, par exemple : 

http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=bonjour

Au 1er lancement d'une commande TTS, un code Capcha t'est demandé, plus aux suivantes de ta session

 

-  Si tu lances une commande TTS directement de ton PC depuis un navigateur en intégrant le paramètre &client=t , par exemple :  

http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&client=t&q=coucou

Pas de code Capcha demandé

 

- Selon ta copie d'image, ton module virtuel envoie bien la commande à  ton LMS . En ce qui concerne ma configuration, le son est redirigé sur ma Squeezebox  Boom et je n'ai donc pas de son sur mon PC !

 

- je ne comprends pas que tu obtiennes 2mn39

 

En plus de ce tuto, tu peux éventuellement voir ICI... et en effectuant une recherche sur ce forum avec le terme Squeezebox, tu trouveras d'autres contributions

 

NB pour les administrateurs du forum :

J'ai beau défaire le lien url d'une ligne http, lors de la sauvegarde le lien est automatiquement recréé

Pour permettre la visualisation de la ligne HTTP en entier, j'ai été contraint d'utiliser l'option "insérer un extrait de code", ce qui donne l'apparence de code lua :(  ("insérer une citation" ne règle pas le problème)

Modifié par Lazer
Oui je pense que c'est le moteur d'affichage des pages qui fait une regex sur le texte, détecte automatiquement les adresses http et les transforme en lien clicables.... pas d'autre choix que d'utiliser les balises de code <>
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bon devant les restrictions de google translate, j'ai cherché une autre solution. 

 

J'ai trouvé chez http://www.voicerss.org. En version gratuite on à  350 génération de TTS par jour. Ca devrait me suffire pour le moment.

 

Exemple de lien qui génère un MP3 :

 

http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&f=16khz_8bit_mono&src=Ouverture%20du%20portail

 

On peut choisir le format généré, la langue, l'échantillonnage ... TOP !

 

Toute la doc ici :

http://www.voicerss.org/api/documentation.aspx

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...
  • 1 mois après...

Tu crées 2 VD. Le pas àpas est dans le premier message. Regarde les commentaires des VD pour comprendre les réglages.

Dans ton cas 1 seule squeeze demande peu de réglages.

Fais un copier coller de tes VD modifiés pour que je vois où ça coince.

Envoyé de mon iPhone àl'aide de Tapatalk

Lien vers le commentaire
Partager sur d’autres sites


-- Faire un copier/coller de ce code dans le bouton d'un module virtuel (attention bug si utilisé depuis une scène)

-- depuis lequel on souhaite diffuser un message

-- NivSonore -> de 1 à100

-- SqueezeNom -> Cuisine ; Salon ; ChambreB ; ChambreH ; Garage

-- Attention àne pas se tromper sur l'orthographe des Squeezes !!!

-- Messager -> Texte pour la TTS (inutile de mettre des %20)

--Annonce sur la Squeezebox ...

fibaro:setGlobal('NivSonore' , 80)

--Liste des squeezes sous la forme {"Cuisine","Garage","Salon"}

local ListeSqueeze = {"max2playSDBpar","max2playSDBenf","max2playSDBinv"}

fibaro:setGlobal("SqueezeNom" , json.encode(ListeSqueeze))

-- Taper le message

fibaro:setGlobal('Messager' , "Ouverture du portail")

fibaro:call(183, "pressButton", "1");

-- fin annonce Squeezebox

Lien vers le commentaire
Partager sur d’autres sites


-- JossAlf ; 02/07/14 (V2.1) 21/06/14 (V2.0) 17/06/14 (V1.3) ; 22/05/14 (V1.1) ; 23/05/14 (V1.2)

-- V2.1 : Ajout du réglage individuel duniveau sonore pour chaque squeeze en ajoutant 2 chiffre après le nom

-- V2.0 : Simplification du code et possibilité d'allumer 1,2,3,4 ou 5 squeeze.

-- Scène permettant simplifier la diffusion de messages sur 1 ou plusieurs squeezeboxes.

-- Nécessite de créer les Variables Globales : SqueezeNom ; Messager

-- (Ne pas utiliser dans une scène le json bug)

-- l'appel de module virtuel se fera dans un autre module virtuel de façon simple

-- en affectant les valeurs aux variables Globales

-- puis en simulant le clic sur un bouton : exemple -> fibaro:call(144, "pressButton", "1");

local ListeSqueeze = fibaro:getGlobal("SqueezeNom");

local TableauSqueezeNom = json.decode(ListeSqueeze);

local player = nil

-- Adresse IP du Logitech Media Server

local ipadd = "10.0.0.161"

-- le port du serveur

local portno = 9090

local Squeezers = {

['max2playSDBpar '] = "b8:27:eb:47:18:a5 ",

['max2playSDBenf '] = "b8:27:eb:e1:7f:3d ",

['max2playSDBinv '] = "b8:27:eb:1d:f1:cd ",

}

--On allume toutes les squeezes

for i = 1, #TableauSqueezeNom do

--on récupère uniquement le nom en retirant les 2 derniers caractères qui correspondent au niveau sonore

local player = string.sub(TableauSqueezeNom, 1 , -3)

fibaro:debug(player)

local player = Squeezers[player]

local cmnd = "power 1 "

local stringtosend = player .. cmnd .. string.char(10)

tcpSocket = Net.FTcpSocket(ipadd, portno)

tcpSocket:setReadTimeout(2*1000)

bytes, errorCode = tcpSocket:write(stringtosend)

-- on règle le son

-- on prend que les 2 dernier caractères qui correspondent au niveau sonore.

local VolumeSon = string.sub(TableauSqueezeNom, -2)

local cmnd = "mixer volume " .. VolumeSon .. " "

local stringtosend = player .. cmnd .. string.char(10)

tcpSocket = Net.FTcpSocket(ipadd, portno)

tcpSocket:setReadTimeout(2*1000)

bytes, errorCode = tcpSocket:write(stringtosend)

end

-- on laisse une seconde pour laisser le temps àtoutes les squeeze de s'allumer

fibaro:sleep(1000)

-- On envoie le message en utilisant la première radio

local player = string.sub(TableauSqueezeNom[1], 1 , -3)

local player = Squeezers[player]

local notification = fibaro:getGlobalValue('Messager')

-- On remplace les espaces par des %20

local notification = string.gsub((notification)," ", "%%20");

fibaro:debug(notification)

local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=" .. notification;

local stringtosend = player .. cmnd .. string.char(10)

tcpSocket = Net.FTcpSocket(ipadd, portno)

tcpSocket:setReadTimeout(2*1000)

bytes, errorCode = tcpSocket:write(stringtosend)

-- OFF des squeezeBoxs après 10 secondes

fibaro:sleep(10*1000)

-- on éteint les squeezes

for i = 1, #TableauSqueezeNom do

fibaro:debug("debut de la boucle")

local player = string.sub(TableauSqueezeNom, 1 , -3)

local player = Squeezers[player]

local cmnd = "power 0 "

local stringtosend = player .. cmnd .. string.char(10)

tcpSocket = Net.FTcpSocket(ipadd, portno)

tcpSocket:setReadTimeout(2*1000)

bytes, errorCode = tcpSocket:write(stringtosend)

end

Lien vers le commentaire
Partager sur d’autres sites

(Ligne 58 de ton code dans le message au-dessus, sur la HC2 c'est peut-être ligne 68), tu remplaces :

local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=" .. notification;

par

local cmnd = "playlist play http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. notification;

Google limite maintenant l'usage du TTS alors je passe maintenant par VoiceRSS (je viens de modifier la code de la page 1 en conséquence).

Lien vers le commentaire
Partager sur d’autres sites

Ok j'ai vu un autre truc. En tout cas laisse voicerss.

Alors : dans le VD principal (message 87), Lignes 23, 24, 25, retire l'espace après le nom de tes squeeze.

Dans l'autre VD (message 85) qui appelle le code :

Efface la ligne 11 qui ne sert àrien.

Et quand tu mets le noms de tes Squeezebox, elles doivent avoir le niveau sonore sous la forme de 2 chiffres collés

Exemple : max2playSDBpar25

Lien vers le commentaire
Partager sur d’autres sites

Pour que ce soit plus clair voici le code du VD 182 :

-- Faire un copier/coller de ce code dans le bouton
-- depuis lequel on souhaite diffuser un message
-- Le niveau sonore est attribué àchaque squeeze individuellement
-- àla suite du nom avec comme valeur de 01 à99 (pas 100 ! on doit rester sur 2 chiffres)
-- SqueezeNom -> max2playSDBpar ; max2playSDBenf ; max2playSDBinv
-- Attention àne pas se tromper sur l'orthographe des Squeezes !!!
-- Messager -> Texte pour la TTS (inutile de mettre des %20)
 
--Liste des squeezes sous la forme NomsqueezeNiveausonore {"max2playSDBpar30","max2playSDBenf80","max2playSDBinv 60"}
local ListeSqueeze = {"max2playSDBpar30","max2playSDBenf40","max2playSDBinv25"}
fibaro:setGlobal("SqueezeNom" , json.encode(ListeSqueeze))
-- Taper le message
fibaro:setGlobal('Messager' , "Ouverture du portail")
 
fibaro:call(183, "pressButton", "1");
-- fin annonce Squeezebox

Voici le code du bouton 1 de ton le VD principal (ID 183) :

-- JossAlf ; 02/07/14 (V2.1) 21/06/14 (V2.0) 17/06/14 (V1.3) ; 22/05/14 (V1.1) ; 23/05/14 (V1.2)
-- V2.1 : Ajout du réglage individuel duniveau sonore pour chaque squeeze en ajoutant 2 chiffre après le nom
-- V2.0 : Simplification du code et possibilité d'allumer 1,2,3,4 ou 5 squeeze.
-- Scène permettant simplifier la diffusion de messages sur 1 ou plusieurs squeezeboxes.
 
-- Nécessite de créer les Variables Globales : SqueezeNom ; Messager
-- (Ne pas utiliser dans une scène le json bug)
-- l'appel de module virtuel se fera dans un autre module virtuel de façon simple
-- en affectant les valeurs aux variables Globales
-- puis en simulant le clic sur un bouton : exemple -> fibaro:call(144, "pressButton", "1");
 
local ListeSqueeze = fibaro:getGlobal("SqueezeNom");
local TableauSqueezeNom = json.decode(ListeSqueeze);
 
local player = nil
-- Adresse IP du Logitech Media Server 
local ipadd = "10.0.0.161" 
-- le port du serveur
local portno = 9090 
 
  local Squeezers = {
   ['max2playSDBpar'] = "b8:27:eb:47:18:a5 ",  
   ['max2playSDBenf'] = "b8:27:eb:e1:7f:3d ",
   ['max2playSDBinv'] = "b8:27:eb:1d:f1:cd ",
}
 
  --On allume toutes les squeezes
for i = 1, #TableauSqueezeNom do
  --on récupère uniquement le nom en retirant les 2 derniers caractères qui correspondent au niveau sonore
  local player = string.sub(TableauSqueezeNom[i], 1 , -3)
  fibaro:debug(player)
  local player = Squeezers[player]
  local cmnd = "power 1 "
  local stringtosend = player .. cmnd .. string.char(10)
  tcpSocket = Net.FTcpSocket(ipadd, portno)
  tcpSocket:setReadTimeout(2*1000)
  bytes, errorCode = tcpSocket:write(stringtosend)
 -- on règle le son
-- on prend que les 2 dernier caractères qui correspondent au niveau sonore.
  local VolumeSon = string.sub(TableauSqueezeNom[i], -2)
  local cmnd = "mixer volume " .. VolumeSon .. " "
  local stringtosend = player .. cmnd .. string.char(10)
  tcpSocket = Net.FTcpSocket(ipadd, portno)
  tcpSocket:setReadTimeout(2*1000)
  bytes, errorCode = tcpSocket:write(stringtosend)
end
-- on laisse une seconde pour laisser le temps àtoutes les squeeze de s'allumer
fibaro:sleep(1000)
 
-- On envoie le message en utilisant la première radio 
local player = string.sub(TableauSqueezeNom[1], 1 , -3)
local player = Squeezers[player]
local notification = fibaro:getGlobalValue('Messager')
-- On remplace les espaces par des %20
local notification = string.gsub((notification)," ", "%%20"); 
fibaro:debug(notification)

-- Attention google ne fonctionne plus il vaut mieux utiliser VoiceRSS pour le TTS
-- local cmnd = "playlist play http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=" .. notification;
 
-- Voicerss TTS
local cmnd = "playlist play http://www.voicerss.org/controls/speech.ashx?hl=fr-fr&src=" .. notification;
 
local stringtosend = player .. cmnd .. string.char(10) 
tcpSocket = Net.FTcpSocket(ipadd, portno)  
tcpSocket:setReadTimeout(2*1000) 
bytes, errorCode = tcpSocket:write(stringtosend)
-- OFF des squeezeBoxs après 10 secondes
fibaro:sleep(10*1000)
 
-- on éteint les squeezes
for i = 1, #TableauSqueezeNom do
  fibaro:debug("debut de la boucle")
  local player = string.sub(TableauSqueezeNom[i], 1 , -3)
  local player = Squeezers[player]
  local cmnd = "power 0 "
  local stringtosend = player .. cmnd .. string.char(10)
  tcpSocket = Net.FTcpSocket(ipadd, portno)
  tcpSocket:setReadTimeout(2*1000)
  bytes, errorCode = tcpSocket:write(stringtosend)
 
end

Normalement en faisant un copier/coller des codes pour les 2 VD ça devrait fonctionner.

Lien vers le commentaire
Partager sur d’autres sites

Tu es sûr de l'IP (du LMS) ligne 18 ?

Tu as de messages dans le debug ? Sinon essaye de placer des fibaro:debug pour voir oú ça coince.

MAJ : tu as bien créé les 2 variables comme indiqué ligne 7 dans les commentaires ?

7 -- Nécessite de créer les Variables Globales : SqueezeNom ; Messager

Modifié par JossAlf
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...