Squeezebox Modul - erste Version

Begonnen von bugster_de, 17 Dezember 2013, 22:12:10

Vorheriges Thema - Nächstes Thema

heppel

Hallo  ChrisD,

Zitat von: ChrisD am 28 Januar 2017, 08:08:06
Ich könnte ein Timeout zum Modul hinzufügen, z.B.:
set player talk timeout:10 Dies ist ein Test
Damit würde 10 Sekunden nach Play abgebrochen.

danke für das Angebot, aber das wäre dann ja immer noch Zufall, ob die Ansage kommt, oder nicht.

Zitat
Edit: Der Bug wurde inzwischen von Ralphy bestätigt (Beitrag 3205, ab 3190 ist eine Analyse des Fehlers), wann eine korrigierte Version von Squeezeplayer verfügbar sein wird ist aber noch offen.

Vielen Dank für den Link. Das wird dann ja langfristig die Lösung werden.

Ich habe mal den von mhilbush vorgeschlagenen Patch auf Squeezlite 1.8 angewandt.  Damit und mit Squeezelite 1.5 habe ich noch mal getestet. In beiden Varianten hatte ich keine Probleme mehr.

Jetzt muss ich nur noch einen Weg finden, ein funktionierendes Binary für mein OpenELEC zu erzeugen. (Statisch linken auf Raspian geht nicht.)

Viele Grüße,
  Heppel

heppel

Hallo Ronny,

Zitat von: FHEMAN am 28 Januar 2017, 15:04:29
Ich finde deine Idee mit der lokalen MP3 als Workaround ziemlich gut. Kannst du mir nähere Infos dazu geben? Was hast du da für einen Dienst aufgesetzt? Von der Stimme her finde ich IVONA ziemlich ausgereift. So bin ich gerade dabei, mir hier ein Sammelsurim an mp3s zu erstellen.

ich habe auf einem Raspberry Pi 3 sowohl den LMS als auch einen Apache-Webserver laufen. Auf dem Webserver habe ich einen zusätzlichen virtuellen Host auf einem anderen Port konfiguriert, in dem ich die Ausführung von CGIs angeschaltet habe. Dann habe ich ein Perl-Script geschrieben, das als CGI ausgeführt wird und mit Pico und ffmpeg aus dem String eine MP3-Datei macht. Die Datei speichere ich in einem Directory, das auch das "ttsMP3FileDir" für meine Player ist. Den Inhalt dieser Datei liefert das Script natürlich auch noch über den Web-Server zurück. Wenn der String schon mal bearbeitet wurde, liefere ich die bereits bestehende Datei aus. So habe ich sichergestellt, das bei den beiden Aufrufen aus dem LMS auch wirklich das Gleiche produziert wird. Das war beim Debuggen wichtig.

Das Ganze ist noch ziemlich rudimentär. Die Sprachqualität von Pico ist nicht besonders, aber bei Gelegenheit kann ich da ja noch Espeak oder Festival probieren. (Alle drei Sprachgenerierungspakete sind in den Raspian-Repositories.)

Ich nehme lieber einen lokalen Dienst, als einen Cloud-Dienst. Das hat Vorteile bei der Verfügbarkeit und beim Datenschutz.

Wenn Du mit statischen MP3s auskommst, bist Du mit "fromtexttospeech" sicher besser dran. Aber mir schweben auch dynamische Ansagen mit Messwerten vor. Da sich eine Lösung für squeezelite abzeichnet, werde ich den Workaround nicht weiter verfolgen.

Viele Grüße,
  Heppel

TWART016

Ich habe nachträglich den Passwort Schutz für LMS aktiviert. Wie kann ich das im SB_Server Device eintragen, ohne später das Passwort im Klartext in FHEM zu haben?

ChrisD

Hallo,

Ab der Version 0031 des Servers werden User und Passwort nicht mehr im Modul selbst gespeichert. Bei der Definition müssen sie wie bisher mit angegeben werden, die Definition wird aber automatisch geändert, so dass sie nicht mehr sichtbar sind.

Weitere Änderungen:

- syncGroup volume hinzugefügt, wie beim Player, absolut (ohne Vorzeichen) oder relativ (mit Vorzeichen)
- bei syncGroup talk warten bis die Player synchronisiert sind
- deutsche Dokumentation für syncGroup hinzugefügt

ZitatDer Server startet auch nicht neu, oder ist das nur der Dienst vom LMS?
Es wird nur der Dienst vom LMS neu gestartet. Einen Neustart des Rechners kannst du nicht über das CLI-API durchführen.

Grüße,

ChrisD

TWART016

Zitat von: ChrisD am 04 Februar 2017, 21:54:03
Ab der Version 0031 des Servers werden User und Passwort nicht mehr im Modul selbst gespeichert. Bei der Definition müssen sie wie bisher mit angegeben werden, die Definition wird aber automatisch geändert, so dass sie nicht mehr sichtbar sind.
Cool, danke.

Zitat von: ChrisD am 04 Februar 2017, 21:54:03
- syncGroup volume hinzugefügt, wie beim Player, absolut (ohne Vorzeichen) oder relativ (mit Vorzeichen)
Wie muss ich das einsetzten? Bei allen Playern die das Betrifft das attr syncVolume auf 1 setzen?

ChrisD

Hallo,

ZitatWie muss ich das einsetzten? Bei allen Playern die das Betrifft das attr syncVolume auf 1 setzen?
Das Attribut wird in dem Fall nicht benötigt.

Mit
set server syncGroup volume GruppeA 75wird die Lautstärke aller Player aus GruppeA auf 75 gesetzt. Voraussetzung ist dass die Gruppe aktiv ist (z.B. über syncGroup load GruppeA).

Mit
set server syncGroup volume GruppeA +5wird die Lautstärke aller Player um 5 erhöht.

Grüße,

ChrisD

TWART016

Zitat von: ChrisD am 04 Februar 2017, 22:59:03
Das Attribut wird in dem Fall nicht benötigt.
Für was ist es dann da?

Zitat von: ChrisD am 04 Februar 2017, 22:59:03
Mit
set server syncGroup volume GruppeA 75wird die Lautstärke aller Player aus GruppeA auf 75 gesetzt. Voraussetzung ist dass die Gruppe aktiv ist (z.B. über syncGroup load GruppeA).
So wie ich das sehe geht das nur mit syncGroup. Ist das nicht aus der Sicht des Players möglich. Ich füge manchmal einen oder zwei Player zum Sync hinzu oder entferne sie.

Geht ein
set SB_Player_Kueche sync volume 75 / +5
nicht? Dann werden alle Player in SYNCGROUPPN auf 75 oder +5 gesetzt.

ChrisD

#1357
Hallo,

ZitatFür was ist es dann da?
Das Attribut entspricht dem Zustand der im LMS integrierten Lautstärkesynchronisation.

ZitatSo wie ich das sehe geht das nur mit syncGroup. Ist das nicht aus der Sicht des Players möglich.
Das wäre auch möglich. Im Beitrag 1255 gab es bereits eine Anfrage für den iPeng-Modus mit einem Vorschlag wie er umgesetzt werden könnte. in den nachfolgenden Beiträgen wurde noch kurz darüber diskutiert, ohne dass aber andere Vorschläge von iPeng-Nutzern gemacht wurden. Da jetzt erneut die Anfrage nach dem iPeng-Modus kam, aber keine neuen Erkenntnisse wie er genau funktioniert (siehe Fragen im Beitrag 1340) vorliegen habe ich den Vorschlag aus 1255 umgesetzt.

Ich möchte vermeiden dass es zu viele unterschiedliche Möglichkeiten gibt die Lautstärke anzupassen.

Edit: In der Dokumentation zu iPeng habe ich folgendes gefunden:
ZitatYou can tell that Group Control is enabled from the Player Group icon on the left [...]
Volume: The Group Volume slider will show the average volume of all Players in the Group. Moving the slider will relatively adjust the Volume of all Players in the Group. iPeng uses a special algorithm to make the volume change as audibly similar as possible even if the volume level on different Players is grossly different.

Der Lautstärkeregler für die Gruppe scheint also den Mittelwert aller Player einer Gruppe anzuzeigen. Was der 'special algorithm' genau bewirkt müsste über Testreihen ermittelt werden.

Grüße,

ChrisD

TWART016

Zitat von: ChrisD am 05 Februar 2017, 10:01:22
Ich möchte vermeiden dass es zu viele unterschiedliche Möglichkeiten gibt die Lautstärke anzupassen.
Das verstehe ich vollkommen. Dann muss ich mir was anderes Überlegen.

In Beitrag 1255 wurde auch geschrieben, dass erhöhen um X funktioniert.
set SB_Player_Kueche volume +3
Bei mir geht das nicht. In dem Fall wird der Wert volume auf 3 gesetzt und nicht um 3 erhöht.

ChrisD

Hallo,

ZitatBei mir geht das nicht. In dem Fall wird der Wert volume auf 3 gesetzt und nicht um 3 erhöht.
Dies ist ein Fehler der in 0065 entstanden ist. Ich werde ihn heute Abend beheben.

ZitatDas verstehe ich vollkommen. Dann muss ich mir was anderes Überlegen.
Ich würde als Alternative den Befehl 'groupvolume' beim Player sehen, z.B.:
set playerX groupvolume +10Dabei würde die Lautstärke aller Player die sich in der gleichen Gruppe befinden und bei denen das Attribut syncVolume auf 'group' steht um 10 erhöht werden. Dies entspricht nicht ganz dem Verhalten von iPeng, wäre aber ein Anfang.

Grüße,

ChrisD

TWART016

Zitat von: ChrisD am 05 Februar 2017, 15:58:51
Dies ist ein Fehler der in 0065 entstanden ist. Ich werde ihn heute Abend beheben.
hört sich super an

Ich möchte das mit dem Sync sehr variabel halten. Deshalb verwende ich keine syncGroups, da ich die immer erst aktivieren müssten. Manchmal möchte ich nämlich nur 2 von 3 Player aus der SyncGroup die Lautstärke anpassen. Mein Plan sieht so aus:

Ich habe auf einer Übersichtsseite im Tablet UI für jeder der 4 Player (vllt bald 2 mehr) eine eigene Zeile mit den wichtigsten Funktionen (Name, Master, Titel, Lautstärke, Play/Pause/Next/...). Dort werde ich noch ein Switch für das attr syncVolume (0 oder 1) einbauen. Hat ein Player nun das attr 1 gesetzt, wird bei allen Playern, die aktuell Slaves oder Masters sind die Lautstärke erhöht (wenn auch dort attr 1 ist, bei attr 0 natürlich nicht).
Habe es zwar noch nicht getestet, sollte aber funktionieren.

Zitat von: ChrisD am 05 Februar 2017, 15:58:51
Ich würde als Alternative den Befehl 'groupvolume' beim Player sehen, z.B.:
set playerX groupvolume +10Dabei würde die Lautstärke aller Player die sich in der gleichen Gruppe befinden und bei denen das Attribut syncVolume auf 'group' steht um 10 erhöht werden. Dies entspricht nicht ganz dem Verhalten von iPeng, wäre aber ein Anfang.
das wäre natürlich ideal.

Luke2000

Zitat von: Luke2000 am 12 Dezember 2016, 14:04:23
Hallo zusammen,

kurze Zwischenfrage:
Kann man mit dem Squeezebox Modul auch Boxen steuern, die nicht mit einem lokalen LMS verbunden sind, sondern mit mysqueezebox.com?

Ich habe versucht, das herauszubekommen und fürchte, dass es nicht geht. Ich konnte aber auch nicht alle 85 Seiten lesen...

Danke und Grüße
Luke

Hallo zusammen,

zu meiner Frage wurde mir ja damals geantwortet, dass es NOCH nicht geht, Squeezeboxen zu steuern, die mit mysqueezebox.com verbunden sind und nicht mit einem lokalen LMS.

Gibt es denn Pläne diesbezüglich?

Danke und Grüße
Luke

awex102

Hallo,

nochmal zum Thema TTS:

Die google API scheint ja nicht zu funktionieren. Ich meine mich zu erinnern, dass da bestimmte Header bei der Anfrage an google mitgegeben werden müssen. Die Anfrage an google schlägt jedenfalls fehl. die URL wird korrekt erzeugt, aber zurück kommt nichts.

Das Header Thema wird auch hier diskutiert: https://gist.github.com/alotaiba/1728771

Since recently, this service rejects (redirects to a captcha page) requests that either:

- have a non-browser User-Agent, including Mozilla/5.0;
- do not contain client=t.

Was ist der aktuelle Weg um TTS grundsätzlich zum Laufen zu kriegen (geht es überhaupt noch ohnen einen eigenen lokalen Dienst) ?

KernSani

Keine Probleme bei mir, mit
attr EG_Kueche_sb ttslink http://translate.google.com/translate_tts?ie=UTF-8&tl=<LANG>&q=<TEXT>&client=tw-ob

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

awex102

Hmmm, ok. Bei mir kommt nix bei einem say irgendwas . Im LMS sehe ich den Aufruf der URL bzw dir URL wird angezeigt, Play Status, aber der Player läuft durch und es wird nichts abgespielt. Gibt´s noch einen Trick oder etwas was ich übersehe / konfigurieren muss?