Neues Modul: Text2Speech

Begonnen von Tobias, 07 Januar 2014, 12:57:23

Vorheriges Thema - Nächstes Thema

Toto1973

Bis jetzt geht es bei mir noch.
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

bmwfan

#511
Wollte auch Text2Speech in Betrieb nehmen, habe mir aber vermutlich den Raspi abgeschossen.  :'(

Hardware: Raspi 2B mit FHEM-Server und CUL
Folgendes durchgeführt:
Nach der Anleitung http://wiki.leupers.net/index.php?title=FHEM/Sprachausgabe den mplayer auf dem Raspi installiert.
Dann sudoers editiert und Ergänzung eingetragen.
Dann im DOS-Format gespeichert.
Meldung kam, ob ich das wirklich möchte (DANGER). Bestätigt.
Wenn ich jetzt neu editieren will oder einen anderen Befehl per sudo absetze (bsp: sudo shutdoen -r 0) kommt immer die Meldung (wobei die Zeile auch manchmal 1 ist):
pi@raspberrypi /etc $ sudo shutdown -r 0
sudo: parse error in /etc/sudoers near line 9
sudo: no valid sudoers sources found, quitting
sudo: Regelwerks-Plugin konnte nicht initialisiert werden

Beachte: Im Beitrag stand sudo vi /... zum Aufruf der sudoers verwenden. Habe ich auch so gemacht und bin erst später, als es nicht ging, darauf gekommen dass ich sudo visudo hätte verwenden sollen!

Habe dann im Netz gesucht und gefunden, dass ich mit pkesec visudo editieren muss. Getan und die eingefügten Zeilen wieder entfernt. Beim Speichern wird wieder gefragt, ob im DOS oder MAC-Format. DOS-Format gewählt und gespeichert.

Allerdings kommt die Fehlermeldung immer noch.

Neuerliche Suche ergab, dass von die sudoers von einem funktionierenden Raspi herüberkopiert werden sollte. Allerdings habe ich das nicht.

Hat jemand noch eine andere Lösung?

Gruß Jürgen

Gelöst:
Fehler war, dass der Editor beim speichern automatisch die Endung .tmp hinter sudoers macht. Dann erschien der genannte Fehler. Beim Speichern muss die Endung gelöscht werden und nur unter sudoers gespeichert werden. Dann gehts. Verwirrend ist, dass mit ls nur der Dateiname ohne Endung angezeigt wird. In dem Verzeichnis war gar keine Datei sudoers.tmp gelistet. Deswegen fiel es mir nicht sofort auf.
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

chunter1

Zitat von: harway2007 am 08 Oktober 2015, 21:55:52
habe mir Voice RSS übergangsweise eingerichtet ..
??? die Ausgabe Qualität ist nicht vergleichbar ..

bei mir geht google jetzt auch nicht mehr  :-\
hast du einen link zur anleitung wie man den voice rss installiert?
oder gibts eine zuverlässige alternative die lokal läuft?

bmwfan

Sprachausgabe geht prinzipiell. Ich bekomme eingegebene Texte gesprochen.
Wollte jetzt die Ausgabe des Wetterberichtes nach dem Wiki http://www.fhemwiki.de/wiki/Wetter_vorlesen_lassen einrichten. Habe den Code in 99_myUtils.pm kopiert und die Devicenamen entsprechend geändert, bekomme jetzt allerdings folgende Fehlermeldung ins Log. Gesprochen wird nichts. Die Routine Solarlog ist auch in der 99_myUtils.pm enthalten.

2015.10.11 14:24:55 1: PERL WARNING: Constant subroutine main::DEVICE_NAME_TH redefined at /usr/share/perl/5.14/constant.pm line 136.
2015.10.11 14:24:55 1: PERL WARNING: Constant subroutine main::DEVICE_NAME_WEATHER redefined at /usr/share/perl/5.14/constant.pm line 136.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine myUtils_Initialize redefined at ./FHEM/99_myUtils.pm line 23.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine Solarlog redefined at ./FHEM/99_myUtils.pm line 34.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine speakWetterDaten redefined at ./FHEM/99_myUtils.pm line 145.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine speakWetterVorhersage redefined at ./FHEM/99_myUtils.pm line 165.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine prepareNumToSpeak redefined at ./FHEM/99_myUtils.pm line 211.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine rundeZahl0 redefined at ./FHEM/99_myUtils.pm line 219.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine rundeZahl1 redefined at ./FHEM/99_myUtils.pm line 229.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine prepareTextToSpeak redefined at ./FHEM/99_myUtils.pm line 242.
2015.10.11 14:24:55 1: PERL WARNING: Subroutine speak redefined at ./FHEM/99_myUtils.pm line 260.
2015.10.11 14:24:56 4: CUL_Parse: CUL_0 A 14 04 A270 EF38E0 31AE26 00DA2F2543000011A409C4C6 -103
2015.10.11 14:24:57 4: CUL_send:  CUL_0As 0A 04 8002 31AE26 EF38E0 00
2015.10.11 14:25:46 4: CUL_Parse: CUL_0 A 14 85 A270 27238A 31AE26 00D434000000000EF10BB8CA -101
2015.10.11 14:25:46 4: CUL_send:  CUL_0As 0A 85 8002 31AE26 27238A 00
2015.10.11 14:25:47 4: CUL_Parse: CUL_0 A 14 4A 845E 2A8260 000000 855EEC00000500000937FFF8 -78
2015.10.11 14:26:00 1: PERL WARNING: Constant subroutine main::DEVICE_NAME_TTS redefined at /usr/share/perl/5.14/constant.pm line 136.
2015.10.11 14:26:05 4: MyTTS: Auflistung der Textbausteine nach Aufbereitung:
2015.10.11 14:26:05 4: MyTTS: 0 => Die Raumtemperatur betraegt 22 Grad.
2015.10.11 14:26:05 4: MyTTS: 1 => Die Luftfeuchtigkeit liegt bei 47 Prozent.
2015.10.11 14:26:05 4: Verwende TTS Spracheinstellung: Deutsch
2015.10.11 14:26:05 4: Text2Speech: Bearbeite jetzt den Text: Die Raumtemperatur betraegt 22 Grad.
2015.10.11 14:26:05 4: Text2Speech: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: ffc37b83982a3646326820002338da77.mp3
2015.10.11 14:26:05 4: Text2Speech: Verwende Google OnlineResource zum Download
2015.10.11 14:26:05 4: Text2Speech: Hole URL: http://translate.google.com/translate_tts?tl=de&client=t&prev=input&q=Die%20Raumtemperatur%20betraegt%2022%20Grad.
2015.10.11 14:26:06 4: Text2Speech: Schreibe mp3 in die Datei cache/ffc37b83982a3646326820002338da77.mp3 mit 1772 Bytes
2015.10.11 14:26:06 1: PERL WARNING: Use of uninitialized value $mp3Duration in string at ./FHEM/98_Text2Speech.pm line 610.
2015.10.11 14:26:06 4: Text2Speech:sudo /usr/bin/mplayer -ao alsa:device=hw=0.0 -really-quiet -nolirc -noconsolecontrols -softvol -softvol-max 110 -volume 100 cache/ffc37b83982a3646326820002338da77.m


Die Wetterdaten (Raumsensoren) werden anscheinend richtig ausgelesen, aber nach der Ermittelung der Textausgabe über Google scheint etwas nicht zu passen.
Warum werden so viele Routinen redefined? Auch eine alte Routine, die den Solarlog ausliest.

Hat jemand einen Tip?

Gruß Jürgen
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Hollo

Zitat von: bmwfan am 11 Oktober 2015, 15:04:11
...Hat jemand einen Tip?
Kopier die URL mal in die Adresszeile Deines Browsers; da wirst Du eine Captcha-Abfrage bekommen.
Text-to-Speech per Google-API funktioniert nicht mehr richtig.

Mehr oder weniger einzige Alternative für FHEM ist derzeit VoiceRSS.
Das funktioniert seit einiger Zeit sehr gut; wobei die Sprachausgabe bzgl. Betonung und Textfluss m.E. nicht an Google rankommt. Gerade bei Namen oder "denglisch"-Wörtern ist das nicht der Hit.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

bmwfan

Mit der URL im Browser geht es einwandfrei. Wird deutlich ausgesprochen. Ich vermute der Fehler liegt an den PERL warnings wie redefined und letztendlich an

Use of uninitialized value $mp3Duration in string at ./FHEM/98_Text2Speech.pm line 610.

Da scheint etwas an dem Modul nicht zu stimmen. Leider sind meine PERL-Kenntnisse nicht dementsprechend, dass ich den Fehler selber finden kann. Der Fehler müßte doch aber auch bei anderen, die dieses Modul benutzen, auftreten.
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Toto1973

Ich vermute mal, das es an den verschiedenen Versionen des Moduls liegt, das es bei den einen geht, und bei den anderen nicht!
Vielleicht wäre hier ein Update von FHEM ratsam!?

Wie gesagt, bis jetzt funktioniert Text2Speech mit Google noch einwandfrei bei mir.
Ich werde jeden Morgen mit aktuellem Wetterbericht und Außentemperatur geweckt!
Raspberry PI2, Rademacher DuoFern Stick, CUL, 2 x SCC,  JeeLink 868 Mhz, JeeLink 433 Mhz, 3x Magic UFO LED WiFi Controller, 4x MAX BC-RT-TRX-CyG, 2x MAX Fensterkontakt, 5x Rademacher Gurtwickler, 6x TX29DTH-it, 2x TX25-it als Helligkeitssensor, 1X HM-ES-PM, 6x Sonoff, 7x G-Homa, PIR-1000

bmwfan

System wurde heute morgen upgedated. Habe ich Versionen im Github und meine verglichen. Istd er neueste Stand.

@Toto1973: Würdest Du mir Deine 98_Text2Speech mal zumailen? Sende Dir dann ne PM mit der Adresse, wenn Du einverstanden bist.
Synology DS720+ mit Docker-Container und Haupt-FHEM, HM-LAN, Jalousienaktoren HmWired, Shelly-Devices; Raspi 3B+ mit piVCCU ohne FHEM-Instanz, CUL, JeeLink; Raspi 3B+ mit FHEM und HMUARTUSB,  Raspi 3B+ mit HMUARTGPIO, 1-wire, ebusd

Hollo

Zitat von: bmwfan am 11 Oktober 2015, 16:50:29
Mit der URL im Browser geht es einwandfrei. Wird deutlich ausgesprochen. Ich vermute der Fehler liegt an den PERL warnings wie redefined und letztendlich an

Use of uninitialized value $mp3Duration in string at ./FHEM/98_Text2Speech.pm line 610.
Da scheint etwas an dem Modul nicht zu stimmen...
Dann scroll doch mal ein ein paar Seiten zurück, da findest Du die selben Hinweise.
Guck Dir mal die erzeugte/geladene MP3-Datei an; die ist viel zu klein und hat nur einen Textinhalt mit dem "Fehlerhinweis".
Daher funktioniert auch die Feststellung der "Musik-Länge" im Modul nicht.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

P.A.Trick

Zitat von: Hollo am 11 Oktober 2015, 18:04:57
Dann scroll doch mal ein ein paar Seiten zurück, da findest Du die selben Hinweise.
Guck Dir mal die erzeugte/geladene MP3-Datei an; die ist viel zu klein und hat nur einen Textinhalt mit dem "Fehlerhinweis".
Daher funktioniert auch die Feststellung der "Musik-Länge" im Modul nicht.

Bleibt trotzdem eine nicht initialisierte Variable!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

spiedo

Zitat von: chunter1 am 11 Oktober 2015, 13:17:34
bei mir geht google jetzt auch nicht mehr  :-\

Hi, bei mir ging die Sprachausgabe auch nicht mehr bei neuen Ansagen. Die gespeicherten funktionierten alle noch. Ich habe den Fehler gefunden. Ich mußte mir eine neue IP vom Provider geben lassen.

Über Fritzbox / Internet / Online-Monitor / neu verbinden.

In manchen MP3-Files stand "Our systems have detected unusual traffic from your computer network.  Please try your request again later." Diese habe ich alle gelöscht. Die Größe war bei allen 1.771


Ellert

Google funktioniert bei mir mit gleichbleibender WAN-IP-Adresse, aber mit folgender Einschränkung:

Wenn Googletranslate häufig kurz hintereinander aufgerufen wird, dann kommt es zu der beschriebenen Fehlermeldung (http://forum.fhem.de/index.php/topic,18481.msg341846.html#msg341846)
Nach einiger Zeit funktionieren einzelne Aufrufe von Googletranslate wieder.

Diese Beobachtung stimmt mit der Fehlermeldung überein:
ZitatOur systems have detected unusual traffic from your computer network.  Please try your request again later.

Ich habe das gelöst (zu 90%), indem ich 2 tts Geräte definiert habe, eins für Google und eins für VoiceRSS. Google liest die kurzen Meldungen und VoiceRSS die langen Texte (Wetterberichte, Tagestexte,...)

Kennt hier jemand eine Möglichkeit die WAN-Verbindung über FHEM (auf RasPi) zu trennen und neu zu verbinden, um eine neue IP zu erhalten
(für Windows gibt es ein VBScript: http://www.mengelke.de/Projekte/FritzBoxVBScript#reconnect)?

berrnd

Hallo zusammen,

Google wird ja immer schlimmer ... jetzt ist die Fehlerseite sogar ohne Captcha, nur mit dem Hinweis man soll später nochmal kommen ... ich glaub die drehen da bald ganz den Hahn zu, was schade wäre, Sprachqualitätsmäßig kommt nichts anderes an Google ran...

Ich hab mal die Tipps von https://stackoverflow.com/questions/9893175/google-text-to-speech-api/31791632#31791632 ins Modul integriert (HTTPS verwenden, andere/zusätzliche URL-Parameter, User-Agent und Referer-Header mitsenden), siehe Anhang.

Es lief bei mir damit erst mal besser, nach testweise sehr vielen Aufrufen in sehr kurzer Zeit gabs aber auch damit die gleiche Fehlerseite...

Grüße,
Bernd

Ellert

Einer alternative wäre die Acapella Demo, wenn man sie anzapfen könnte. Die Stimmen sind überzeugend.

http://www.acapela-group.com/voices/demo/

Leider habe ich nicht die Kenntnisse und Erfahrung, um über einen HTTP POST die Rückgabe zu speichern. Mit der Demo lassen sich keine Dateien herunterladen.

Hollo

@berrnd
Du hast aber schon die letzten x Seiten gelesen, dass das schon alles probiert wurde und bekannterweise nicht zu einem anhaltenden Erfolg führt !?  ???
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"