Ivona TTS Modul

Hallo,

ist es möglich eine Anruferansage (Fritz Project) mittels Ivona zu machen ?
Hat da jemand schonmal was gemacht ?

Grüße Alex

Hallo,

meine Sprachausgabe hat schon mal perfekt funktioniert. Wahrscheinlich (?) seit dem letzten Update von Symcon (24.05.206) bekomme ich bei meinen Ausgabescripten folgenden Fehler:

Fatal error: Uncaught exception ‚Exception‘ with message ‚Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)‘ in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php:552
Stack trace:
#0 C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php(293): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚Play‘, Array)
#1 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(437): SonosAccess->Play()
#2 C:\IP-Symcon\scripts__generated.inc.php(203): Sonos->PlayFiles(Array, 30)
#3 C:\IP-Symcon\scripts\29261.ips.php(8): SNS_PlayFiles(53133, Array, 30)
#4 {main}
thrown in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on line 552
Abort Processing during Fatal-Error: Uncaught exception ‚Exception‘ with message ‚Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)‘ in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php:552
Stack trace:
#0 C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php(293): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚Play‘, Array)
#1 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(437): SonosAccess->Play()
#2 C:\IP-Symcon\scripts__generated.inc.php(203): Sonos->PlayFiles(Array, 30)
#3 C:\IP-Symcon\scripts\29261.ips.php(8): SNS_PlayFiles(53133, Array, 30)
#4 {main}
thrown
Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 552

Hier nochmal mein Beispiel-Script, welches bisher immer funktionierte:

<?
// Test Sprachausgabe //
$texttospeech = ‚Das ist ein Test‘;
include(IPS_GetScriptFile(56620 /[Program\IPSLibrary\app\modules\Ivona\ivona_tts]/));
$Dateiname = rand(1000000,9999999);
$a = new IVONA_TTS();
$a->save_mp3 ($texttospeech, „//LCNGVS/IP-Symcon-Media/“.$Dateiname.".mp3");
SNS_PlayFiles(53133 /[Sound\Sonos\KuecheMaster\KuecheMasterSonosInstanz]/, Array ("//LCNGVS/IP-Symcon-Media/".$Dateiname.".mp3"), 30);

?>

Hallo nochmal,

konnte mir die Frage inzwischen selbst beantworten. Sonos auf dem iMAC hatte die Netzwerkfreigabe vom Symcon-Server verloren.

Sorry für die Umstände…

Hallo Thorsten,

kannst du dir vorstellen, das Modul so zu erweitern, dass die Sprachen durch eine Funktion veränderbar werden?:slight_smile:

Wäre super…

Gruß
Jan Peter

Hallo Zusammen,

ich bin noch relativ neu hier im Forum. Hab jedoch schon einiges umgesetzt bekommen. Jetzt komme ich allerdings nicht weiter. Ich finde dieses Modul sehr interresant, bekomme es aber leider nicht zum laufen.
IP-Symcon läuft auf WHS 2011 (WIN).

Was habe schon alles versucht:
Angemeldet als
Ivona.PNG


var_dump(IVNTTS_saveMP3(37892 /*[Sonos\Ivona\Ivona]*/,"Geht das so?"));

speichert die Datei in dem richtigen Verzeichnis.
Verzeichnis in Sonos in der Medienbibliothek eingefügt. Datei läst auch von Hand abspielen.

Allerings funktioniert das umwandeln und abspielen durch IP-Symcon nicht


SNS_PlayFiles(12852 /*[Sonos\Büro]*/ , array(IVNTTS_saveMP3(37892 /*[Sonos\Ivona\Ivona]*/,"Geht das so?"),
                                                  IVNTTS_saveMP3(37892 /*[Sonos\Ivona\Ivona]*/,"Jepp!")), 0);

Fehlermeldung

Fatal error: Uncaught exception ‚Exception‘ with message ‚Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)‘ in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php:552
Stack trace:
#0 C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php(293): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚Play‘, Array)
#1 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(437): SonosAccess->Play()
#2 C:\IP-Symcon\scripts__generated.inc.php(294): Sonos->PlayFiles(Array, 0)
#3 C:\IP-Symcon\scripts\50730.ips.php(12): SNS_PlayFiles(12852, Array, 0)
#4 {main}
thrown in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on line 552
IPS-Err-PHP 2016-07-16 20:24:11.247 Error: Uncaught exception ‚Exception‘ with message ‚Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)‘ in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php:552 Stack trace: #0 C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php(293): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚Play‘, Array) #1 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(437): SonosAccess->Play() #2 C:\IP-Symcon\scripts__generated.inc.php(294): Sonos->PlayFiles(Array, 0) #3 C:\IP-Symcon\scripts\50730.ips.php(12): SNS_PlayFiles(12852, Array, 0) #4 {main} thrown Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 552 134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out) 33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err) 121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler) in IPSLogger_PhpFatalErrorHandler
Abort Processing during Fatal-Error: Uncaught exception ‚Exception‘ with message ‚Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)‘ in C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php:552
Stack trace:
#0 C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php(293): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚Play‘, Array)
#1 C:\IP-Symcon\modules\SymconSonos\Sonos\module.php(437): SonosAccess->Play()
#2 C:\IP-Symcon\scripts__generated.inc.php(294): Sonos->PlayFiles(Array, 0)
#3 C:\IP-Symcon\scripts\50730.ips.php(12): SNS_PlayFiles(12852, Array, 0)
#4 {main}
thrown
Error in Script C:\IP-Symcon\modules\SymconSonos\Sonos\sonosAccess.php on Line 552

Kann mir bitte jemand bei der Fehlersuche helfen.

Gruß
Alex

Ohne jetzt mal alles durchzulesen fällt mir auf, dass in Deinem Default Path ein Backslash fehlt. Du hast „C:IPSymcon…“ anstatt „C:\IpSymcon…“ stehen.

Vielleicht hilft das schon?

Du bist mein Held, danke.

Dein Tipp hat zwar nicht geholfen, aber beim Antworten habe ich die Fehlermeldung von der Sonos-App mitgeschrieben. Dabei ist mir aufgefallen, dass die IP-Adresse nicht 192…1, sondern 192…14 sein sollte.

Au Mann und ich hab seit zwei Tagen schon alle Variationen ausprobiert. Irgendwann passieren halt solche Leichtsinnsfehler.

Trotzdem Danke für deine Hilfe The Furios. Ohne deine Antwort hätte es wohl noch zwei Tage gedauert.

@Kugelberg: Klasse Modul, Danke für Veröffentlichung.

Gruß
Alex

Na Hauptsache etwas [emoji16]

Hallo,

Nun ja, das ist ja nur eine „Property“ an der Instanz…
Sollte eigentlich (wenn ich es nicht falsch verstanden habe) per „IPS_SetProperty( )“ änderbar sein.

Ich würde aber dazu tendieren, eine zweite Ivona Instanz mit den gewünschten Einstellungen anzulegen. Dann kannst Du Dich ja dynamisch entscheiden, welche Instanz zu verwendest.

Gruß,
Thorsten

Vielen Dank für den Hinweis, werde ich ausprobieren

Gruß
Jan Peter


Hallo,

könntest du mir auch helfen, wie ich das auf der Symbox hinbekomme?
Ich sehe grad nicht die Möglichkeit, ein Verzeichnis meiner Synology zu mounten an der Symbox.

Grundsätzlich kenne ich das schon mit fstab etc, aber eben bei der Symbox schwierig…

Moin,

sorry, die Symbox kenne ich gar nicht.

Gruß,
Thorsten

Danke trotzdem für die Antwort.
Ich beiß mir da echt die Zähne dran aus, würde echt gerne TTS zum laufen bringen…

Hallo,

also ich fahre sehr gut damit, die erzeugten MP3s in dem Webserver Verzeichnis (bei mir /var/lib/symcon/webfront/user/sonos/ivona) abzulegen.
Und dann können diese per http abgespielt werden.

so geht es:

  1. Ermitteln des Symcon Arbeitsverzeichnisses:
var_dump( getcwd( ) );

Bei mir: „/var/lib/symcon/scripts“
→ webfront verzeichnis sollte also „/var/lib/symcon/webfront/user“ sein.

  1. Verzeichnisse anlegen

mkdir("/var/lib/symcon/webfront/user/sonos",0755 );
mkdir("/var/lib/symcon/webfront/user/sonos/ivona",0755 );

ACHTUNG: sollte zu eurem Webfront Verzeichnis passen!

Ivona Config:
„Default Path“: „/var/lib/symcon/webfront/user/sonos/ivona“
„Access Path“: „http://ipsymcon.fritz.box:3777/user/sonos/ivona
ACHTUNG: hier sollte eurer Servername (anstelle von „ipsymcon.fritz.box“) und euer Port (anstelle von 3777) stehen, auf dem IPS läuft. Zur not die IP.

Das kann Sonos dann abspielen, wenn es mit PlayFiles übergeben wird.

Ich hoffe das hilt,
Thorsten

Hallo Thorsten,

funktioniert soweit super. Vielen Dank für das Modul.

Ich würde gerne die IP-Symcon Connect Adresse im Access Path nutzten, diese nutzt https://.
Wenn ich die Funktion IVNTTS_saveMP3 nutze gibt mir diese dann

http://https://connectadresse

aus.

EDIT:
Ich hab es gerade noch mal ausprobiert da ist mir wohl nur was falsches reingerutscht da stand http://https:// zu Beginn das kann nicht gehen. Habe es korrigiert und nun funktioniert es. Man muss nur darauf achten die Connect Adresse ohne Port 3777 anzugeben, weil das läuft ja normal über Port 80 also ohne Portangabe eintragen.

Es ist ja schon mal gefragt worden wie man das MP3 vom Modul in einem Medienelement benutzt und dann im Webfront darstellt. Ich habe das jetzt mal mit Chrome so gelöst mit anderen Browsern habe ich es nicht getestet.

Medien Datei erzeugen:


$MediaID = IPS_CreateMedia(2);
$ident = "Ivona_TTS_".$MediaID; 
$mp3 = IVNTTS_getMP3(47423 /*[Geräte\TTS\Ivona TTS Marlene Deutsch Weiblich]*/,"Wenn dies abgespielt wird, war der Test erfolgreich."); 

IPS_SetMediaFile($MediaID, IPS_GetKernelDir()."media".DIRECTORY_SEPARATOR."test1.mp3", false);
IPS_SetMediaContent($MediaID, base64_encode($mp3)); 
IPS_SetName($MediaID, "Test");
IPS_SetIdent ($MediaID, $ident); 
IPS_SetParent($MediaID, 37024 /*[Geräte\Heimkino\Audio\Sonos\Sonos Ansagen]*/);  

Dann eine Datei MediaMP3.php unter dem user Verzeichnis ablegen mit Inhalt


<?
$mp3id = $_GET['mp3id'];

$mp3id = (int)$mp3id;

if(!IPS_MediaExists($mp3id))
    die("ID #".$mp3id.") does not exists");

$media=IPS_GetMedia($mp3id);

if($media['MediaType'] != 2)
    die("ID #".$mp3id." is not a mp3 file");

$mp3base64 = IPS_GetMediaContent($mp3id); //liefert den Base64 kodierten Inhalt für das Medienobjekt
$mp3data = base64_decode($mp3base64);
  

$headhtml = 'Content-Type: audio/mpeg';
header($headhtml);
echo $mp3data;

?>

Der Aufruf erfolgt dann über:
http:///user/MediaMP3.php?mp3id=12345
12345 ist die ObjektID des Medienelements mit Mp3 File.

Wenn man das im Webfront haben will dann einfach ein iframe in eine String mit HTMLBox Profil setzten


<iframe src="user/MediaMP3.php?mp3id=54248" border="0" frameborder="0" style="top:0pt; bottom:0pt; left:0pt; right:0pt; width:300px; height:50px;"/></iframe>

Hallo Thorsten, vielen Dank schon mal für die Skripte zum Finden des Arbeitsverzeichnisses.
Ich habe die bei mir auf der Symbox auch ausgeführt und erhalte als Rückmeldung:

string(24) "/mnt/data/symcon/scripts"

Dass Skript um die Verzeichnisse anzulegen habe ich ebenfalls ausgeführt.

Bei deinem Testskript

<?

 SNS_PlayFiles(56121 , array(IVNTTS_saveMP3(18260,"Geht das so?"),
                             IVNTTS_saveMP3(18260,"Jepp!")) ,0);

?>

über PlayFiles erhalte ich dann folgende Fehlermeldung:

Warning:  file_put_contents(???/var/lib/symcon/webfront/user/sonos/ivona/4d43263a767a8eb105e1db791de7f507.mp3): failed to open stream: No such file or directory in /mnt/data/symcon/modules/SymconIvona/Ivona/ivona.php on line 32

Warning:  file_put_contents(???/var/lib/symcon/webfront/user/sonos/ivona/e6c2fae56dbd3d21a62c622078501024.mp3): failed to open stream: No such file or directory in /mnt/data/symcon/modules/SymconIvona/Ivona/ivona.php on line 32

Weißt du noch Rat?

Hallo nochmal!

Also ich habe es endlich geschafft!
Nochmals ein dickes Dankeschön an Thorsten, der mich auf den richtigen Pfad gebracht hat!

Jetzt für alle mit einer Symbox, die das selbe Problem haben:


Default-Path: /mnt/data/symcon/webfront/user/sonos/ivona
Access-Path:  http://EURESYMBOXIP:3777/user/sonos/ivona

Damit läuft es bei mir endlich.

Viele Grüße

MIchael

nachdem ich dieses wunderbare Modul seit ca. 14 Tagen im Einsatz habe, geht seit 2/3 Tagen nix mehr.
Entweder der Aufruf (mit übergabe an das Sonos Modul) bekommt ein HTTP 504 Error oder das Sonos Modul meldet

 04.01.2017 07:17:28*| ScriptEngine*| Ergebnis für Ereignis 57407
<br />
<b>Warning</b>:  opendir(/mnt/data/symcon/webfront/user/sonos/ivona): failed to open dir: No such file or directory in <b>/mnt/data/symcon/scripts/26772.ips.php</b> on line <b>7</b><br /> 

Ich habe mich dann bei Ivona eingeloggt und sehe:
„We are proud to announce that our Text-to-Speech technology is now available under the Amazon Polly AWS service. Click here to learn more.“ :confused:
Bei dem Link wird man dann zu Amazons bezahlpflichtigen Service umgeleitet.
Ist das auch bei Euch so, oder habe ich mir evtl. mit der IPSLibrary installation (vorgestern) was zerschossen?
Ich habe hier im Forum schon gesucht, aber nichts vergleichbares gefunden.

Beste Grüße,

Frank