Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

Otto123

Zitat von: Prof. Dr. Peter Henning am 03 Mai 2019, 18:17:07
In den Fehlermeldungen - vorausgesetzt, man ignoriert sie nicht.

LG

pah
Sorry, aber das finde ich falsch. Es mag sein, dass mancher durchs Leben geht und nur aus Fehlern lernt oder auch nicht.
Aber es gehört aus meiner Sicht zur guten Doku eines Programmes/Moduls auch die Voraussetzungen zu beschreiben.
Deswegen würde ich antworten:
ZitatWo genau kann man die FHEM-Modulanforderungen bezügl. Perlmodule nachschauen?
Normalerweise in der Doku / Commandref.

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

Prof. Dr. Peter Henning

ZitatSorry, aber das finde ich falsch
Die Erfahrung zeigt, dass die CommandRef erst nach dem ersten Installationsversuch gelesen wird.

LG

pah


Tobias

Das stimmt, ich werde noch eine bessere Überprüfung einbauen das das Modul nicht beim Start einfach abschmiert

Bitte testet mal die aktuelle git Version bei mir


Gesendet von iPhone 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

Otto123

Zitat von: Prof. Dr. Peter Henning am 04 Mai 2019, 10:24:07
Die Erfahrung zeigt, dass die CommandRef erst nach dem ersten Installationsversuch gelesen wird.
Ich weiß dies ist jetzt OT. Aber ich kann jetzt nicht anders :)
Diese Erfahrung wäre dann eher eine Annahme, dass sich gleichverteilt alle melden würden. Es melden sich aber eigentlich nur jene, die keine Commandref gelesen haben und die Fehlermeldung auch noch ignorieren.
Gehen wir mal davon aus, es gibt zu gleichen Teilen.
* Dokuleser
* Fehlermeldungsversteher
* "Allesignorierer"
Dann würde man bei fehlender Doku unnötig mindestens die zweite Gruppe und damit eventuell auch die dritte Gruppe auffüllen.

Ich bin positiv eingestellt und behaupte mal die erste Gruppe ist unentdeckt die Größte!
;D ;D ;D

LG 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

czcbe

Es ist festzustellen, dass (einmal mehr) Fragen hier im Forum unerwünscht sind.
Man wird degradiert zum:

- Dokuignorierer (obwohl die meisten Module diesbezüglich keine Perlmodule dokumentiert haben)

- Fehlermeldungsignorierer (Fehlermeldungen könnten schon aussagekräftiger und eindeutiger sein, wenn sich ja schon so Mühe gegeben wird im Quellcode):
2019.05.02 20:19:50 1: reload: Error:Modul 98_Text2Speech deactivated:
Can't locate Text/Iconv.pm in @INC (you may need to install the Text::Iconv module) (@INC contains: . D:/fhem_portable/perl/site/lib D:/fhem_portable/perl/vendor/lib D:/fhem_portable/perl/lib ./FHEM) at ./FHEM/98_Text2Speech.pm line 28, <$fh> line 432.
BEGIN failed--compilation aborted at ./FHEM/98_Text2Speech.pm line 28, <$fh> line 43

Schliesslich geht es auch darum evtl. anderen Usern weiterzuhelfen, falls sie auf gleiches Problem stossen. Und nachfragen darf man ja normalerweise, um sicherzugehen.

- Allesignorierer

Der einzige, der hier nett und hilfsbereit auftritt ist Tobias, danke.


FHEM 5.9 mit TabletUI | Pagebuttonmenü | Win2012R2 | Lubuntu 18.04 | Load-Balancing/Failover 2xFHEM | cygwin | nanoCUL 433 | Harmony Hub | IT Funksteckdosen | Squeezebox-Server (LMS) | Kodi | Sprachsteuerung | Webcams | Wetteransage | Telegram Bot | Presence-Script | Winconnect-Powershell

Prof. Dr. Peter Henning

Nun, dann schlage ich doch einfach vor, das Modul in einem alten Versionsstand zu verwenden (bevor ich den Vorschlag mit dem Text::Iconv abgegeben habe). Dann taucht das Problem nicht auf.

ZitatUnd nachfragen darf man ja normalerweise, um sicherzugehen
Das eben empfinde ich als unhöflich.
Wenn eine Fehlermeldung auftaucht, die noch dazu eine klare Handlungsanweisung enthält (you may need to install...), sollte man diese doch erst einmal befolgen, bevor man den Entwicklern die Zeit durch eine unnötige Frage stiehlt.

LG

pah

JonasE

Hallo zusammen,

ich habe festgestellt, dass es Probleme beim Musiccast Modul im Zusammenhang mit dem Text2Speech Modul gibt. Nach längerem Suchen habe ich festgestellt, dass das Problem an den ID3 Tags liegt, die mp3Wrap den mp3s hinzufügt. Ich habe das ganze einmal hier beschrieben: https://forum.fhem.de/index.php/topic,98383.msg933634.html#msg933634

Einmal noch kurz erklärt: Der Titel einer mp3 die mit mp3Wrap erstellt wurde lautet immer "Use Mp3Splt to obtain original tracks". Damit kann man über minidlna die Titel aber nicht mehr eindeutig den Dateien zuordnen. Deshalb macht es Sinn, die ID3Tags für mp3s die von mp3Wrap erstellt wurden zu löschen. Danach liefert minidlna den Dateinamen als Titel und eine Zuordnung ist wieder möglich.

Ich habe das einfach mal eingebaut und eventuell können die Änderungen in das Modul übernommen werden wenn nichts dagegen spricht:
https://github.com/jonaseickhoff/fhem-mirror/commit/8ae28f273aaff2998e151cc7c5e8e2f185ce3b8e

Beste Grüße
Jonas

Prof. Dr. Peter Henning

Es gibt noch ein anderes Problem mit mp3wrap. Es fügt nämlich mp3-Dateien auch dann zusammen, wenn diese eine unterschiedliche Samplingrate haben, und schreibt in die Metadaten der erzeugten Gesamtdatei die Samplingrate der ersten Datei hinein. Wirkt sich auf die Klangqualität sehr negativ aus...

LG

pah

Ellert

Zitat von: Prof. Dr. Peter Henning am 05 Mai 2019, 09:20:23
Es gibt noch ein anderes Problem mit mp3wrap. Es fügt nämlich mp3-Dateien auch dann zusammen, wenn diese eine unterschiedliche Samplingrate haben, und schreibt in die Metadaten der erzeugten Gesamtdatei die Samplingrate der ersten Datei hinein. Wirkt sich auf die Klangqualität sehr negativ aus...

LG

pah
Zu dem Problem gibt es eine Lösungsmöglichkeit https://forum.fhem.de/index.php/topic,18481.msg850986.html#msg850986

schlupp

Hallo,

kann es sein, dass neuerdings der Dateiname nicht mehr an den player übergeben wird?

Ich bekomme auf jetzt einmal (nach einem Update gestern 4. Mai - vorher Version vom 30.März; Text::Iconv nachinstalliert)
keine Sprachausgabe, sondern Fehlermeldungen von mgp123, den ich nutze (ATTR: TTS_MplayerCall /usr/bin/mpg123 -q)

Ich habe mal verbose auf 5 gestellt und bekomme im log (reverse => von unten nach oben lesen):


2019.05.05 12:41:14 4: pitTTS: Es wurden alle Teile ausgegeben und der Befehl ist abgearbeitet.
See the manpage mpg123(1) or call mpg123 with --longhelp for more parameters and information.
   -?    this help                      --version  print name + version
   -C    enable control keys            --no-gapless  not skip junk/padding in mp3s
   -u a  HTTP authentication string     -E f  Equalizer, data from file
   -z    shuffle play (with wildcards)  -Z    random play
   -@ f  read filenames/URLs from f     -T get realtime priority
   -m    mix both channels (mono)       -p p  use HTTP proxy p [$HTTP_PROXY]
   -0    decode channel 0 (left) only   -1    decode channel 1 (right) only
   -d n  play every n'th frame only     -h n  play every frame n times
   -2    downsample 1:2 (22 kHz)        -4    downsample 1:4 (11 kHz)
   -o m  select output module           -a d  set audio device
   -r n  set/force samplerate [auto]
   -b n  output buffer: n Kbytes [0]    -f n  change scalefactor [32768]
   -c    check range violations         -y    DISABLE resync on errors
   -k n  skip first n frames [0]        -n n  decode only n frames [all]
   -w f  write output as WAV file
   -t    testmode (no output)           -s    write to stdout
   -v    increase verbosity level       -q    quiet (don't print title)
supported options [defaults in brackets]:
usage: mpg123 [option(s)] [file(s) | URL(s) | -]

free software (LGPL) without any warranty but with best wishes
version 1.23.8; written and copyright by Michael Hipp and others
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
2019.05.05 12:41:14 5: pitTTS: readingsSingleUpdateByName: Dev:pitTTS Reading:endTime Val:00:00:00

You made some mistake in program usage... let me briefly remind you:
2019.05.05 12:41:14 5: pitTTS: readingsSingleUpdateByName: Dev:pitTTS Reading:duration Val:1
2019.05.05 12:41:14 4: pitTTS: /usr/bin/mpg123 -q
2019.05.05 12:41:14 4: pitTTS: cache/71f783ed67e131a66e252ec9b458daaf.mp3 hat eine Länge von 1 Sekunden.
2019.05.05 12:41:14 4: pitTTS: Bearbeite per MP3Wrap jetzt den Text: test
2019.05.05 12:41:14 4: pitTTS: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: 71f783ed67e131a66e252ec9b458daaf.mp3
2019.05.05 12:41:14 4: pitTTS: Verwende TTS Spracheinstellung: Deutsch
2019.05.05 12:41:14 4: pitTTS: 0 => test
2019.05.05 12:41:14 4: pitTTS: Auflistung der Textbausteine nach Aufbereitung:
2019.05.05 12:41:13 4: pitTTS: MaxChar = 100, Delimiter = (?<=[\.!?])\s*, ForceSplit = 0, AddDelimiter =


Der direkte Aufruf von /usr/bin/mpg123 -q <cachedatei> auf der Kommandozeile funktioniert weiterhin einwandfrei.
Beim Verhalten in FHEM ändert nichts wenn ich das -q aus dem call rausnehme oder MP3Wrap deaktiviere.

Es sieht für mich so aus, als würde vom TTS device in der aktuellen Version der String für die Kommandozeile nicht mehr richtig verarbeitet: Der Player-Befehl kommt raus, aber der Dateiname hängt nicht mehr dran.



Tobias

Schau mal in die commandref zum mplayercall
Da steht warum. Du musst anpassen

Bzgl. Einem Patch, bitte patches per pull request an mein git stellen
Nicht hier posten oder links zu anderen git's


Gesendet von iPhone 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

gestein

Hallo,

ich wollte das Modul installieren und den Text auf meinen Sonos ausgeben.
Dabei habe ich entdeckt, dass auch das Modul von Sonos Text ausgeben kann (via Speak).
Dabei wird auch der Google-Service verwendet.

Was ist der Vorteil von Text2Speech, wenn ich Sonos bereits installiert habe?
Oder ist es egal?

Danke im Voraus
lg, Gerhard

schlupp

Danke, in der deutschen commandref hab ich's jetzt gefunden (in der englischen fehlt's noch):
z.B. Einfach {file} hinter den call und im log steht wieder

2019.05.05 21:27:36 4: pitTTS: /usr/bin/mpg123 -q cache/71f783ed67e131a66e252ec9b458daaf.mp3

Prima.

Otto123

Zitat von: gestein am 05 Mai 2019, 20:04:48
Was ist der Vorteil von Text2Speech, wenn ich Sonos bereits installiert habe?
Oder ist es egal?

Danke im Voraus
lg, Gerhard
Hallo Gerhard,

ich habe beides am Start, aber aus meiner Sicht sind es getrennte Dinge. Sonos nimmt für sich die Google Engine und spricht, und Text2Speech spricht auch und kann auch andere Engines.
Für mich läuft beides unabhängig. Sonos über Sonos und Text2Speech über einen Lautsprecher am Raspberry.

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

Tobias

eine neue Version bei mir im Git.

Die mp3Tag Anpassung von JonasE sowie ein optimiertes ModulLoading ist eingebaut
Jetzt sollte das Modul immer geladen werden auch wenn nicht alle Bibliotheken vorhanden sind.
Die TTS-Generierung startet aber erst wenn alle benötigten Bibiotheken abhängig der TTS_Engine vorhanden sind.

Bitte testen
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