FHEM Forum

FHEM - Anwendungen => Multimedia => Thema gestartet von: tfriedrich85 am 15 August 2021, 22:00:34

Titel: [Gelöst] Sonos Speak - Probleme bei Umlauten
Beitrag von: tfriedrich85 am 15 August 2021, 22:00:34
Hallo zusammen,

ich nutze Sonos Speak schon mehrere Jahre und seit kurzem gibts neue Probleme:
Danke
Titel: Antw:Sonos Speak - Probleme bei Umlauten
Beitrag von: Maui am 16 August 2021, 17:25:51
Ich hab grad mal den Standard bei Speak (google) getestet und ja, das ist wirklich schrecklich :D
Hab jetzt nicht weiter geguckt, aber gefühlt wird google da was umgestellt haben.
Ich würde einfach auf espeak bzw. gleich auf pico2wave umstellen, dann hast du auch gleich eine Offline-Fähigkeit, was in manchen Fällen sehr praktisch sein kann (in meinem Fall zb. wenn das Internet ausfällt kommt so trotzdem noch die Meldung, dass es weg ist und wann es wieder da ist)
EDIT: Das mit den Umlauten liegt wohl an dem Sonos Modul, also an dem Umgang mit dem Text für die URL.
Mit pico2wave ist das aber auch kein Problem, da du ja lokal den Text auf deinem Rechner erstellst.
Titel: Antw:Sonos Speak - Probleme bei Umlauten
Beitrag von: Jamo am 16 August 2021, 19:34:42
Hallo Friedrich,
das gehts so. In der 99_MyUtils.pm, in der subroutine, wo Du den Wettertext zusammenbaust:
$wettertext enthaelt dabei die Sprachausgabe, die Du nachher mit speak über Sonos ausgeben willst.
Hier werden alle umlaute in wettertext durch ae/ue/usw ersetzt.
my %umlaute    = ("ä" => "ae", "Ä" => "Ae", "ü" => "ue", "Ü" => "Ue", "ö" => "oe", "Ö" => "Oe", "ß" => "ss");
my $umlautkeys = join ("|", keys(%umlaute));
$wettertext=~ s/($umlautkeys)/$umlaute{$1}/g;
Titel: Antw:Sonos Speak - Probleme bei Umlauten
Beitrag von: Maui am 16 August 2021, 21:48:20
Alternativ kannst du das Modul auch ein wenig anpassen.
Wenn du aus Zeile 4584 folgendes änderst, von

my $url = sprintf(SONOS_Client_Data_Retreive('undef', 'attr', 'SpeakGoogleURL', $SONOS_GOOGLETRANSLATOR_URL), SONOS_URI_Escape(lc($language)), SONOS_URI_Escape($text));

in

my $url = sprintf(SONOS_Client_Data_Retreive('undef', 'attr', 'SpeakGoogleURL', $SONOS_GOOGLETRANSLATOR_URL), SONOS_URI_Escape(lc($language)), SONOS_URI_Escape(SONOS_Latin1ToUtf8($text)));

Dann gehen Umlaute ohne das du den Text anpassen musst.
Titel: Antw:Sonos Speak - Probleme bei Umlauten
Beitrag von: tfriedrich85 am 17 August 2021, 10:20:50
Zitat von: Maui am 16 August 2021, 21:48:20
Alternativ kannst du das Modul auch ein wenig anpassen.
Wenn du aus Zeile 4584 folgendes änderst, von

my $url = sprintf(SONOS_Client_Data_Retreive('undef', 'attr', 'SpeakGoogleURL', $SONOS_GOOGLETRANSLATOR_URL), SONOS_URI_Escape(lc($language)), SONOS_URI_Escape($text));

in

my $url = sprintf(SONOS_Client_Data_Retreive('undef', 'attr', 'SpeakGoogleURL', $SONOS_GOOGLETRANSLATOR_URL), SONOS_URI_Escape(lc($language)), SONOS_URI_Escape(SONOS_Latin1ToUtf8($text)));

Dann gehen Umlaute ohne das du den Text anpassen musst.

Hallo Leute,

Ich habe beide Lösungsmöglichkeiten getestet, sie funktionieren super!
Danke euch!
Titel: Antw:Sonos Speak - Probleme bei Umlauten
Beitrag von: MadMax-FHEM am 17 August 2021, 11:00:26
Zitat von: tfriedrich85 am 17 August 2021, 10:20:50
Hallo Leute,

Ich habe beide Lösungsmöglichkeiten getestet, sie funktionieren super!
Danke euch!

Dann nicht vergessen: exclude_from_pdate ;)

Oder: immer wieder nachpatchen (bis es evtl. übernommen wurde)...

Gruß, Joachim
Titel: Antw:[Gelöst] Sonos Speak - Probleme bei Umlauten
Beitrag von: Maui am 17 August 2021, 11:03:08
Hab schon im sonos-thread nen patch zur Verfügung gestellt aber der Maintainer scheint nicht mehr sehr aktiv zu sein
Titel: Antw:[Gelöst] Sonos Speak - Probleme bei Umlauten
Beitrag von: shamal2008 am 05 November 2021, 23:34:06
Hallo Maui,

zuerst mal danke für deinen Patch - hab ihn angewendet, allerdings in Zeile 4854 (da dürfte bei dir ein Zahlendreher drin sein), FHEM restarted, leider ohne Erfolg. Das Sonos-Modul neigt bei mir sowieso immer wieder zum "ich vergesse, dass ich existiere" (soll heißen, die Player sind angeblich alle appeared, aber man kann nichts steuern)...

Gibts da noch einen Workaround?

Danke, Thomas