Gibt es eine Möglichkeit vordefinierte Audiodateien über den Raspberry oder ein WM8960 Audio-Aufsteckmodul einzurichten?
Ich möchte diverse Textausgaben anstoßen.
Mit dem play Programm aus dem sox Paket kann man Audiodateien abspielen.
Externe Programm kann man aus FHEM mit der "<pgm>" Syntax aufrufen, also z.Bsp.:
define ntfyTuer notify tuer:open "play /opt/fhem/tuer_wurde_geoeffnet.mp3"
Falls nix zu hören ist: Der user fhem muss sicher in der Gruppe audio sein, falls FHEM unter user fhem läuft.
Danke für Eure Tipps.
Die Audioausgabe eines mp3 Files funktioniert wunderbar. Ich muss nur noch eine Lösung finden, damit sich die Lautstärke nach einem Neustart nicht verändert.
Ich verwende das "IBest WM8960 Hi-Fi Sound Card HAT", dass ich mir von Amazon besorgt hatte. Das Modul ist das gleiche wie von WaveShare.
Getestet habe ich es auf einem Pi3.
Installation der Soundkarte:
Clone Treiber:
git clone https://github.com/waveshare/WM8960-Audio-HAT
WM8960 Treiber installieren:
cd WM8960-Audio-HAT
sudo ./install.sh
sudo shutdown -r now1
Überprüfen ob der Treiber ordnungsgemäß installiert wurde:
sudo dkms status
wm8960-soundcard/1.0, 6.6.47+rpt-rpi-v7, armv7l: installed
Neustart des Sound-Karten-Service
sudo systemctl restart wm8960-soundcard.service
Soundkarten Test:
$ aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 0: Headphones [bcm2835 Headphones], Gerät 0: bcm2835 Headphones [bcm2835 Headphones]
Sub-Geräte: 8/8
Sub-Gerät #0: subdevice #0
Sub-Gerät #1: subdevice #1
Sub-Gerät #2: subdevice #2
Sub-Gerät #3: subdevice #3
Sub-Gerät #4: subdevice #4
Sub-Gerät #5: subdevice #5
Sub-Gerät #6: subdevice #6
Sub-Gerät #7: subdevice #7
Karte 1: wm8960soundcard [wm8960-soundcard], Gerät 0: 3f203000.i2s-wm8960-hifi wm8960-hifi-0 [3f203000.i2s-wm8960-hifi wm8960-hifi-0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: vc4hdmi [vc4-hdmi], Gerät 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Auch der Test mit Text2Speech unter FHEM funktioniert bei den Tests.
list MyTTS
Internals:
ALSADEVICE hw:1,0
DEF hw:1,0
FUUID 66ffb1b0-f33f-f4d2-6e93-731318616726715d
MODE DIRECT
NAME MyTTS
NR 142
STATE Initialized
TYPE Text2Speech
VOLUME 100
eventCount 90
READINGS:
2024-10-05 17:18:32 duration
2024-10-05 17:18:32 lastFilename audio/cache/0bcffcb06e7ae232cc9e789d12f0ac7a.mp3
2024-10-05 17:19:07 playing 1
2024-10-05 17:18:03 volume 100
helper:
TTS_PlayerOptions
RUNNING_PID:
abortFn Text2Speech_AbortFn
bc_pid 68
finishFn Text2Speech_Done
fn Text2Speech_DoIt
pid 1062
telnet telnetForBlockingFn_1728141327.62942_127.0.0.1_60990
terminated 1
timeout 60
abortArg:
arg:
Text2Speech:
test
Attributes:
TTS_CacheFileDir audio/cache
TTS_Language Deutsch
TTS_Language_Custom Deutsch
TTS_MplayerCall AUDIODEV={device} /usr/bin/play -q -v $(({volume}*{volumeadjust}/10000)).$(({volume}*{volumeadjust}%10000)) {file}
TTS_Ressource Google
TTS_SpeakAsFastAsPossible 1
TTS_UseMP3Wrap 1
TTS_VolumeAdjust 150
alias Audio Player
icon rc_VOLUP
room _Audio
verbose 4
Es ist derweilen aber nur das Wort test das ausgegeben wird.
Komplexere Wörter oder mehrere Wörter werden noch nicht ausgegeben.
Ich habe mit Text2Speech einiges getestet, aber die Ausgabe von Texten funktioniert nur unzuverlässig. Oft muss ich das System komplett durchstarten damit ein Wort ausgegeben werden kann. ZB test. Das ist aber schon das einzige Wort was ausgegeben wird.
Gewisse Attribute werden auch nicht übernommen. ZB. TTS_CacheFileDir auf opt/fhem/audio/cache oder audio/cache Änderung wird nicht übernommen. Als Reading findet man zwar audio/cache/0bcffcb06e7ae232cc9e789d12f0ac7a.mp3 aber das File ist dort nicht vorhanden.
Oder TTS_FileTemplateDir kann nicht definiert werden. Hier kommt die Meldung Could not create directory:
Was sind die optimalen Einstellungen für komplexe Textausgaben?
als cache directory ist bei Dir
audio/cache die mp3 Dateien sollten also da landen.
Prüfe mal die Berechtigungen von audio und cache beides sollte
rw für den user
fhem haben (im Normalfall) Falls bei Dir
fhem unter einem anderen User als
fhem läuft, muss dieser eben die Rechte erhalten.
Beliebige MP§ Dateien Abspielen geht auch:
Zitattts:
Setzen eines Textes zur Sprachausgabe. Um mp3-Dateien direkt auszugeben, müssen diese mit führenden und schließenden Doppelpunkten angegebenen sein. Die MP3-Dateien müssen unterhalb des Verzeichnisses TTS_FileTemplateDir gespeichert sein.
Das directory TTS_FileTemplateDir muss dafür existieren und natürlich die entsprechenden MP3 Dateien (z.B. DingDong.mp3) - beides kann man nur auf OS Ebene anlegen - und auf die Rechte achten.