AllgemeinSmart Home TutorialsTutorials

Amazon Alexa Text to Speech (TTS) ├╝bers Smart Home nutzen

Wir zeigen Dir, wie Du eine TTS-Funktion mit Amazons Alexa umsetzen und in Dein Smart Home integrieren kannst.

Eine Text-to-Speech-Funktion (TTS) haben wir bereits in einem vergangenen Tutorial ├╝ber das Bose Soundtouch System umgesetzt. Heute wollen wir diese Funktionsweise auch mit Amazons Alexa verwirklichen. Dabei werden wir ├╝ber einen HTTP-Aufruf die Alexa-Ger├Ąte mit unserer Smart Home Zentrale verbinden und ins Smart Home einbauen. So lassen sich danach Texte ├╝ber die URL eingeben, die anschlie├čend vom jeweiligen Ger├Ąt ausgegeben werden.

In diesem Beitrag haben wir uns von einer Anleitung von Alexander Noack von L├Âtzimmer inspirieren lassen, der bereits eine Amazon Alexa Fernsteuerung mit Shell umgesetzt hat. Da Shell jedoch nicht mit allen Smart Home Systemen kompatibel ist, werden wir die Umsetzung ├╝ber PHP machen sodass man die Alexa Ger├Ąte einfach ├╝ber einen HTTP Request steuern kann.

Unser Dank geht an:

Alexander Noack f├╝r seine Skriptvorlage sowie an openHab, die eine TTS Umsetzung mit Amazons Alexa erstmalig etabliert haben.

Die Einrichtung des Skripts

Um das PHP-Skript nutzen zu k├Ânnen, ben├Âtigst Du einen PHP Webserver. Wir nutzen dazu eine Einrichtung ├╝ber eine Synology Nas Station. Du kannst aber auch einen Webserver ├╝ber einen Raspberry Pi installieren.

Au├čerdem ben├Âtigt Du folgende ZIP-Datei, die zwei Dateien enth├Ąlt. Die alexa.php und die cookies.txt, welche wir im Anschluss ├╝berschreiben werden. Diese beiden Dateien kannst Du nun in Deinem Webserver hochladen und extrahieren:

Hier findest Du die ZIP-Datei!

Wenn man die Datei nun aufruft, erscheint noch eine Fehlermeldung, da die cookies.txt-Datei noch nicht ├╝berschrieben wurde. Um das umzusetzen, ben├Âtigst Du ein passendes Add-on f├╝r Firefox oder Google Chrome. Wurde dieses passend installiert, wird Dir in Deinem Browser in der ├ťbersichtleiste, rechts in der Ecke ein Icon angezeigt.

Als n├Ąchstes laden wir die cookies.txt-Datei unter der Amazon-Alexa-Seite herunter. Daf├╝r m├╝ssen wir uns zun├Ąchst einloggen. Im Anschluss speichern wir diese Datei und ersetzen sie gegen die bereits auf dem Server gespeicherte. Wenn Du die Datei nun aufrufst, tauchen auch die passenden Echo-Ger├Ąte in der ├ťbersicht auf.

├ťberblick Echo-Ger├Ąte

Wie bereits erw├Ąhnt, ist die Session nicht dauerhaft aktiv. Wichtig ist, dass Du Dich nicht manuell ausloggst, dann w├╝rde die Datei beispielsweise ung├╝ltig werden. Um eine G├╝ltigkeit der Session garantieren zu k├Ânnen, muss man regelm├Ą├čig (alle 4 bis 8 Wochen) die Cookies erneuern und kann so die Funktionalit├Ąt aufrecht erhalten.

Alexa TTS nutzen

Das Skript ist nun funktionsf├Ąhig. Wenn Du nun einen HTTP-Request eines Echo-Ger├Ąts aufrufst, wird Dein Text ├╝ber Alexa ausgegeben. Diesen HTTP-Aufruf kannst Du anschlie├čend ├╝ber Dein Smart Home System ansprechen.

Wir hoffen, Dir gef├Ąllt diese Funktion genauso gut wie uns. Sollte sich an der Login-Problematik noch etwas ├Ąndern, halten wir Dich hier bei uns nat├╝rlich auf dem Laufenden!

Wenn Du gerne wissen m├Âchtest, wie Du Alexa Text-to-Speech ├╝ber Dein Fibaro Home Center umsetzen kannst, haben wir hier ein passendes Video f├╝r Dich vorbereitet!

Schlagw├Ârter
Mehr anzeigen

Nico Bode

Mein Name ist Nico. Ich bin Gesch├Ąftsf├╝hrer einer kleinen Firma f├╝r Marketing Dienstleistungen. Ich freue mich, Euch die Smart Home Welt n├Ąherzubringen und gemeinsam mit Euch zu lernen.
Ähnliche Artikel
Wir freuen uns ├╝ber jeden Kommentar. Solltest du eine Frage haben schreibe gerne in den Kommentaren, f├╝r gr├Â├čere Fragen w├╝rden wir uns freuen wenn du dich in unserem Smart Home Forum anmelden w├╝rdest. Dort k├Ânnen wir & die Smart Home Community dir deutlich besser und schneller helfen.

31 thoughts on “Amazon Alexa Text to Speech (TTS) ├╝bers Smart Home nutzen”

  1. die cookies.txt muss wohl cookies_chrome.txt hei├čen? Aber auch nach dieser Anpassung funktioniert es bei mir nicht. Gibt es noch einen Trick? Gru├č Alex

    1. Hallo,
      wegen der cookies.txt da hatte ich das falsche ZIP hochgeladen. Aber ist wirklich nur der dateiname der anders ist. Welchen Browser hast du benutzt um die Cookies.txt zu erstellen? Ein Paar User haben mit google chrome probleme aber nicht alle mit Firefox habe ich noch keine klage geh├Ârt – magst du es mal mit Firefox versuchen?
      Ein Problem k├Ânnte noch sein das du trotz deutchem Useraccount einen Amazon.com account hast dann muss in der Alexa.php $basic_url = ‚https://alexa.amazon.de‘; angepasst werden in .com – du erkennst das daran wenn du wenn du dich bei alexa.amazon einloggst du auf die .com seite weitergeleitet wirst.

  2. Also ich bin ratlos, Firefox, neu eingeloggt, Browser und Sprache ge├Ąndert, trotzdem bekomme ich die Meldung das irgendwas nicht stimmt und das komplette Array wird mir ausgegeben.

  3. Hallo
    bei mir funktioniert es auch nicht.
    Es kommt immer die Meldung:
    Your Browser is Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
    Your User Lang is: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
    When you have any trouble with this script open Alexa.php and replace this two data in the alexa.php -> user_lang and browser

    an unknown error has occurredNo Device Name (device_name) selected!

    egal ob ich chrome oder firefox nutze

  4. Hallo Nico,
    Erstmal vielen Dank f├╝r die super Idee. Ich hatte auch schon mit dem shell script von loetzimmer experimentiert. Das hat anfangs gut geklappt, war letztendlich leider nicht sehr zuverl├Ąssig. Da bin ich dann auf deine Seite hier gesto├čen.
    Leider bekomme ich auch die Meldung „No Device Name (device_name) selected!“ und
    einen php Fehler in zeile 103: „Trying to get property of non-object in /var/www/html/alexa.php on line 103“. Aber das ist wohl ein Folgefehler.
    Ich bin nicht der php Spezialist, habe aber schon mal etwas versucht zu debuggen. Irgendwas passt in dem curl-Befehl nicht:
    Wenn ich die „$get_devices = curl_exec($ch)“ als print_r ausgebe, wird mir die Anmeldemaske von Amazon Echo angezeigt.
    Ist bei Chrome und Firefox das gleiche Ergebnis.
    Hast Du noch eine Idee ?

    1. Hallo,

      ich habe eine Vermutung, kann es sein das du einen englisch sprachigen Amazon Account hast?

      Wenn ich die ÔÇť$get_devices = curl_exec($ch)ÔÇŁ als print_r ausgebe, wird mir die Anmeldemaske von Amazon Echo angezeigt.

      -> Wird die Seite auf deutsch oder englisch ausgegeben?

      Falls ja, versuch mal $basic_url = ‚https://alexa.amazon.de‘; das .de durch .com zu ersetzen.

      Das Problem was das Script hat ist folgendes: Deine Cookies.txt ist nicht correct bzw. der Login klappt nicht.
      Ich pr├╝fe zwar if(strpos($get_devices,“Anmelden“)!==false) {
      ob das Cookie falsch okay ist und der Login geklappt hat aber nur auf deutsch – ich pass das heute Abend noch an.

  5. Hallo. Danke f├╝r das Tutorial . Nach dem Sonos gestern die offene API zu gemacht hat ist dies ein guter Weg um den Gro├čteil meiner TTS Ausgaben mit dem HC weiter zu nutzen… Statt ├╝ber die Sonos dann halt jetzt ├╝ber die Alexas .. H├Ątte nicht gedacht das ich das hinbekomme aber Dank der Schritt f├╝r Schritt Anleitung hat es super hingehauen . Gibt es einen Weg – wie auch immer – zb. ├╝ber einen Server – auch bestimmte Musik starten zu lassen ? Ausgel├Âst vom HC ? Bisher hatte ich es zb. das um 20.30 ein Lied abgespielt wurde – f├╝r 1 Minute – dann kann die TTS Durchsage: es ist sp├Ąt – ab ins Bett … TTS funktioniert – nur die Musik nicht . bzw kann man sie ja ├╝ber Routinen starten lassen , aber dann l├Ąuft es ja 3- 4 Minuten … Hat evtl. jemand eine Idee ? Gru├č

    1. Hallo,

      ich arbeite an einer V2 aber ich muss auch ehrlich sagen das es noch ein paar Wochen dauern kann. Ich habe gerade noch soviele Kleinigkeiten hier offen die ich erst fertig machen will und auch muss ­čśÇ wenn ich will das mein Smart Home wieder l├Ąuft – gerade f├╝r die letzten Videos musste ich doch das ein oder andere „ausbauen“.

  6. Nico,

    funktioniert auch auf einem Raspi wunderbar. Danke f├╝r die Weiterentwicklung des Shell-Skripts. Die L├Âsung ist etwas userfreundlicher ist (auch wenn das manuelle Kopieren der Cookies noch etwas nervig ist).

    Was das manuelle Kopieren angeht: Im Umfeld von Home Assistant wird da auch gerade eifrig entwickelt,hinter dem nachfolgenden Link kannst Du Infos dazu finden, wie mit node.js das Auslesen der Cookies automatisiert werden kann (scheint schon zu funktionieren). Evtl. eine Anregung f├╝r Verbesserungen?

    https://community.home-assistant.io/t/echo-devices-alexa-as-media-player-testers-needed-it/58639

    Meine Bitte: K├Ânntest Du das Skript auf github weiterentwicklen, so dass man es einfacher paketieren kann?

    Wir ├╝berlegen n├Ąmlich gerade das (Experimentell) als Sonos-Alternative f├╝r die User von homeean.de (APIs f├╝r homee Smart Home Gateway User auf einem Raspi) anzubieten und ich trommle gerade etwas f├╝r das Skript in der homee community…

    Ich will Dich ermutigen das Skript generell weiter zu entwicklen (also auch hinsichtlich der Media-Player-Funktionalit├Ąten), das ist eine einfache L├Âsung f├╝r alle Gateways, die Webhooks (URL-Aufrufe) unterst├╝tzen.

    Danke f├╝r Deinen Einsatz

    1. Hallo,

      ich arbeite schon an einer V2 ­čśë wird aber noch ein wenig dauern. Das Problem an der node.js L├Âsung ist halt das, dass oft schon wieder garnicht so einfach ist f├╝r einen normalen User. Ein PHP Webserver bekommt man relativ einfach noch hin node & co sieht dann schon wieder ganz anders aus.

      Aber wie gesagt ich verfolge das relativ aktiv -> auch aus eigen Interesse ­čśÇ

      1. Ne, leider noch ohne GUI, aber wir haben das auf dem Radar. Einige der bereitgestellten APIs und Tools lassen sich allerdings auch von anderen Gateways als homee nutzen (diejenigen mit einer REST-API).

  7. Dann solltest Du Dir homeean mal ansehen ­čśë
    Ein Grossteil unserer Pakete basiert auf node.js und f├╝r unsere User ist die Installation nicht mehr als ein Copy&Paste auf ein Standard-Raspian-Image..

  8. Hallo, ich habe es gestern auf meinem Raspi installiert und finde es super was du hier schon umgesetzt hast. Was mir aufgefallen ist, dass die Sprachausgabe w├Ąhrend der Musikwiedergabe etwas leiser ausgegeben wird und dadurch durchaus ├╝berh├Ârt wird. Gibt es da eine M├Âglichkeit die Lautst├Ąrke f├╝r die Sprachausgabe zu ├Ąndern und optimaler Weise hinterher wieder auf die Ausgangslautst├Ąrke zur├╝ckzusetzen?

      1. noch mal eine bitte: Kannst Du das Skript auf Github publizieren und von dort releasen (dann musst Du auch dein Zip-File nicht mehr up2date halten – du verlinkst einfach das letzte Package auf Github)? Das macht uns die Arbeit auch beim Paketieren etwas einfacher (und Du kannst die Feature-Requests und Bugmeldungen im Github verwalten)…

  9. Hello ,and thanks for this great job.

    I m facing issues when I want to process the tts : here what is written at the bottom of the web page :

    Your „csrf“ cookie is not available! The request can not be processed – your cookie.txt is wrong

    I had to modify some things in the script regarding the language. Can You tell me where I have to modify the parameters ? Are there multiple parameters to modify at mutiple places in the script?

    I hope you understand my poor english because I’m French and not fluent in english nor in german.

    Thanks.

    1. Hey elvis,

      no Problem. Try to change the this value in your alexa.php:
      $basic_url = ‚https://alexa.amazon.de‘;
      to your url. I think in fr the url must be .com but you see it when you logged in.

      and change please on line 33 if(strpos($check_cookie_file_data,“.amazon.de“)!==false) {
      this amazon.de also

  10. Hat jmd. Eine L├Âsung f├╝r die Implementierung auf einem homematic System? W├╝rde tts gern f├╝r gewisse Programme innerhalb der ccu3 nutzen. Ansonsten ziemlich geil gemacht. Vielen Dank

Schreibe einen Kommentar Amazon Alexa Text to Speech (TTS) ├╝bers Smart Home nutzen

Deine E-Mail-Adresse wird nicht ver├Âffentlicht. Erforderliche Felder sind mit * markiert.