FHEM: Elegante Methode zur Ansageverzögerung bei Text2Speech?

J

jcoder

Erfahrenes Mitglied
350
Hallo zusammen,

ich steuere meine Hausautomation mit FHEM auf einem Raspberry Pi3.

Für Ansagen von Informationen nutze ich das Modul Text2Speech, mit dem ich Sprachausgaben über einen direkt am Analogausgang des PI angeschlossenen Lautsprecher sowie Bluetooth Lautsprecher (JBL Charge 3) ausgeben lasse.

Das klappt auch so weit recht gut.
Auf dem am analog angeschlossenen Lautsprecher werden die vorgegebenen Texte perfekt wiedergegeben.

Auf den Bluetooth-Lautsprechern wird bei jedoch bei jeder Sprachausgabe der Satzanfang verschluckt.
Aus einer Textvorgabe "Die Beleuchtung wird in 60 Sekunden abgeschaltet" wird dann lediglich "Beleuchtung wird in 60 Sekunden abgeschaltet" oder "leuchtung wird in 60 Sekunden abgeschaltet" gesprochen.

Ich behelfe mir derzeit, indem ich jeder Sprachausgabe auf den BT-Lautsprechern ein unverfängliches "Hallo!" voranstelle, um die eigentliche Sprachausgabe vollständig zu erreichen.

Hat von euch jmd. ggf. einen Ansatz, der eigentlichen Sprachausgabe über Text2Speech oder alsa eine (oder eine halbe) Sekunde Stille vorauszuschicken, damit der Text komplett wiedergegeben wird, ohne den Anfang zu verschlucken.
 
Zuletzt bearbeitet:
oh, ich hoffe, dass ich das noch richtig in Erinnerung habe, aber produziert Text2Speech nicht eine MP3, die du weiterverwenden kannst? Wenn jetzt in den Readings der Dateiname auftaucht, könntest du doch mittels eines "Notify"s ein "Sub" in den "myUtils" aufrufen, dass zwei MP3s zusammenfügt und dann zur Ausgabestelle weiterleitet.
 
  • Danke
Reaktionen: jcoder
Danke :)

Hab inzwischen allerdings eine elegantere Lösung, direkt in Text2Speech, gefunden.
Dort gibt es das Attribut TTS_Filemapping, das für das gewünschte Ergebnis genutzt werden kann.

Schade nur, dass die Attribute von Text2Speech nicht in der Wiki zentral dokumentiert werden.

Für die, die vllt. mal vor einem ähnlichen Prob stehen, die ein kleines Beispiel zur Definition und Benutzung.

define ttsWZ Text2Speech boxWZ
attr ttsWZ TTS_Filemapping glocke:bell.mp3 stille:silence.mp3 alarm:sirene.mp3

Danach würde über den Befehl
set ttsWZ tts :stille: Das Wetter wird heute gut. :bell:
zuerst die Datei silence.mp3 abgespielt (dort habe ich zwei Sekunden Stille gespeichert), danach die aus dem Text "Das Wetter wird heute gut." erzeugte MP3-Datei abgespielt und danach die Datei bell.mp3 abgespielt.
 
genau an sowas dachte ich :) ... ich hatte das damals, noch bevor ich FHEM genutzt hatte, in die entgegengesetzte Richtung genutzt. Ich hatte eine Offline-Text2Speech-Engine installiert und die hatte mir 3 Sekunden Eigenwerbung für die Vollversion am Anfang der MP3 abgespielt. Also habe ich die Datei vorne 3 Sekunden gekürzt und sie dann erst dem Anrufer über Asterisk zu hören gegeben....

Mein Text2Speech läuft bei mir nicht über FHEM. Ich hab das in den HomeAssistant ausgelagert, weil dort "pychromecast" etwas stabiler läuft. FHEM schickt den zu sprechenden Text per MQTT an den HomeAssistant und der HomeAssistant füttert die Google Homes.
 

Ähnliche Themen

P
Antworten
1
Aufrufe
595
upD8R
upD8R
ChrisOB
Antworten
4
Aufrufe
103
upD8R
upD8R
P
Antworten
0
Aufrufe
518
Pokerkeks
P
Zurück
Oben Unten