Projekt: SONOS Sprachausgabe mit Amazon Polly
In einem vorigen Video habe ich die Integration von SONOS in die verschiedenen Systeme gezeigt. Dabei habe ich bewusst nur Google TTS (Text to Speech) genutzt, da dies die einzige Variante ist, welche von FHEM im Standard unterstützt wird. Das klingt leider oft etwas abgehackt und künstlich, also suchen wir eine bessere Lösung. Wenn man nach weiteren Diensten sucht, stolpert man immer wieder über Amazon Polly. Und die Ergebisse können sich sehen lassen (bzw. hören). Daher stelle ich Dir jetzt vor, wie Du in den Genuss von Amazon Polly in deiner FHEM, ioBroker oder auch Node-RED-Umgebung kommst.
Die Basis für dieses Tutorial ist dennoch der vorige SONOS-Teil. Dieser Beitrag ist also eine Erweiterung dazu.
Was Du brauchst?
- Einen Raspberry Pi
- Einen Sonos Play:1 / Sonos One
- FHEM, ioBroker oder Node-RED
Video
Produkte
Die Preise halte ich für wirklich fair. Für meine einfachen Nubert-Lautsprecher (ohne irgendwelchen technischen Schnickschnack) habe ich jedenfalls mehr bezahlt. Für die Größe ist der Klang auch wirklich gut.
Kosten
Da Amazon Polly NICHT kostenlos ist, brauchst du ein AWS-Konto und eine Kreditkarte, welche bei der Registrierung auch angegeben werden muss. Aber keine Sorge: Im ersten Jahr werden für die Nutzung keine Kosten anfallen. Danach zahlst Du (Stand 02/2019) 4$ für 1 Million Zeichen. Also ebenfalls extrem wenig. Ich möchte dennoch darauf hinweisen. Im Video gibt es mehr Details dazu.
Befehle (für FHEM)
Folgende Pakete müssen installiert sein.
sudo pip3 install awscli
sudo aws configure
Dann können wir das Ergebnis testen, indem folgende mp3 generiert wird:
sudo aws polly synthesize-speech --output-format mp3 --voice-id Marlene --text 'Hallo, ich bin dein erster Text mit der neuen Stimme' test1.mp3
Damit FHEM ebenfalls mit sudo auf aws zugreifen darf, muss in einer sudoers-Datei der Zugriff auf awscli erlaubt werden.
Alternativ könnte man bestimmt auch aws configure
als fhem-Benutzer ausführen und könnte sich danach die sudo-Konfiguration sparen (und aws einfach ohne sudo aufrufen).
sudo nano /etc/sudoers.d/010_fhem-nopasswd
fhem ALL=(ALL) NOPASSWD: /usr/local/bin/aws
Möglichkeit 1: Marlene fix hinterlegen
attr Sonos Speak1 mp3:sudo /usr/local/bin/aws polly synthesize-speech --output-format mp3 --voice-id Marlene --text '%text%' %filename%
70 de Was geht ab
(der Parameter Sprache spielt in diesem Beispiel keine Rolle)
Möglichkeit 2: Sprach-Parameter durchreichen (empfohlene Variante)
attr Sonos Speak1 mp3:sudo /usr/local/bin/aws polly synthesize-speech --output-format mp3 --voice-id %language% --text '%text%' %filename%
70 Hans Was geht ab
70 Marlene Was geht ab
70 Vicki Was geht ab
Möglichkeit 3: Auf SSML umstellen, um Betonung und Effekte nutzen zu können
attr Sonos Speak1 mp3:sudo /usr/local/bin/aws polly synthesize-speech --output-format mp3 --voice-id %language% --text-type ssml --text '%text%' %filename%
70 Hans <speak>Was geht ab</speak>
70 Marlene <speak>Was geht ab</speak>
70 Vicki <speak>Was geht ab</speak>
70 Hans <speak>Was geht ab <amazon:effect name="whispered">Ich flüstere</amazon:effect></speak>
70 Marlene <speak>Was geht ab <amazon:effect name="whispered">Ich flüstere</amazon:effect></speak>
70 Vicki <speak>Was geht ab <amazon:effect name="whispered">Ich flüstere</amazon:effect></speak>
Transparenz-Hinweis (Level 1)
An diesem Beitrag ist kein Hersteller beteiligt! Sämtliche Produkte habe ich selbst gekauft und trage die kompletten Kosten für diesen Beitrag alleine! Die Inhalte wurden somit von niemandem gesehen oder abgestimmt. Es handelt sich zu 100% um meine persönliche Meinung und Erfahrung!