FHEM Forum

FHEM => Sonstiges => Thema gestartet von: romakrau am 29 August 2022, 13:11:46

Titel: Gelöst: TextSpeech Ausgabe Textbaustein geht nicht
Beitrag von: romakrau am 29 August 2022, 13:11:46
Hallo zusammen,
nach vielen Versuchen funktioniert bei mir die ausgabe von einem Textbaustein nicht.

Die Datei ist laut ffmpeg eine mp3-Datei

Duration: 00:00:10.42, start: 0.025057, bitrate: 96 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 96 kb/s

Hier das list zum Device:


Internals:
   ALSADEVICE hw=0.0
   DEF        hw=0.0
   FUUID      61bc7267-f33f-e93f-b1f8-9417f1c2ed76d8ca
   MODE       DIRECT
   NAME       MYTTS
   NR         255
   STATE      Initialized
   TYPE       Text2Speech
   VOLUME     100
   eventCount 63
   READINGS:
     2022-08-29 13:05:14   duration        9
     2022-08-29 13:05:14   endTime         00:00:00
     2022-08-29 13:05:21   lastFilename    /opt/fhem/cache/a3ec83d94b9028d7c072f87b75f02dac.mp3
     2022-08-29 13:05:21   playing         0
     2022-01-12 06:27:30   volume          100
   helper:
     TTS_PlayerOptions
     Text2Speech:
Attributes:
   TTS_CacheFileDir /opt/fhem/cache
   TTS_FileMapping alarm:sirene.mp3
   TTS_FileTemplateDir /opt/fhem/cache/templates
   TTS_Language Deutsch
   TTS_MplayerCall ffmpeg -i {file}  -af "volume=0.65" -f s32be -acodec pcm_u8 -ac 1 -ar 33000  tcp://192.168.187.241:5522 2>>/opt/fhem/cache/ttslog
   TTS_UseMP3Wrap 1
   TTS_VolumeAdjust 25
   disable    0
   room       Medien->System
   verbose    5

Und hier das Log:

2022.08.29 13:05:14 4: MYTTS: ermittelte CodePage: ascii , konvertiere nach UTF-8
2022.08.29 13:05:14 4: MYTTS: MaxChar = 200, Delimiter = (?<=[\.!?])\s*, ForceSplit = 0, AddDelimiter =
2022.08.29 13:05:14 4: MYTTS: Auflistung der Textbausteine nach Aufbereitung:
2022.08.29 13:05:14 4: MYTTS: 0 => /opt/fhem/cache/templates/sirene.mp3
2022.08.29 13:05:14 4: MYTTS: Verwende TTS Spracheinstellung: Deutsch
2022.08.29 13:05:14 4: MYTTS: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: a3ec83d94b9028d7c072f87b75f02dac.mp3
2022.08.29 13:05:14 4: MYTTS: Bearbeite per MP3Wrap jetzt den Text: /opt/fhem/cache/templates/sirene.mp3
2022.08.29 13:05:14 4: MYTTS: /opt/fhem/cache/a3ec83d94b9028d7c072f87b75f02dac.mp3 hat eine Länge von 9 Sekunden.
2022.08.29 13:05:14 4: MYTTS: ffmpeg -i /opt/fhem/cache/a3ec83d94b9028d7c072f87b75f02dac.mp3  -af "volume=0.65" -f s32be -acodec pcm_u8 -ac 1 -ar 33000  tcp://192.168.187.241:5522 2>>/opt/fhem/cache/ttslog
2022.08.29 13:05:14 5: MYTTS: readingsSingleUpdateByName: Dev:MYTTS Reading:duration Val:9
2022.08.29 13:05:14 5: MYTTS: readingsSingleUpdateByName: Dev:MYTTS Reading:endTime Val:00:00:00
2022.08.29 13:05:21 4: MYTTS: Es wurden alle Teile ausgegeben und der Befehl ist abgearbeitet.


Ausgegeben wird immer der Dateiname mit Pfadangabe. Wie erhalte ich eine mp3 Datei die das System verarbeitet.

Gruß
Roman


Edit: Ein log-file nach löschen des Caches und mit Text in Komination.


2022.08.29 13:24:45 4: MYTTS: ermittelte CodePage: ascii , konvertiere nach UTF-8
2022.08.29 13:24:45 4: MYTTS: MaxChar = 200, Delimiter = (?<=[\.!?])\s*, ForceSplit = 0, AddDelimiter =
2022.08.29 13:24:45 4: MYTTS: Auflistung der Textbausteine nach Aufbereitung:
2022.08.29 13:24:45 4: MYTTS: 0 => Achtung
2022.08.29 13:24:45 4: MYTTS: 1 => /opt/fhem/cache/templates/sirene.mp3
2022.08.29 13:24:45 4: MYTTS: Verwende TTS Spracheinstellung: Deutsch
2022.08.29 13:24:45 4: MYTTS: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: b1dced2b7051abbe988818fb65c03135.mp3
2022.08.29 13:24:45 4: MYTTS: Verwende Google Resource zur TTS-Generierung
2022.08.29 13:24:45 4: MYTTS: Hole URL: https://translate.google.com/translate_tts?tl=de&client=tw-ob&ie=UTF-8&q=Achtung
2022.08.29 13:24:46 4: MYTTS: Schreibe mp3 in die Datei /opt/fhem/cache/b1dced2b7051abbe988818fb65c03135.mp3 mit 4992 Bytes
2022.08.29 13:24:46 4: MYTTS: Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: a3ec83d94b9028d7c072f87b75f02dac.mp3
2022.08.29 13:24:46 4: MYTTS: Verwende Google Resource zur TTS-Generierung
2022.08.29 13:24:46 4: MYTTS: Hole URL: https://translate.google.com/translate_tts?tl=de&client=tw-ob&ie=UTF-8&q=%2Fopt%2Ffhem%2Fcache%2Ftemplates%2Fsirene.mp3
2022.08.29 13:24:46 4: MYTTS: Schreibe mp3 in die Datei /opt/fhem/cache/a3ec83d94b9028d7c072f87b75f02dac.mp3 mit 35616 Bytes
2022.08.29 13:24:46 4: MYTTS: Bearbeite per MP3Wrap jetzt den Text: Achtung /opt/fhem/cache/templates/sirene.mp3
2022.08.29 13:24:46 4: MYTTS: mp3wrap /opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415.mp3 /opt/fhem/cache/b1dced2b7051abbe988818fb65c03135.mp3 /opt/fhem/cache/a3ec83d94b9028d7c072f87b75f02dac.mp3
Mp3Wrap Version 0.5 (2003/Jan/16). See README and COPYING for more!
Written and copyrights by Matteo Trotta - <matteo.trotta@lib.unimib.it>
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

  50 % --> Wrapping /opt/fhem/cache/b1dced2b7051abbe988818fb65c03135.mp3 ... OK
  100 % --> Wrapping /opt/fhem/cache/a3ec83d94b9028d7c072f87b75f02dac.mp3 ... OK

  Calculating CRC, please wait... OK

/opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415_MP3WRAP.mp3 has been created successfully!
Use mp3splt to dewrap file; download at http://mp3splt.sourceforge.net!
2022.08.29 13:24:46 4: MYTTS: Benenne Datei um von </opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415_MP3WRAP.mp3> nach </opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415.mp3>
2022.08.29 13:24:46 4: MYTTS: Die ID3 Tags von /opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415.mp3 wurden geloescht
2022.08.29 13:24:46 3: MP3::Info Modul fehlt, konnte MP3 Tags nicht entfernen
2022.08.29 13:24:46 4: MYTTS: /opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415.mp3 hat eine Länge von 10 Sekunden.
2022.08.29 13:24:46 4: MYTTS: ffmpeg -i /opt/fhem/cache/925dfb0c71b775fb4b90df96783b9415.mp3  -af "volume=0.65" -f s32be -acodec pcm_u8 -ac 1 -ar 33000  tcp://192.168.187.241:5522 2>>/opt/fhem/cache/ttslog
2022.08.29 13:24:46 5: MYTTS: readingsSingleUpdateByName: Dev:MYTTS Reading:duration Val:10
2022.08.29 13:24:46 5: MYTTS: readingsSingleUpdateByName: Dev:MYTTS Reading:endTime Val:00:00:00


Die module sind installiert:


Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Statusinformationen werden eingelesen... Fertig
libany-uri-escape-perl ist schon die neueste Version (0.01-3).
libdigest-perl-md5-perl ist schon die neueste Version (1.9-1.1).
libencode-perl ist schon die neueste Version (3.08-1+deb11u2).
libmp3-info-perl ist schon die neueste Version (1.24-1.3).
libtext-iconv-perl ist schon die neueste Version (1.7-7+b1).
mp3wrap ist schon die neueste Version (0.5-4+b1).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 127 nicht aktualisiert.
Titel: Antw:TextSpeech Ausgabe Textbaustein geht nicht
Beitrag von: romakrau am 29 August 2022, 15:46:10
nachdem ich etwas recheriert habe komme ich an den Punkt das folgende Abfrage nicht wie erwartet funktionier:

Zeile 1002: if(-e $t) {

Nachdem ich ein Log3 eingebaut habe bekomme ich folgende Ausgabe:

MYTTS Datei ist /opt/fhem/cache/templates/sirene.mp3

Eine Überprüfung auf dem RPi ergab:

file /opt/fhem/cache/templates/sirene.mp3
/opt/fhem/cache/templates/sirene.mp3: Audio file with ID3 version 2.3.0, contains:MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo

Jetzt bin ich ratlos. Fehler in der Perl Version?!?

geänderter Code ab 1002:

    if(-e $t) {
      # falls eine bestimmte mp3-Datei mit absolutem Pfad gespielt werden soll
      $filename = $t;
      $file = $filename;
      Log3 $hash->{NAME}, 4, $hash->{NAME}.": $filename als direkte MP3 Datei erkannt!";
    } elsif(-e $TTS_CacheFileDir."/".$t) {
      # falls eine bestimmte mp3-Datei mit relativem Pfad gespielt werden soll
      $filename = $t;
      $file = $TTS_CacheFileDir."/".$filename;
      Log3 $hash->{NAME}, 4, $hash->{NAME}.": $filename als direkte MP3 Datei erkannt!";
    } else {
  Log3  $hash->{NAME}, 4, $hash->{NAME}."Datei t ist $t";    <-------- Logging
      $filename = md5_hex($TTS_Ressource ."|". $t) . ".mp3";
      $file = $TTS_CacheFileDir."/".$filename;
      Log3 $hash->{NAME}, 4, $hash->{NAME}.": Textbaustein ist keine direkte MP3 Datei, ermittle MD5 CacheNamen: $filename";
    }


Lösung : Beim anlegen des Verzeichnisses wurde das Attribute drwSrwSrwS gesetzt. Fragt mich nicht wo das herkommt!