Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

RomanticBoy83

#885
ups - meine Schuld. Da hab' ich wohl etwas übersehen, was ich nur zum Testen auskommentierte.
Die Endlosschleife kann ich mir so nicht erklären. MP3Wrap läuft bei mir. Ich nutze jedoch nicht den MPlayer.

Wenn es denn an dem patch liegt, dann hier:
-  splice(@{$hash->{helper}{Text2Speech}}, 0, $tts_done);
+  splice(@{$hash->{helper}{Text2Speech}}, 0, 1);

$tts_done zählte(vor Patch) die Einzelteile und entfernte diese aus der Queue. z.B (set tts Hello:temp.mp3:World) hätte drei entfernt.
Mit dem Patch wird jeder (set tts ...) in einem seperatem array verarbeitet und dieses 1 array entfernt. Eventuell ist hier der Fehler zu suchen in dem was ich geschrieben habe.

Kannst du ein Beispiel geben und beschreiben was eine Endlosschleife ist(Abspielen der selben Datei immer und immer wieder?)!

Billy

Zitat von: RomanticBoy83 am 04 Januar 2019, 21:29:17
Ich habe mich mal an eine Fehlerbeseitigung gemacht!

Konstrukt wie das nachfolgende, welches hintereinander mehrmals eine Sprachausgabe erwünscht, sollten nun problemfrei möglich sein.
set sprachausgabe tts mein erster text; set sprachausgabe tts mein zweiter text; set sprachausgabe tts mein dritter text;
  • mehrere Templates in einem Satz
    Mehr als eine Angabe eines Templates war nicht möglich. Eine falsche Regex löste das Problem. Beispielsweise sind nun folgende Satz ebenfalls möglich:
set sprachausgabe tts :template01.mp3::template02.mp3:
set sprachausgabe tts :template01.mp3:ein Beispieltext:template02.mp3:



Rückmeldung nach einspielen des Patch:

set sprachausgabe tts mein erster text; set sprachausgabe tts mein zweiter text; set sprachausgabe tts mein dritter text;
Geht-->
------------------
set sprachausgabe tts :template01.mp3::template02.mp3:
set sprachausgabe tts :template01.mp3:ein Beispieltext:template02.mp3:


Geht nicht, es wird nur immer das erste Template ausgegeben!
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

RomanticBoy83

Das kann ich so nicht nachvollziehen. Ich habe das jetzt gerade noch einmal explizit getestet. Läuft genau wie von mir beschrieben.
Deine Beschreibung klingt als würdest du mit der Version vor dem Patch arbeiten.

  • Hast du den Patch erfolgreich eingespielt?
  • Hast du das Modul erfolgreich neu geladen?

Billy

#888
Zitat von: RomanticBoy83 am 19 Januar 2019, 12:25:31
Das kann ich so nicht nachvollziehen. Ich habe das jetzt gerade noch einmal explizit getestet. Läuft genau wie von mir beschrieben.
Deine Beschreibung klingt als würdest du mit der Version vor dem Patch arbeiten.

  • Hast du den Patch erfolgreich eingespielt?
  • Hast du das Modul erfolgreich neu geladen?
ja, Patch erfolgreich eingespielt!
ja, Modul erfolgreich neu geladen!
die Dateien Hausalarm.mp3 und deaktiviert.mp3 sind im Verzeichnis \TTS\cache\templates\

Nach attr verbose 5 erscheint folgendes im Log

2019.01.19 14:59:46 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  Hausalarm.mp3 => FileTpl_1547906386_#0
2019.01.19 14:59:46 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  deaktiviert.mp3 => FileTpl_1547906386_#0
2019.01.19 14:59:46 4: myTTS: Auflistung der Textbausteine nach Aufbereitung:
2019.01.19 14:59:46 4: myTTS: 0 => /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 14:59:46 4: myTTS: 1 => /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 14:59:46 4: myTTS: Verwende TTS Spracheinstellung: Deutsch
2019.01.19 14:59:46 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 als direkte MP3 Datei erkannt!
2019.01.19 14:59:46 4: myTTS: Bearbeite jetzt den Text: /data/fhem/TTS/cache/templates/Hausalarm.mp3 /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 14:59:46 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 gefunden, kein Download
2019.01.19 14:59:46 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 hat eine Länge von 1 Sekunden.
2019.01.19 14:59:46 4: myTTS:/home/fhem/TTS/mplayer.sh -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols /data/fhem/TTS/cache/templates/Hausalarm.mp3


deaktiviert.mp3 wird nicht abgespielt! :'(

FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

RomanticBoy83

Sehr seltsam! Ich sehe den Fehler, kann ihn aber nicht nachstellen.
Ich zeige dir mal was ich eingebe und was herauskommen sollte:
set sprachausgabe tts :tada.mp3::notify.mp3:
2019.01.19 18:14:02 4: sprachausgabe: Angabe einer direkten MP3-Datei gefunden:  tada.mp3 => FileTpl_154791804299809_#0
2019.01.19 18:14:02 4: sprachausgabe: Angabe einer direkten MP3-Datei gefunden:  notify.mp3 => FileTpl_154791804299927_#0
2019.01.19 18:14:03 4: sprachausgabe: Auflistung der Textbausteine nach Aufbereitung:
2019.01.19 18:14:03 4: sprachausgabe: 0 => sounds/tada.mp3
2019.01.19 18:14:03 4: sprachausgabe: 1 => sounds/notify.mp3
2019.01.19 18:14:03 4: sprachausgabe: Verwende TTS Spracheinstellung: Deutsch
2019.01.19 18:14:03 4: sprachausgabe: sounds/tada.mp3 als direkte MP3 Datei erkannt!
2019.01.19 18:14:03 4: sprachausgabe: sounds/notify.mp3 als direkte MP3 Datei erkannt!

Zeig doch einmal deinen Befehl! Ich versuche mal den Fehler einzugrenzen - eventuell liegt es irgendwie an der Bezeichnung der Dateien.

Billy

Mein Befehl:
set myTTS tts :Hausalarm.mp3::deaktiviert.mp3:

Ausgabe habe ich ja schon gepostet.

2019.01.19 14:59:46 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  Hausalarm.mp3 => FileTpl_1547906386_#0
2019.01.19 14:59:46 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  deaktiviert.mp3 => FileTpl_1547906386_#0
2019.01.19 14:59:46 4: myTTS: Auflistung der Textbausteine nach Aufbereitung:
2019.01.19 14:59:46 4: myTTS: 0 => /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 14:59:46 4: myTTS: 1 => /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 14:59:46 4: myTTS: Verwende TTS Spracheinstellung: Deutsch
2019.01.19 14:59:46 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 als direkte MP3 Datei erkannt!
2019.01.19 14:59:46 4: myTTS: Bearbeite jetzt den Text: /data/fhem/TTS/cache/templates/Hausalarm.mp3 /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 14:59:46 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 gefunden, kein Download
2019.01.19 14:59:46 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 hat eine Länge von 1 Sekunden.
2019.01.19 14:59:46 4: myTTS:/home/fhem/TTS/mplayer.sh -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols /data/fhem/TTS/cache/templates/Hausalarm.mp3


Du kannst ja mal die komplette 98_Text2Speech.pm zum Vergleich anhängen.
Daran sollte es aber nicht liegen.
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

RomanticBoy83

#891
Ich habe den Fehler/deine Eigenart gefunden!
Deine Bezeichnung "FileTpl_xxx" ist bei beiden Angaben gleich - zum selben Zeitpunkt erstellt worden:
2019.01.19 14:59:46 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  Hausalarm.mp3 => FileTpl_1547906386_#0
2019.01.19 14:59:46 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  deaktiviert.mp3 => FileTpl_1547906386_#0

FileTpl_1547906386_#0 == FileTpl_1547906386_#0
Was ich mich jetzt frage ist, weshalb gibt dein Rechner/Betriebssystem mit der Funktion time() nicht ein solch genaues ergebnis wie mein Rpi.
Frage, was setzt du denn ein (Rechner und System)?

Workaround:
Du kannst um das Problem zu umgehen in Zeile 543 eine Änderung vornehmen und die Zeit ersetzen indem du den zweiten Counter hinzunimmst. Wahrscheinlich ist das eh die bessere Variante als mit der Zeit zu gehen:
my $tpl = "FileTpl_".$time."_#".$i; #eindeutige Templatedefinition schaffen
my $tpl = "FileTpl_#".$i."_".$j; #eindeutige Templatedefinition schaffen

Anmerkung: Das funktioniert jetzt aber nur ohne Zeit weil ich mit dem Patch jeden Befehl einzeln bearbeite.

Probiere das mal aus!

PS: Ich habe das gerade ausprobiert. Die Zeilen 541 und 542 können somit auch entfernt werden. Ich habe den Patch bei gelegenheit noch einmal neu gemacht und das mit aufgenommen. Nach Dokumentation auf https://perldoc.perl.org/functions/time.html ist das Verhalten der Funktion time() bei dir das richtige.
Anmerkung: Der Patch kommt weiter unten, da noch ein Problem auftrat.

Billy

ZitatFrage, was setzt du denn ein (Rechner und System)?
Beaglebone Black mit Debian Wheezy

Nach Änderung in Zeile 543 sieht das so aus!

2019.01.19 19:43:00 4: myTTS: Auflistung der Textbausteine nach Aufbereitung:
2019.01.19 19:43:00 4: myTTS: 0 => Hausalarm
2019.01.19 19:43:00 4: myTTS: 1 => deaktiviert
2019.01.19 19:43:00 4: myTTS: Verwende TTS Spracheinstellung: Deutsch
2019.01.19 19:43:00 4: myTTS: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: 2b548a35d13c45da15700da833ef703e.mp3
2019.01.19 19:43:00 4: myTTS: Bearbeite jetzt den Text: Hausalarm deaktiviert
2019.01.19 19:43:00 4: myTTS: /data/fhem/TTS/cache/2b548a35d13c45da15700da833ef703e.mp3 gefunden, kein Download
2019.01.19 19:43:00 4: myTTS: /data/fhem/TTS/cache/2b548a35d13c45da15700da833ef703e.mp3 hat eine Länge von 1 Sekunden.
2019.01.19 19:43:00 4: myTTS:/home/fhem/TTS/mplayer.sh -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols /data/fhem/TTS/cache/2b548a35d13c45da15700da833ef703e.mp3


deaktiviert.mp3 wird weiterhin nicht ausgegeben.
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

RomanticBoy83

#893
Ich habe genau den Patch, welchen ich ebend oben angehangen habe noch einmal überprüft. Der sollte jetzt auch bei dir laufen.

Bei deiner Log-Ausgabe sind auf einmal die Endungen verschwunden. Da waren wir doch garnicht dran?!
Anmerkung: Du scheinst keine Templates angegeben zu haben und er hat den Text normal verarbeitet.

Sollte es noch immer nicht gehen, dann versuche nocheinmal bei null zu starten und gib mir bitte Rückantwort.
1) original mit dem neuen Patch patchen
2) modul einspielen
3) modul neu laden
4) Log hier posten

Ich schaue mir das dann noch einmal an.

Billy

Zitat von: RomanticBoy83 am 19 Januar 2019, 20:35:55
Ich habe genau den Patch, welchen ich ebend oben angehangen habe noch einmal überprüft. Der sollte jetzt auch bei dir laufen.

Bei deiner Log-Ausgabe sind auf einmal die Endungen verschwunden. Da waren wir doch garnicht dran?!
Anmerkung: Du scheinst keine Templates angegeben zu haben und er hat den Text normal verarbeitet.

Sollte es noch immer nicht gehen, dann versuche nocheinmal bei null zu starten und gib mir bitte Rückantwort.
1) original mit dem neuen Patch patchen
2) modul einspielen
3) modul neu laden
4) Log hier posten

Ich schaue mir das dann noch einmal an.

Alles so durchgeführt.
set myTTS tts :Hausalarm.mp3::deaktiviert.mp3:
ergebnis im Log
2019.01.19 21:24:37 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  Hausalarm.mp3 => FileTpl_#0_0
2019.01.19 21:24:37 4: myTTS: Angabe einer direkten MP3-Datei gefunden:  deaktiviert.mp3 => FileTpl_#0_1
2019.01.19 21:24:37 4: myTTS: Auflistung der Textbausteine nach Aufbereitung:
2019.01.19 21:24:37 4: myTTS: 0 => /data/fhem/TTS/cache/templates/Hausalarm.mp3
2019.01.19 21:24:37 4: myTTS: 1 => /data/fhem/TTS/cache/templates/deaktiviert.mp3
2019.01.19 21:24:37 4: myTTS: Verwende TTS Spracheinstellung: Deutsch
2019.01.19 21:24:37 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 als direkte MP3 Datei erkannt!
2019.01.19 21:24:37 4: myTTS: Bearbeite jetzt den Text: /data/fhem/TTS/cache/templates/Hausalarm.mp3 /data/fhem/TTS/cache/templates/deaktiviert.mp3
2019.01.19 21:24:37 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 gefunden, kein Download
2019.01.19 21:24:37 4: myTTS: /data/fhem/TTS/cache/templates/Hausalarm.mp3 hat eine Länge von 1 Sekunden.
2019.01.19 21:24:37 4: myTTS:/home/fhem/TTS/mplayer.sh -ao alsa:device=hw=0.0  -nolirc -noconsolecontrols /data/fhem/TTS/cache/templates/Hausalarm.mp3


Keine Ausgabe des 2ten Teils
Die mp3 Dateien sind im Ordner templates
TTS_FileTemplateDir
/data/fhem/TTS/cache/templates
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

RomanticBoy83

#895
Jetzt schaut es ja schon ansatzweise richtig aus.
Das Problem muss ich mal in Ruhe versuchen nachzustellen. Ich habe den Code leider auch nicht komplett durchgearbeitet. Ich denke aber ich sehe das Problem. Du nutzt kein Mp3Wrap, wodurch ersteinmal nur der Erste Teil ausgegeben wird. Durch den Patch schneidet es jedoch den gesamten Befehl weg weil davon ausgegangen wird, dass es abgearbeitet wurde. Das ist aber ohne mp3 Wrap nicht der Fall.

Hier noch einmal der Patch, in welchem auch das Problem behoben sein sollte.

Billy

Zitat von: RomanticBoy83 am 19 Januar 2019, 22:33:20
Hier noch einmal der Patch, in welchem auch das Problem behoben sein sollte.

Vielen Dank, das geht jetzt! Super
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Billy

Wenn man aber MP3Wrap aktiviert
attr MyTTS TTS_UseMP3Wrap 1
geht es nicht mehr!

Gruß Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Otto123

#898
Zitat von: Billy am 20 Januar 2019, 11:14:37
Wenn man aber MP3Wrap aktiviert
attr MyTTS TTS_UseMP3Wrap 1
geht es nicht mehr!

Gruß Billy
Das man da auch ein debian Paket dafür braucht und nicht nur ein Attribut ist aber klar - oder?sudo apt-get install libdigest-sha-perl mp3wrap

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

Billy

@Otto123 danke
Mea culpa, mea maxima culpa!
Das war's da habe ich mich schlecht vorbereitet!
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*