Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

td

Ja, das ist schon merkwürdig.
Von "/" an sind sämtliche Verzeichnisse bis hinunter auf "/opt/fhem/cache" auf 755 gesetzt. Darüber hinaus läuft fhem unter root.
root     20723  0.5  0.3 125560 62872 ?        S    Aug05  24:16 /usr/bin/perl /opt/fhem/fhem.pl /root/bin/fhem/fhem.config

Viel interessanter ist jedoch folgendes:
2016.08.07 14:51:36 4: wstts: Auflistung der Textbausteine nach Aufbereitung:
2016.08.07 14:51:36 4: wstts: 0 => "Anruf von " .
2016.08.07 14:51:36 4: wstts: 1 => <Name entfernt>
2016.08.07 14:51:36 4: Verwende TTS Spracheinstellung: Deutsch
2016.08.07 14:51:36 4: Text2Speech: Bearbeite jetzt den Text: "Anruf von " .
2016.08.07 14:51:36 4: Text2Speech: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: f638ada5d8fdcc9a6a6a9d6d4bddb4b9.mp3
2016.08.07 14:51:36 4: Text2Speech: cache/f638ada5d8fdcc9a6a6a9d6d4bddb4b9.mp3 gefunden, kein Download
2016.08.07 14:51:36 4: Text2Speech_CalcMP3Duration: cache/f638ada5d8fdcc9a6a6a9d6d4bddb4b9.mp3 hat eine Länge von 1 Sekunden.
2016.08.07 14:51:36 4: Text2Speech:sudo /usr/bin/mplayer  -really-quiet -nolirc -noconsolecontrols -softvol -softvol-max 100 -volume 40 cache/f638ada5d8fdcc9a6a6a9d6d4bddb4b9.mp3
2016.08.07 14:51:38 4: Verwende TTS Spracheinstellung: Deutsch
2016.08.07 14:51:38 4: Text2Speech: Bearbeite jetzt den Text: <Name entfernt>
2016.08.07 14:51:38 4: Text2Speech: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: 12c12134fc2a361356a7f3584c4085b9.mp3
2016.08.07 14:51:38 4: Text2Speech: Verwende Google OnlineResource zum Download
2016.08.07 14:51:38 4: Text2Speech: Hole URL: http://translate.google.com/translate_tts?tl=de&client=tw-ob&q=Hubert%2C%20Wolfgang%20jun.
2016.08.07 14:51:39 4: Text2Speech: Schreibe mp3 in die Datei cache/12c12134fc2a361356a7f3584c4085b9.mp3 mit 10560 Bytes
2016.08.07 14:51:39 4: Text2Speech_CalcMP3Duration: cache/12c12134fc2a361356a7f3584c4085b9.mp3 hat eine Länge von 3 Sekunden.
2016.08.07 14:51:39 4: Text2Speech:sudo /usr/bin/mplayer  -really-quiet -nolirc -noconsolecontrols -softvol -softvol-max 100 -volume 40 cache/12c12134fc2a361356a7f3584c4085b9.mp3


Text2Speech sagt also einerseits, daß er die Datei "cache/f638ada5d8fdcc9a6a6a9d6d4bddb4b9.mp3" gefunden hat (für "Anruf von") und andererseits, daß er "cache/12c12134fc2a361356a7f3584c4085b9.mp3" geschrieben hat. Das cache-Verzeichnis ist aber leer!
olymp:/opt/fhem/cache # ll
total 0
drwxr-xr-x 1 root root 474 Jul  3  2015 templates

Das Problem tritt seit dem letzten Update von text2speech auf.

Hast Du noch irgendwelche Ideen?

Gruß,
td

td

So, Ursache gefunden:
Seit dem letzten Update scheint text2speech die modpath-Variable zu ignorieren. Sie ist bei mir auf "/opt/fhem" eingerichtet und text2speech nutzte brav das dortige Unterverzeichnis "cache".
Nun aber nutzt text2speech "/root/bin/fhem/cache"; in "/root/bin/fhem" liegt meine fhem-Konfigurationsdatei.
Mit

attr wstts TTS_CacheFileDir /opt/fhem/cache
attr wstts TTS_FileTemplateDir /opt/fhem/cache/templates

sollte es nun funktionieren.

Gruß,
td

Tobias

Zitat von: td am 08 August 2016, 13:58:46
So, Ursache gefunden:
Seit dem letzten Update scheint text2speech die modpath-Variable zu ignorieren. Sie ist bei mir auf "/opt/fhem" eingerichtet und text2speech nutzte brav das dortige Unterverzeichnis "cache".
Nun aber nutzt text2speech "/root/bin/fhem/cache"; in "/root/bin/fhem" liegt meine fhem-Konfigurationsdatei.
Mit

attr wstts TTS_CacheFileDir /opt/fhem/cache
attr wstts TTS_FileTemplateDir /opt/fhem/cache/templates

sollte es nun funktionieren.

leider aktuell works-as-designed.

Für TTS ist der Rootpath das FHEM Rootpath und beachtet kkein Modpath. Sorry, benutze ich nicht und war mir dessen Existenz nicht bewusst.
Kannst du hier einen Patch bereitstellen? Ich denke an mehreren Stellen müsste die Variable im Modul beachtet werden.

Gruß,
td
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Simon74

Ich habe auf von mplayer auf play umgestellt,
wird aber vom Modul nicht erkannt, bzw. die mplayer Paramater werden trotzdem aufgerufen.

play erscheint perfomanter, weniger abhängigkeiten, keine "Terminal type `unknown' is not defined." Meldungen mehr im Log

Wenn ich TTS_TimeOut löschen will sagt fhem: Only Numbers allowed

Tobias

Ich sehe aktuell keine Veranlassung auch play zu unterstützen. Die log Meldung wegzunehmen gibt's nen workaround, aber noch nicht geschafft den einzubauen

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Devender

Hallo zusammen,

ich bin jetzt mit meiner TTS Einrichtung fast durch.
Mit Hilfe vom Wiki und dem Forum läuft auch alles ganz gut.  Danke!  :)

Nun zu meine zwei Problemen:

Ich habe mit eine Templatedatei alarm.mp3 (für die Alarmanlage) angelegt.


Internals:
   ALSADEVICE hw=0.0
   DEF        hw=0.0
   MODE       DIRECT
   NAME       TTSystem
   NR         327
   STATE      Initialized
   TYPE       Text2Speech
   VOLUME     100
   Readings:
     2016-08-20 00:56:26   duration        3
     2016-08-20 00:56:26   endTime         00:00:00
     2016-08-20 00:56:30   playing         0
     2016-08-20 00:50:18   volume          100
   Helper:
     Text2Speech:
Attributes:
   TTS_FileMapping alarm:alarm.mp3
   TTS_FileTemplateDir /opt/fhem/cache
   TTS_Language Deutsch
   TTS_UseMP3Wrap 1
   TTS_VolumeAdjust 5000
   verbose    5


Nur leider wird diese nicht abgespielt sondern nur das Verzeichnis nebst Dateinamen beim Aufruf von set TTSystem tts :alarm: vorgelesen.
Der Befehl aus dem Log
sudo /usr/bin/mplayer -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols -softvol -softvol-max 5000 -volume 100 cache/ca44f9d979184a19ce5d7dd2b2e7cfc9.mp3
nach dem Aufruf lässt sich über die Konsole aber ohne Probleme abspielen.

Mein FHEM läuft unter root und die Verzeichnisse nebst Datei haben alle Berechtigungen.
-rwxrwxrwx 1 pi   pi   88398 Aug 20 00:55 alarm.mp3

Was kann ich hier noch prüfen?

Zweite Frage: Die Ausgabe über meine Kabellautsprecher (altes Teil von einem Rekorder) ist eher schlecht.
Gibt es mittlerweile eine Empfehlung für einen guten passiven kabelgebundenen Lautsprecher?

Danke!
Dirk

FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Otto123

Hallo Dirk,

passive Lautsprecher - wie soll das gehen? Der PI hat einen Signalausgang, im Kopfhörer sicher hörbar.
Also ich bin der Meinung da geht nur was mit Aktivboxen. Ich setze mini Bass cube SA-101 ein. Allerdings nicht ohne zusätzliche Filter am USB vom PI mit Strom zu versorgen.

Warum lässt Du das template Verzeichnis nicht wo es ist? Was bringt es, es mit dem cache Verzeichnis gleichzusetzen?  :o
Ganz woanders hin macht vielleicht Sinn, aber so?
/opt/fhem/cache
/opt/fhem/cache/templates


Lässt sich denn die Datei alarm.mp3 mit set TTSystem tts :/opt/fhem/cache/alarm.mp3:
abspielen?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Devender

Hallo Otto,

mit dem passiven PI Ausgang sieht es wirklich schlecht aus mit guter Qualität. Ließt man ja auch schon in den 44 Seiten hier.
Dein Vorschlag mit dem Jay-Tech mini Bass cube klingt super  :). Da ich meine gesammte Haustechnik in einer Wandluke untergebracht habe, passt der Jay-Tech auch mit den
Abmessungen: 5 x 5 x 5 cm (Laut Herstellerseite) noch gerade so rein.
Könntest du mit bitte noch sagen, was du als Filter für den USB genommen hast?
Ich habe eine Raspberry2 - du holst dir somit die Stormversorgung auch vom PI, korrekt?

Ich hatte bisher folgende Kombinationen ausprobiert.

/opt/fhem/cache
/opt/fhem/cache/templates
/tmp


Bei allen Verzeichniskombinatione wird mir bei Eingabe von:
set TTSystem tts :/opt/fhem/cache/alarm.mp3:
genau der Text vorgelesen aber nicht das mp3 abgespielt.

Der Test auf der Konsole spielt das mp3 allerdings ab.

sudo /usr/bin/mplayer -ao alsa:device=hw=0.0 -really-quiet -nolirc -noconsolecontrols /opt/fhem/cache/alarm.mp3


Ich bin mir sicher, dass ich irgendwas bei der Konfiguration falsch gemacht habe - komme aber nicht drauf  :(

Danke!
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Otto123

Der mini Bass cube passt in eine UP Dose und einem Standard Abdeckrahmen[/url] egal ob 50 oder 55 mm.  Nur hinten mit dem USB Stecker kann es fummelig werden.

Wenn Du die Stromversorgung aus einem separaten Netzteil nimmst ist alles ok, wenn die vom USB Anschluss vom raspi kommt, "hörst Du wie er arbeitet". Der Lautsprecher hat einen eingebauten Akku, ich verwende ihn nicht als Radio sondern für Durchsagen, also vielleicht einmal die Stunde. Der Akku wird vom USB geladen.
Ich wollte ne simple Entstörung und habe nach ein paar Experimenten ein RC Glied aus 100 µF Elko und 10 Ohm genommen. Dadurch wird der Ladestrom des Akkus drastisch reduziert, reicht bei mir aber aus. Ich hatte mal den Fall nach einem Stromausfall, das diese Kombi nicht von alleine wieder zum Laufen kam. Scheinbar geht das so nur als "Erhaltungsladung", wenn der Akku leer ist braucht er offenbar doch mal kurz direkt USB. Ich habe das Filter deshalb als Zwischenstecker aus einem alten USB Kabel gebaut. Sicher kann man das optimaler machen.

Vorlesen tut er den Dateinamen, wenn er ihn nicht finden kann - warum auch immer. Ich habe alles gelassen, einfach:sudo mkdir /opt/fhem/cache/templates
sudo chown fhem /opt/fhem/cache/templates
sudo chmod 777 /opt/fhem/cache/templates
gemacht und die mp3 da rein gespielt. Die muss auch nur lesbar sein, andere Berechtigung brauch die nicht.

Was ist wenn Du mal {system ('mplayer /opt/fhem/cache/templates/alarm.mp3')} auf der Kommandozeile in FHEm eingibst?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Devender

Zitat von: Otto123 am 21 August 2016, 14:43:26
Was ist wenn Du mal {system ('mplayer /opt/fhem/cache/templates/alarm.mp3')} auf der Kommandozeile in FHEm eingibst?

Der Befehl funktioniert und der Alarmton wird abgespielt...
Somit kein Rechteproblem *hm...
Mein Filemappingattr. habe ich so: TTS_FileMapping alarm:alarm.mp3

Den Lautsprecher habe ich mit jetzt mal bestellt. Teile für ein RC Glied müsste ich sogar noch in einer Elektrokiste haben.
Da ich den Lautsprecher auch nur verwende für Ansagen probiere ich mal, wie lange der Akku damit hält. ggf. ziehe ich mir den Strom von der Fritzbox.
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Otto123

Hast Du das ganze in einer FHEM Instanz oder über 2 Instanzen verteilt? Ich habe das nämlich über eine Remote TTS (kann ja Text2Speech) und dann müssen die Dateien auf dem System liegen welches wirklich den Sound wiedergibt.

Ich habe FileMapping und TemplateDir gar nicht definiert (also default) und es funktioniert. Also dann natürlich mit set TTSystem tts :alarm.mp3: 

Ich hatte mal noch festgestellt, dass offenbar keine Sonderzeichen7Striche/Unterstriche im Namen sein dürfen, aber hast Du ja nicht.

Die Sache mit dem mini Bass cube funktioniert bei mir seit fast zwei Jahren ohne Probleme,  bis auf den einen Stromausfall. Aber eigentlich weiß ich da  nicht so richtig was passiert war. Es hatte im Anschluss nur noch geknackt im LS wenn eine Ansage kam. Ich hatte den Tod vom Audio vom Raspi vermutet aber am Ende musste ich den LS mal aus und ein schalten. Das ist natürlich ein klein wenig doof in der UP Dose, aber es ging.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Devender

Hallo Otto!

Jetzt klappt es  :) mit meiner einzigen FHEM Instanz.
Ich habe die beiden Attribute FileMapping und TemplateDir eben gelöscht
und dann den set Befehl ausgefürt. Ergebnis positiv. Der Alarmton wird abgespielt.
Dabei bin ich nur nach Wiki vorgegangen...

Hab mir auch gerade für 10€ einen fast neuen JAY-Tech bei den kleinanzeigen ergattern können.

Vielen lieben Dank!

Grüße,
Dirk
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

Otto123

Zitat von: Devender am 21 August 2016, 19:07:13
Jetzt klappt es  :) mit meiner einzigen FHEM Instanz.
Ich habe die beiden Attribute FileMapping und TemplateDir eben gelöscht
Hab mir auch gerade für 10€ einen fast neuen JAY-Tech bei den kleinanzeigen ergattern können.
Naja manchmal ist weniger eben doch mehr  8)

Mann-O-Mann ich habe die Dinger mal vor 1,5 Jahren für 7,99 bei Rossmann gekauft. Das war ja wirklich ein Schnäppchen.

Viel Spaß damit
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Elbgeist

Hallo,

da mich diese Thematik seit langem beschäftigt klinke ich mich hier mal ein.

Mich verwundert diese Tatsache
ZitatIch habe die beiden Attribute FileMapping und TemplateDir eben gelöscht

TemplateDir habe ich nicht mehr gesetzt, FileMapping schon. letzteres ist doch wichtig, dass die mp3's überhaupt erkannt werden oder deute ich das Wiki hier völlig falsch?

Ich habe nämlich auch das Problem, dass FHEM mp3's in Verbindung mit Text auch nicht immer richtig umsetzt. Manchmal wird die mp3 vorgelesen, manchmal klappt es.
Beispiel:
*20:00:00 set MyTTS tts :gong.mp3: Hier steht dann der Text.

Ist diese Aufgabenstellung für einen RPi3 zu viel? Kann ich mir gar nicht vorstellen. Die mp3's liegen übrigens alle in /opt/fhem/cache/templates neben einigen anderen - wohl von Google generierten - mp3-Dateien mit der langen Nummer als Name  :) .

Den JAY-tech Mini Bass Cube SA101 betreffend - klappt es dann auch mit der Lautstärke besser? Denn es ist schon ein wenig leise, trotz Volume 100.

Gruß
Thomas

Otto123

#659
Zitat von: Elbgeist am 21 August 2016, 19:21:27
FileMapping schon. letzteres ist doch wichtig, dass die mp3's überhaupt erkannt werden oder deute ich das Wiki hier völlig falsch?
Ist diese Aufgabenstellung für einen RPi3 zu viel? Kann ich mir gar nicht vorstellen.
Die mp3's liegen übrigens alle in /opt/fhem/cache/templates neben einigen anderen - wohl von Google generierten - mp3-Dateien mit der langen Nummer als Name  :) .

Den JAY-tech Mini Bass Cube SA101 betreffend - klappt es dann auch mit der Lautstärke besser? Denn es ist schon ein wenig leise, trotz Volume 100.
Hallo Thomas,

mit dem mini Bass Cube geht es so laut - das wird unangenehm. Lautstärke kann man ja
- am Würfel
- im alsamixer
- und in Text2Speech einstellen.

Google schreibt die Dateien in /cache, das existiert von Hause aus. Den Ordner /cache/templates muss man anlegen und dort schreibt man eigentlich nur selbst rein.

Ich mache das mit einem Pi der ersten Stunde, das ist nicht zu viel.

FileMapping ist nur dafür, dass man :alarm: verwenden will, die Datei aber :DasIsteinAlarm.mp3: heißt.
Man könnte also :alarm: an 27 Stellen in FHEM verwenden und bei Bedarf den Sound an einer Stelle ändern.

Und wie schon gesagt, ich glaube die Namen der mp3 spielen manchmal eine Rolle für den Erfolg. Wenn Du allerdings ein und dieselbe Datei meinst mit einmal vorlesen und einmal spielen - da habe ich keine Erklärung.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz