Ivona TTS Modul

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

Hallo,

also mein IVONA geht noch ohne Probleme.

Aber:
„opendir(/mnt/data/symcon/webfront/user/sonos/ivona): failed to open dir: No such file or directory“ finde ich als Fehlermeldung recht eindeutig.
Das Verzeichnis /mnt/data/symcon/webfront/user/sonos/ivona gibt es nicht (mehr). Ich denke mal du hast das Modul so konfiguriert, dass die dateien dort abgelegt werden sollen.

Gruß,
Thorsten

Aaah, vielen Dank, manchmal muss man die Dinge anders herum betrachten.
Ich ging davon aus, dass die Datei auf Grund des Timeouts nicht im Verzeichnis liegt.
Tatsächlich war aber das Verzeichnis nicht da.
Ich musste während dem installieren/einrichten der IPSLibrary ein Backup einspielen, da ich etwas zerschossen hatte. Vor dem einspielen des Backups habe ich das System zurück gesetzt… :banghead:

Es geht jetzt auch bei mir wieder. Allerdings kann man im Login Bereich bei Ivona den Access Key als auch Secret Key nicht mehr zurück setzten bzw. auslesen. Es scheint als geht das nur noch über Amazon Polly AWS. Dort wird ein 1-jähriger kostenloser Testaccount angeboten, der danach aber (abhängig der Anzahl der Zeichen) kostenpflichtig wird.
Wer sich nicht erst bei Ivona einloggen möchte findet hier --> https://aws.amazon.com/de/polly/ die im Ivona Account hinterlegte URL.

Hallo,

leider kann man sich bei ivonacloud.com nicht mehr neu registrieren.
Ich habe nun eine Registrierung bei AWS gemacht, und dort einen User/Gruppe mit Zugriff auf Polly angelegt.
Leider scheint das nicht zu funktionieren. Ich bekomme bei einem Testscript eine Fehlermeldung „Authentication failed“.

Jetzt ist es so, dass alle URLs in den Skripten auf ivonacloud zeigen. Ich vermute, das dies auch so nicht mehr geht und die AWS Links andere sind.

Vielleicht habe ich aber auch nur irgend einen anderen Fehler gemacht.

Hat jemand eine Idee dazu?

Gruß
Christian

Hi,

Sieht nicht so aus.
Die Amazon Polly API sieht komplett anders aus, als die von Ivona :mad:

Mal schauen, vielleicht lege ich mal ein Polly Modul an. Sollte ja recht ähnlich sein.
Leider scheint dasmit rate und volume nur noch über „SSML“ zugehen, was es dann leider wieder komplizierter macht…

Gruß,
Thorsten

Hallo Torsten,

ich bin zwar wirklich kein Entwickler, aber habe mich mit dem Modul und der Umstellung auf Polly mal beschäftigt.
Ich habe dazu einen Fork auf dein Modul erstellt. Ich habe dann das aws-sdk eingebunden.

In einem Testscript habe ich damit erfolgreich eine mp3 erstellt.

Ich baue das nun mal in das Modul und teste weiter.

Die „rate“ kann angeben.
Zu Volume muss ich schauen.

Gruß
Christian

Hi,r

Wenn Du ein solches Modul bereitstellen willst, nur zu :wink:

Der Nachteil davon ist, dass es ganz schön viel Holz ist.
Mit der SDK kannst Du zwar alle AWS (Amazon Web Service) funktionen bedienen, aber es nimmt halt auch viel Platz weg.
Und einen Server aufzusetzen brauchst Du wirklich nicht, oder?

Habe gerade mal Dein Repo als Zip runtergeladen. Sind zwar nur 7,5MB, dafür aber in 624 Dateien und 384 Verzeichnissen.

Zum Vergleich:
Das Ivona Modul hat 14KB in 6 Dateien und einem Verzeichis.
Und wenn man bedenkt, dass mein komplettes IPS derzeit nur 45MB verwendet…

Gruß,
Thorsten

Hallo Torsten,

das stimmt natürlich. Aber ich bin fachlich nicht in der Lage das ohne das SDK umzusetzen.
Es könnte ja auch eine Zwischenlösung sein.

Den V4 Request, den Du direkt gebaut hast habe ich nicht so angepasst bekommen, dass es funktioniert. Da Blicke ich einfach nicht durch.

Habe noch ein paar Updates gemacht, jetzt müsste es zumindest funktionieren, habe eben erfolgreich eine mp3 erhalten.

Das was jetzt da ist, ist ja sowieso überwiegend von Dir. Vielleicht kann es als Grundlage für eine Anpassung von Ivona dienen. Du darfst das natürlich gerne verwenden.

Gruß
Christian

Hallo,

Habe mal das ivona.php angepasst und auf polly umgestellt.
Kipp es schnell in ein neues Modul, gib mir ne Stunde. :cool:

Gruß,
Thorsten

Musst Du mich so frustrieren?
Das ist nicht fair, ich habe da heute ewig dran rum probiert.

Aber vielen Dank, bei Dir ist es definitiv in besseren Händen, als bei mir. Kompetenz ist eben nicht durch viel Willen zu ersetzen.:smiley:

Gruß
Christian

Hi,

Ich habe bei meinem Arbeitgeber letzes Jahr über eine Woche damit verbracht, die AWS Signatur zu bauen. Leider gibt es die SDKs nicht in der bei uns verwendeten Programmiersprache :mad:

Und wenn man es ein mal verstanden hat, geht es :wink:

Gruß,
Thorsten

Nur mal eine Verständnisfrage. Kann man Ivona jetzt zunächst noch weiternutzten wenn bisher alles funktioniert hat oder wird diese Art dann eingestellt werden und damit das Modul obsolet? Oder geht das dann nur noch kostenpflichtig mit Polly?

Hi,

gute Frage, auf die ich keine Antwort habe.
Ich verwende es noch so lange es geht. Polly ist jetzt aber auch nicht sooo teuer.

1 Jahr für umme, dann 4 Dollar für „1 million characters“.

Als Beispiel haben die aufgeführt, dass die Umwandlung von „Adventures of Huckelberry Finn“ by Mark Twain 2,40$ kosten würde…

Gruß,
Thorsten

Hallo Zusammen

ich bin auch ein SONOS-Fan und möchte nun auch dieses TTS Modul nutzen und frage mich, wo ich mich nun für den Amazon Dienst registrieren muss?

Bei ivonacloud.com finde ich nirgends eine Möglichkeit für eine Registrierung und bei aws.amazon.com bin ich nun nicht sicher ob dieses TTS-Modul auch funktioniert, resp. ob dieses TTS Modul Ivona und Polly unterstützt?

Besten Dank für ein kurzes Feedback und freundlicher Gruss
Patrick