Hallo zusammen,
ich nutze Sonos Speak schon mehrere Jahre und seit kurzem gibts neue Probleme:
- Wie hier https://forum.fhem.de/index.php/topic,121192.0.html (https://forum.fhem.de/index.php/topic,121192.0.html) beschrieben ist die Stimme langsam und klingt sehr "künstlich" / gibts mittlerweile die Möglichkeit eine andere TTS Engine zu verwenden?
- Beim Ausgeben von z.B. Wetteransagen kommt das Modul mit Umlauten nicht mehr klar. Beispiel: Ich lasse mir aus dem Modul Wetter die den Text zum aktuellen Wetter zusammenbauen https://wiki.fhem.de/wiki/SONOS (https://wiki.fhem.de/wiki/SONOS) und sobald im Text ein Umlaut vorkommt, wird der gesamte Text nahezu unverständlich.
Frage: Wisst ihr wie man bei einem Text string die Umlaute jeweils durch ae oe oder ue ändert? Das würde mir schon helfen, denn oe wird durch Sonos Speak als ö ausgesprochen.
Danke
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.
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;
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.
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!
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
Hab schon im sonos-thread nen patch zur Verfügung gestellt aber der Maintainer scheint nicht mehr sehr aktiv zu sein
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