Ivona TTS Modul

Hi,

komisch, kommt bei mir nie vor. Und ich verwende die PlayFiles Funktion täglich.

Poste bitte mal in dem Sonos Thread Deinen Aufruf, mit dem was vorher und nachher passiert.

Gruß,
Thorsten

Edit: Doch noch eine Idee: Was ist den 27869 für eine Instanzt? Ist as evtl. Teil eines Stereo Paars?

Hallo,

tolles Modul, passt und werkelt

Hallo zusammen,

ich spiele gerade auch etwas mit dem Modul.
Kann mir jemand sagen, wie ich die erstellte mp3 in ein Mediaobject bekomme?

Die Idee ist einen Text im Webfront auszugeben. (WFC_AudioNotification)
Das System läuft auf einer Symbox

Gruß
Isi

Hallo zusammen,

Habe jetzt schon stundenlang mit dem Modul herumprobiert und bekomme leider nicht das hin, was ich will.
Wie viele möchte ich einen Text als MP3 generieren und dann auf einer Sonos Box wiedergeben.

Allerdings scheitere ich an der Konfiguration des Moduls:

Und zwar geht es um den Default Path, bzw. den Access Path.
Ich bekomme bei der Angabe von lokalen als auch Netzwerk-Pfaden (Synology Disk Station) immer wieder die Meldung:

... has to be located on a Samba share (e.g. //ipsymcon.fritz.box/tts/text.mp3) or a HTTP server (e.g. http://ipsymcon.fritz.box/tts/text.mp3)' 

Wie kann ich denn am schnellsten so ein Samba Share anlegen? Oder was habt ihr denn da so eingestellt?
Gibt es auch eine einfachere Möglichkeit?

Das Problem hatte ich auch. Hab einen Samba Share direkt auf dem Pi eingerichtet und die Pfade wie in Post Nr. 49 eingerichtet

Hallo,

das ist doch eigentlich ganz einfach.

„Default path“ ist das Verzeichnis, in dem standartmäßig dire Datei angelegt wird.
OK, der Name macht mittlerweile keinen Sinn mehr, da die Dateien nur dort abgelegt werden können… War ganz am Anfang mal anders.

„Access Path“ ist das prefix, unter dem das Verzeichnis im Netzwerk verfügbar ist.

Beispiel 1 (meine Konfiguration; IPS auf Raspberry):
Default path = „/var/lib/symcon/webfront/user/sonos/ivona/“
Access Path = „http://ipsymcon.fritz.box:3777/user/sonos/ivona

–> IVNTTS_saveMP3(55186 /[Ivona]/,„Blubber.“);

Beispiel 2:
Default path = „/data/sonos/ivona/“
Access Path = „//ipsymcon.fritz.box/sonos/ivona

Das Verzeichnis /data/sonos liegt lokal auf dem Raspverry und ist per Samba als „sonos“ freigegeben.

–> IVNTTS_saveMP3(55186 /[Ivona]/,„Blubber.“);

Beispiel 3:
Default path = „/mnt/synology/ivona/“
Access Path = „//synology.fritz.box/ivona

Das Verzeichnis „/mnt/synology/ivona“ ist von der Synology gemountet.
Damit ein Linux auf ein NFS Verzeichnis schreiben kann, muss es vorher gemountet werden…

–> IVNTTS_saveMP3(55186 /[Ivona]/,„Blubber.“);

  • legt die Datei „/mnt/synology/ivona/e8fad5b57fd8971605cee6d708906d1a.mp3“ an
  • hat als Rückgabe „//synology/ivona/e8fad5b57fd8971605cee6d708906d1a.mp3“
    Das kann ich dann direkt an das Sonos Modul übergeben und es wird abgespielt.

Beipiel 4 (windows)
Default path = „\synology\ivona“
Access Path = „//synology.fritz.box/ivona

–> Keine Ahnung ob das wirklich geht. Ich habe kein IPS auf Windows. Würde es aber erwarten…
Evtl. könnte das jemand mal bestätigen.

Ich würde zu Beispiel 1 raten, das ist meiner Meinung nach am einfachsten und auch am stabilsten…
Beispiel 3 8und 4), macht meiner Meinung nach keinen Sinn. Wozu Synology involvieren?!

Im Zusammenspiel mit Sonos wichtig zu verstehen: Dateien im Netzwerkverzeichnis müssen mit „//“ und nicht mit „\“ angegeben werden!

Gruß,
Thorsten

Habe ja einen Synology Disk Station und ich habe im Internet nun danach geschaut, wie ich mir ein Samba Share erzeugen kann. Bin den Anleitungen im Internet gefolgt und habe alles eingerichtet.
Allerdings habe ich keine Ahnung wie ich den Samba Share testen kann.

Wie sieht der eingerichtete Pfad aus?
Ich habs jetzt z.B. damit schon probiert …

//192.168.178.5/volume1/Temp
//192.168.178.5:volume1/Temp
192.168.178.5/volume1/Temp
192.168.178.5:volume1/Temp

Funktioniert jedoch nicht. Kann man auch von Windows aus den Zugriff testen, bzw. von Windows aus (z.B. Explorer) Daten lesen und schreiben?

Den Share hab ich ebenfalls zum testen in MacOS eingerichtet.

Ersteres Beispiel von Dir sollte eigentlich funktionieren wenn alles korrekt eingerichtet ist…

Ich hatte es mir der Syno auch versucht, habe es aber auch nicht zum laufen bekommen. Von daher hab ich den Share direkt auf dem Server eingerichtet. Kostet nicht viel Speicher, da durch das Script die Dateien eh gelöscht werden.

Hallo Thorsten,

Ist es möglich das Modul so zu erweitern, dass es ein Medienobjekt befüllen kann?
Dann könnte man eine Textausgabe am WebFront umsetzen.

Gruß
Isi

Hallo,

dafür sehe ich keinen Grund.
Ich habe es mal kurz ausprobiert, geht super:

  1. MP3 speichern und an Mediaobjekt übergeben:

$MediaID = IPS_CreateMedia(2);
IPS_SetMediaFile($MediaID, IVNTTS_saveMP3(38076 /*[Ivona_media]*/,"Erst MP3 speichern, dann weiter...") , true);
IPS_SetName($MediaID, "Test");
IPS_SetParent($MediaID, 19580 /*[Sonos]*/);

Vorraussetzung hierfür ist, dass der Parameter „Access Path“ leer ist, damit der Betriebsystempfad zurückkommt.

  1. MP3 Erzeugen und als Mediaobjekt speichern

$MediaID = IPS_CreateMedia(2);
$mp3 = IVNTTS_getMP3(38076 /*[Ivona_media]*/,"Geht das mit der Mediendatei?");
IPS_SetMediaFile($MediaID, 'test.mp3', false);
IPS_SetMediaContent($MediaID, base64_encode($mp3));
IPS_SetName($MediaID, "Test");
IPS_SetParent($MediaID, 19580 /*[Sonos]*/);

Beides funktioniert wunderbar.

Gruß,
Thorsten

servus zusammen,
ich bin jetzt total verwirrt…bei mir läuft es auch auf fehler…
Also ich hab die Symbox das Modul IVONA TTS Modul drauf Sonos Modul auch…sprach mp3 liegen auf einen Windows Homeserver 2011!
Modul default pfad ist „//IP-Sever/Sprachnachrichten/temp“
Modul access pfad ist „//IP-Sever/Sprachnachrichten/temp“

wenn ich nun das script rennen

SNS_PlayFiles(23612 /*[Hardware\sonos\Wohnzimmer Soundbar]*/ , array(IVNTTS_saveMP3(54495 /*[instanzen\Ivona]*/,"Geht das so?"),
                                                                     IVNTTS_saveMP3(54495 /*[instanzen\Ivona]*/,"Jepp!")) );

lasse dann geht auf folgenden fehler:
Warning: file_put_contents(//192.168.2.2/Sprachnachrichten/temp/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(//192.168.2.2/Sprachnachrichten/temp/e6c2fae56dbd3d21a62c622078501024.mp3): failed to open stream: No such file or directory in /mnt/data/symcon/modules/SymconIvona/Ivona/ivona.php on line 32

Warning: Missing argument 3 for SNS_PlayFiles(), called in /mnt/data/symcon/scripts/45381.ips.php on line 3 and defined in /mnt/data/symcon/scripts/__generated.inc.php on line 535

Notice: Undefined variable: volumeChange in /mnt/data/symcon/scripts/__generated.inc.php on line 539

Fatal error: Uncaught exception ‚Exception‘ with message ‚Error during Soap Call: UPnPError s:Client 701 (ERROR_AV_UPNP_AVT_INVALID_TRANSITION)‘ in /mnt/data/symcon/modules/SymconSonos/Sonos/sonosAccess.php:552
Stack trace:
#0 /mnt/data/symcon/modules/SymconSonos/Sonos/sonosAccess.php(293): SonosAccess->processSoapCall(’/MediaRenderer/…’, ‚urn:schemas-upn…‘, ‚Play‘, Array)
#1 /mnt/data/symcon/modules/SymconSonos/Sonos/module.php(437): SonosAccess->Play()
#2 /mnt/data/symcon/scripts/__generated.inc.php(539): Sonos->PlayFiles(Array, NULL)
#3 /mnt/data/symcon/scripts/45381.ips.php(3): SNS_PlayFiles(23612, Array)
#4 {main}
thrown in /mnt/data/symcon/modules/SymconSonos/Sonos/sonosAccess.php on line 552

Musik auf Sonos geht aus…und ich sehe in der sonos app das er das erzeugte xxxxx.mp3 file abspielen will…sieht aus als hätte ips die rechte nicht,aber das Verzeichniss ist für alle offen…wenn ich selbst erzeugte mp3 dort ablege kann ich diese per ips auf der sonos abspielen lassen…bin rat los.

Hallo,

wilkommen in der Welt von Linux :smiley:

Dass man eine Netzwerkfreigabe direkt mit „//IP-Sever/Sprachnachrichten/temp“ ansprechen kann, und so auch etwas direkt dort hinschreiben oder lesen kann, ist eine Besonderheit von Windows. Das geht unter Linux so nicht.

Du musst zunächst das Verzeichnis mounten (zu vergleichen mit „Netzwerkpfad Mappen“ und kannst es dann praktisch wie ein lokales Verzeichnis behandeln.Wenn es von einer Synology kommt, solltest Du es aber als NFS (unix) und nicht CIFS (windows) mounten. Bringt mehrere Vorteile mit sich…

Aber diesbezüglich ist google euer Freund. Das gehört zu den Linux basics.

Es gibt noch etwas, das sich automounter nennt. Da muss dann aber konfiguriert sein, was wohin gemountet werden soll wenn auf das Verzeichnis zugegriffen wird. Eher zu komplex für diese Anwendung…

Gruß,
Thorsten

danke…
:banghead:
na mal sehen wie das auf der symbox hin bekomme…:rolleyes:

oder gibt es da eine alternative? du sprachst mal von default ablage…

evtl über die fritzbox mit einem usb stick…?

Hallo Thorsten

ich nasche gerade etwas von Deinem KnowHow, vielen Dank für das Modul! :o

Beispiel 1 wirft diesen Fehler aus:

Warning: Datei #/var/lib/symcon//tmp/6cbf13bb5d94b68a5c28f55fd727ae94.mp3 existiert nicht in /mnt/data/symcon/scripts/31671.ips.php on line 3

  1. MP3 Erzeugen und als Mediaobjekt speichern

$MediaID = IPS_CreateMedia(2);
$mp3 = IVNTTS_getMP3(38076 /*[Ivona_media]*/,"Geht das mit der Mediendatei?");
IPS_SetMediaFile($MediaID, 'test.mp3', false);
IPS_SetMediaContent($MediaID, base64_encode($mp3));
IPS_SetName($MediaID, "Test");
IPS_SetParent($MediaID, 19580 /*[Sonos]*/);

 

Beispiel Zwei habe ich um die Zeile:

WFC_AudioNotification(48050, ‚Gong!‘, $MediaID);

ergänzt. Das Script läuft fehlerfrei durch, im Webfront kommt dann im PopUp die Meldung:
Media #12345 not found.

Im Modul habe ich die Pfade leer gelassen. Mich macht das …/symcon//tmp/… stutzig.
Da scheint doch was im Pfad nicht zu stimmen? Ich habe die Symbox.
ist das ein Fehler auf der Symbox oder mache ich was falsch?

Loerdy

Hallo,

ich habe noch nie mit Medien Dateien gearbeitet und hatte beim ausführen wohl Glück.

Meine Dateien lege ich immer nach /var/lib/symcon/webfront/user/sonos/ivona.
Wenn Du den Default Path leer lässt, wird die Datei atomatisch nach /tmp gelegt. Anscheinend unterstützt das IPS nicht.
Die Datei muss unter /var/lib/symcon liegen…

hmpf… Genau so hatte ich das gemacht, und es ging.
kannst Du Dir mal die erstellte Datei anschauen? Ist die da und auch ein MP3?

hier noch mal mein code der 1:1 funktioniert:


$ivonaID    = 55186;
$webFrontID = 14414;

$MediaID = IPS_CreateMedia(2);
$mp3     = IVNTTS_getMP3($ivonaID,"So geht es bei mir...");

IPS_SetMediaFile($MediaID, 'test.mp3', false);
IPS_SetMediaContent($MediaID, base64_encode($mp3));
WFC_AudioNotification($webFrontID, 'Test', $MediaID);
IPS_Sleep(10000);
IPS_DeleteMedia($MediaID,true);

Dann wollte ich noch schlau sein, und habe am Ende noch ein „IPS_DeleteMedia($MediaID,true);“ dahintergehängt, und habe dann den gleichen Fehler bekommen wie Du…
Mit dem IPS_Sleep geht es dann wieder :wink:

Gruß,
Thorsten

Hallo Thorsten,

danke für die Rückmeldung.
Ich habe im Modul den Pfad /var/lib/symcon hinterlegt.
Dort werden auch die mp3 Files hinterlegt.
Die Scripte laufen sauber durch, im Webfront kommt aber leider wieder die Meldung Media #12345 not Found
Sie sind aber da und auch im Objektbaum angelegt.

Schade, dann muss ich mit der Google tts weiterleben, die klingt aber nicht so schön :rolleyes:

lördy

Funktioniert bei mir wunderbar.
Blöde Frage, was muss ich da noch eintragen das es mir über Sonos abgespielt wird?

Ha, ich habs.

das ist ein Bug, wenn der Editor für das Webfront nicht aktiviert ist geht es nicht, ist er aktiviert geht es.
Da muss wohl Paresy noch mal ran, er meinte das wäre behoben.

Hurra :slight_smile:

Lördy

Hallo,

ja, blöde frage. Schau Dir mal post 66 an.

Ich verwende Biespiel 1.

Gruß,
Thorsten

Hallo zusammen,

ich würde gerne meine smb Freigabe von der TimeCapsule benutzen. Hier muss ich aber ein User und Passwort vergeben und bekomme es nicht mit dem Modul hier zum laufen. (In der Sonos App kann ich diese Freigabe wunderbar hinzufügen)

Wenn ich den User und Passwort im pfad mit übergeben will, funktioniert das nicht.
Habe folgendes beim default & access path angegeben.

//sonos:sonos@192.168.2.70/sonos

Oder müsste ich diese Freigabe meiner TC erstmal auf dem Pi mounten und dann dem Modul zur Verfügung stellen ?

Ich habe es über hier genannte Variante 1 auch zum laufen bekommen, würde es aber auch irgendwie gern über die TC hinbekommen. :wink:

Beispiel 1 (meine Konfiguration; IPS auf Raspberry):
Default path = „/var/lib/symcon/webfront/user/sonos/ivona/“
Access Path = „http://ipsymcon.fritz.box:3777/user/sonos/ivona

<?

SNS_PlayFiles(59206 /*[PHP_Module\Sonos\Sonos - Büro]*/ , array(IVNTTS_saveMP3(29516 /*[PHP_Module\TTS Ivona\Ivona]*/,"Geht das so?"),
IVNTTS_saveMP3(29516 /*[PHP_Module\TTS Ivona\Ivona]*/,"Jepp!")) );

?>

Funktioniert, gibt aber trotzdem eine Fehlermeldung zurück. Ignorieren ?

Warning:  Missing argument 3 for SNS_PlayFiles(), called in /var/lib/symcon/scripts/31711.ips.php on line 4 and defined in /var/lib/symcon/scripts/__generated.inc.php on line 248

Notice:  Undefined variable: volumeChange in /var/lib/symcon/scripts/__generated.inc.php on line 252

Gruß
Christian