Page 1 sur 1

TTS en boucle

Publié : 25 sept. 2018, 09:49
par jonath2809
Bonjour

J'utilise la version beta du plugin Sonos, suite aux mises à jour Sonos, sur un rasp 3 à jour (Jeedom + OS)
J'ai bien installé mon TTS qui me parle a travers mes enceintes.

Le problème est que mon scenario qui se déclenche tous les matins à la même heure, au moment de l'action "Dire" la phrase est lue correctement mais en boucle infinie.

J'ai mis une action stop après la commande "dire" mais rien y fait c'est comme si le scénario restait bloqué sur cette commande dire jusqu'a temps que je stoppe manuellement le scénario.

Autre chose bizarre, si je déclenche mon scenario manuellement, il fonctionne correctement

Si vous avez des pistes ou des ressources à m'indiquer, je n'ai rien trouvé de mon côté.

Merci :D

Re: TTS en boucle

Publié : 25 sept. 2018, 14:02
par MikeKitten
Je m'apprêtais à écrire le même message. J'ai exactement le même problème et les mêmes symptômes.

Re: TTS en boucle

Publié : 05 oct. 2018, 10:41
par IPaaadPro
J'ai le même souci mais il répète la commande Dire 21 fois. Pas 1 de plus, pas une de moins.
C'est pareil chez vous ou alors c'est vraiment à l'infini?
(21 fois c'est très long lol)

Re: TTS en boucle

Publié : 05 oct. 2018, 10:45
par parrain27240
J'ai eu un souci similaires mais avec squeezbox control sur deux rpi3 .
Bizzare mais des que j'ai mis des vieux rpi b plus aucun problème ;)

Envoyé de mon Redmi 4X en utilisant Tapatalk


Re: TTS en boucle

Publié : 11 oct. 2018, 11:22
par jonath2809
IPaaadPro a écrit :
05 oct. 2018, 10:41
J'ai le même souci mais il répète la commande Dire 21 fois. Pas 1 de plus, pas une de moins.
C'est pareil chez vous ou alors c'est vraiment à l'infini?
(21 fois c'est très long lol)
J'avoue que j'ai pas tenu aussi longtemps avec la voix du TTS du plugin ça me stresse au bout de 2 ou 3 fois.... :D .
Toujours pas réussis de mon côté.
J’étudie aussi une solution alternative avec SNIPS qui pourrait si j'ai bien compris générer du TTS au travers de nos sonos (même si a la base c'est un genre d'assistant type Alexa ou Siri auto-hébergé)

Re: TTS en boucle

Publié : 13 nov. 2018, 23:29
par ManuJ71
Pareil ... en boucle ...
Si qq a une idée, je suis preneur ...

Chose bizarre, le TTS en scenario fonctionne très bien sur mon sonos 5, mais bouclé sur le sonos 1 ( j’ai pas essayé sur le one)

Merci d’avance !

Re: TTS en boucle

Publié : 15 nov. 2018, 20:47
par ManuJ71
testé ... c'est bien 21 fois ...

Re: TTS en boucle

Publié : 01 janv. 2019, 17:25
par hansc
j'ai eu le même soucis, à la première commande TTS envoyée à mes sonos

j'ai:

play:1
beam
one

quand le fichier existe dans le share a priori il ne fait plus les répétitions en boucles.

dans mon cas je n'arrive pas à reproduire :)

Chris

Re: TTS en boucle

Publié : 03 oct. 2019, 19:53
par ManuJ71
Bonjour, sujet plus très actif ces temps ci ...

Je suis avec le plug in en beta (version du 24 avril) que je ne mets pas à jour car toujours fonctionnel sur un jeedom non beta en version 3.3.32.
Tout fonctionnait sur sonos 1, 3, 5, beam ... mais sur un sonos one, le TTS restait bloqué à répéter le message envoyé 21 fois ... un peu lassant. (Ce sonos me sert de réveil, alors le matin, me réveiller avec 21 fois la météo avant de lancer la radio ...)

En fouillant, j'ai trouvé dans le fichier :
../Html/plugins/sonos3/core/class/sonos3.class.php

A la fin du fichier, dans le dernier elseif, dans la boucle while, j'ai remplacé $loop > 20 par $loop > 1 …

Ce qui donne :

Code : Tout sélectionner

		} elseif ($this->getLogicalId() == 'tts') {
			$_options['message'] = str_replace(array('[', ']', '#', '{', '}'), '', $_options['message']);
			$path = explode('/', trim(config::byKey('tts_path', 'sonos3'), '/'));
			$server = new Server(config::byKey('tts_host', 'sonos3'), config::byKey('tts_username', 'sonos3'), config::byKey('tts_password', 'sonos3'));
			$share = $server->getShare($path[0]);
			$adapter = new SmbAdapter($share);
			$filesystem = new Filesystem($adapter);
			$folder = array_pop($path);
			$directory = new Directory($filesystem, config::byKey('tts_host', 'sonos3') . '/' . implode('/', $path), $folder);
			$track = new TextToSpeech(trim($_options['message']), $directory, new JeedomProvider(network::getNetworkAccess('internal') . '/core/api/tts.php?apikey=' . config::byKey('api', 'core')));
			$loop = 1;
			while (true) {
				try {
					if ($_options['title'] != '' && is_numeric($_options['title'])) {
						$controller->interrupt($track, $_options['title']);
					} else {
						$controller->interrupt($track);
					}
					break;
				} catch (Exception $e) {
					log::add('sonos3', 'debug', $e->getMessage());
				}
				if ($loop > 1) {
					break;
				}
				usleep(500000);
				$loop++;
			}
			
		}
J'ai pas bien compris pourquoi il devait boucler 20 x ...

Ca fait 4 jours que je l'emploi ... ca n'a pas buggué, les tts fonctionnent toujours sur les autres sonos, mais plus de répétition sur le sonos One !

Evidemment indispensable de faire un back up avant changement et de prendre toutes les précautions nécessaires, mais pour moi ça à l'air de fonctionner ...
Donc si ça peut aider qqn ...

Re: TTS en boucle

Publié : 03 oct. 2019, 20:29
par Poumi
Il boucle parceque tu passes dans le cas d’erreur, il réessaye 20 fois.

Si tu étais en debug tu dois avoir le log qui correspond: log::add('sonos3', 'debug', $e->getMessage());

Re: TTS en boucle

Publié : 04 oct. 2019, 10:02
par ManuJ71
Ok, mais erreur qui n’est pas juste puisque le message correct est bien envoyé en tts et que le tts fonctionne ...
Pourquoi considère il une erreur et recommande t’il la boucle ? Je ne comprends pas pourquoi il prend l’exception ?

Merci

Je regarderai les log en rentrant ...

Re: TTS en boucle

Publié : 04 oct. 2019, 12:33
par Poumi
c'est justement le log qui te dira pourquoi.