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.

29 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

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.