FHEM Tutorial-Reihe - Part 38: Text To Speech - Sprachausgabe und Sounds
Schon lange wollte ich einmal Sprache und Sounds zu bestimmten Events über die Boxen ausgeben können. Mit dem Modul TTS (TextToSpeech) ist genau dies sehr einfach am Raspberry Pi zu realisieren. In diesem Beitrag möchte ich einmal vorstellen wie man Text mit verschiedenne Diensten wie Google oder VoiceRSS zu Sound umwandelt um diesen dann über am Raspberry Pi angeschlossene Boxen auszugeben.
Was wird benötigt?
- Eine FHEM-Installation
- Ein Raspberry Pi mit angeschlossenen Lautsprechern
Video
Befehle
Alle verwendeten Kommandos aus dem Video sind hier zu finden. Generell ist auch eine Ausgabe über Bluetooth möglich, welche im Wiki erklärt wird.
Als erstes müssen ein paar Pakete installiert werden
sudo apt-get install mplayer
sudo usermod -aG audio fhem
sudo apt-get install mp3wrap
Dann kann auch schon das erste FHEM-Device registriert werden, welches in diesem Fall aus der Soundkarte 0.0 den Ton ausgeben soll (Klinkenbuchse des Raspberry Pi).
define MyTTS Text2Speech hw=0.0
attr MyTTS TTS_UseMP3Wrap 1
Zum testen kann dann ein beliebiger Text ausgegeben werden
set MyTTS tts Das ist ein Test.
aplay -l
In meinem Fall hat das setzen der Benutzergruppe leider nicht ausgereicht um FHEM genügend Rechte zum Abspielen einer Audiodatei gegeben. Daher habe ich die sudo-Rechte für den mplayer für alle User so konfiguriert, dass kein Passwort mehr benötigt wird.
sudo visudo
ALL ALL = NOPASSWD: /usr/bin/mplayer
Nun kann erneut getestet werden
set MyTTS tts Das ist ein Test.
HomeMatic-Inside Türklingeln Download
Als nächstes legen wir ein mp3-Verzeichnis an und kopieren die entsprechenden Dateien dort hinein
cd /opt/fhem
sudo mkdir mp3
sudo chown fhem:dialout mp3/
Kopieren geht am einfachsten per scp auf der Shell. Alternativ kann auch WinSCP oder FileZilla genutzt werden, wenn man sich eine grafische Oberfläche wünscht.
scp mp3_doorbells.zip pi@192.168.178.31:.
Nun entpacken wir auf dem Raspberry die Zip-Datei und geben dem FHEM-Benutzer die erforderlichen Rechte um die Dateien auch Lesen zu dürfen. Die Zip-Datei kann dann natürlich gelöscht werden.
sudo mv mp3_doorbells.zip /opt/fhem/mp3/
cd /opt/fhem/mp3/
sudo unzip mp3_doorbells.zip
sudo rm mp3_doorbells.zip
sudo chown fhem:dialout /opt/fhem/mp3/*
Hier noch ein Beispiel wie dann mit diesen mp3-Dateien umgegangen wird. Ich würde immer empfehlen diese über das Filemapping zu setzen, da es dann später ganz einfach ist einzelne Sounds in allen Nachrichten auszutauschen, da es nur an einer Stelle geändert werden muss.
set MyTTS tts :doorbell_01.mp3:
attr MyTTS TTS_FileMapping klingel:doorbell_01.mp3
set MyTTS tts :klingel:
set MyTTS tts :klingel: Willkommen Zuhause