Action unknown: copypageplugin__copy

Native LMS TTS-Integration für Squeezelite Plugin

Für die Nutzung muss das Text-To-Speech Plugin ab Version 1.0.6 auf dem gleichen LoxBerry installiert sein. Die Einrichtung der Speech-Engine muss im Vorfeld im Text-To-Speech Plugin erfolgen. 

Der Logitech Media Server kann auf einem beliebigen Server installiert sein. Im Plugin muss der Hostname des LMS konfiguriert sein.

Die Sprachausgabe kann gegen alle Zonen des LMS ausgeführt werden, unabhängig davon, wo diese Zonen betrieben werden. Die Ausgabe erfolgt nativ über den Logitech Media Server.

Für TTS muss das LMS Gateway im Plugin aktiviert sein.

Aufruf

Text-To-Speech wird über Befehle an das Squeezelite-Plugin per TCP aufgerufen. Der verwendete Eingangs-Port des Plugins ist 9092 (Standard) und kann bei Bedarf unter "Mehr" geändert werden.

Um die TTS-Implementierung im Plugin anzusprechen, muss jeder TCP-Command folgendermaßen eingeleitet werden:

lmsgtw tts

  • Das erste Keyword identifiziert den Befehl als interen Befehl (andere Befehle werden direkt an den LMS weitergeleitet)
  • Das zweite Keyword initialisiert die TTS-Routine

Nach dieser Einleitung in jedem Befehl erfolgt die Übergabe von Parametern in der Art, wie man es von der Commandline gewohnt ist (verwendet wird als Options-Engine Getopt::Long). Dabei beachten, dass Zeichenketten mit Leerzeichen (z.B. der Text, oder Playernamen) unter Anführungszeichen gestellt werden müssen.

Parameter

Lange Option Kurze Option Beschreibung
–player <MAC>,<MAC>,… -p <MAC,MAC,…> Angabe des oder der anzusprechenden Player. Player können per MAC-Adresse oder Namen angegeben werden.

Mehrere Player können angegeben werden:

* Mehrmals Option und MAC (-p <MAC> -p <MAC> usw.)
* Komma-separierte Liste (-p <MAC>,<MAC> usw.)
* Auch MAC und Name gemischt (z.B. –player=<Name>,<MAC>,<Name>)
–text "Das ist mein Text!" -t "Das ist mein Text"Der Text muss unter Anführungszeichen gesetzt werden.
–force -f TODO Force bedeutet, dass evt. gerade laufende oder gequeute Ansagen in den Zonen abgebrochen, und sofort diese Ausgabe gestartet wird. Die Option ist hilfreich bei kurz hintereinander eintreffenden Ansagen, beispielsweise dem Ansagen von Schalterstellungen ("Heizung ist Ein", "Heizung ist Aus", "Heizung ist in Automatik")
–lmsvol <0..100-0..100+0..100> Setzt die Lautstärke der Zone(n) auf den Absolutwert 0 … 100, oder addiert bzw. subtrahiert die aktuelle Lautstärke um den angegebenen Wert
–minvol <0..100> Mit minvol und maxvol können Grenzen für die Abspiellautstärke gesetzt werden. Die Parameter werden angewandt unabhängig von der Verwendung von lmsvol (d.h. egal was bei lmsvol angegeben wird, werden diese Limits eingehalten).


–maxvol <0..100>
–important -i TODO Es können "Ruhezeiten" im Plugin konfiguriert werden, bei welchen Zonen in welcher Zeit grundsätzlich keine Ausgaben erfolgen sollen. Mit dem –important Parameter werden die Ruhezeiten igoniert.

Testaufrufe aus der Shell

# Aus der Bash muss man Sonderzeichen escapen (z.B. ! im Text ist \!
echo lmsgtw tts --player Büro --text=\"Heute ist ein schöner Tag. Was geht ab?\" | nc localhost 9092
 
 
echo lmsgtw tts --player Wohnküche,Partyraum,Sauna --text=\"Die Sauna ist betriebsbereit.\" | nc localhost 9092

Besonderheiten

  • Die Sprachausgabe schaltet auch einen abgeschalteten Player ein, spielt die Sprachausgabe, und schaltet ihn danach wieder ab.
  • Die Sprachausgabe beendet auch eine in "Pause" befindliche Wiedergabe, spielt die Sprachausgabe ab, und belässt nach der Wiederherstellung den Player im "Stop"-Zustand
  • Wird während der Sprachausgabe im LMS die Ausgabe gestoppt (Stop), wird die aktuelle Sprachausgabe unterbrochen und der vorherige Zustand wiederhergestellt ("Abbrechen einer Ausgabe")
  • Wird während der Sprachausgabe die Zone abgeschaltet, wird der ursprüngliche Zustand wiederhergestellt, jedoch der Player bleibt ausgeschaltet.
  • Wenn Zone "Wohnzimmer" durch einen Aufruf –player "Wohnzimmer" belegt ist, und unmittelbar danach folgt ein anderer Aufruf mit –player "Sauna,Wohnzimmer", wird die zweite Ausgabe in Sauna und Wohnzimmer verzögert, bis die erste Ansage im Wohnzimmer abgearbeitet ist. Während dabei im Wohnzimmer die beiden Ansagen hintereinander ausgegeben werden, entsteht in der Sauna der Eindruck einer verzögerten Ausgabe. Das ist das Soll-Verhalten.
  • Bei langen Playlists (z.B. 500 Einträge) dauert es relative lange (bis zu 30 Sekunden!), bis der LMS die Playlist wiederhergestellt hat. Das ist LMS-spezifisch und kann nicht vom Plugin beeinflusst werden.

Known Issues

  • Nach der Wiederherstellung der Playlist werden im LMS-Webinterface nicht mehr die Einzeltitel, sondern die einzelne Playlist angezeigt. In iPeng wird die Playlist aber korrekt angezeigt (evt. ein Bug des LMS-WebIf?)
  • Die Wiederherstellung von Synchronisierungsgruppen funktioniert noch nicht reibungslos.