Homegear Modul Sonos

Die Variable ist in der aktuellen Version verfügbar. Allerdings muss das Sonos-Gerät noch einmal entfernt und neu gesucht werden, da die CCU Variablen nicht aktualisieren kann.

Viele Grüße

Sathya

Das habe ich befürchtet… Dann sind nämlich leider alle mühsam erstellten Programme dahin und müssen neu angelernt werden… Trotzdem vielen Dank für die Mühe und die Hilfe. Ich glaube da verzichte ich lieber auf die Einstellung der Stimme.

Das geht aktuell nur mit Ivona (andere Engines sind möglich, wenn ein PHP-Skript dafür bereitgestellt wird). Siehe doc.homegear.eu 21.

Wie schaut das unterdessen aus? Geht das auch mit IBM Watson?
Das scheint hier gut beschrieben.

Ein Account ist einfach eingerichtet und 10000 Zeichen pro Monat sind frei, weitere 1000 kosten 0.02 €.

Die Abfrage wird folgendermassen aufgebaut:

curl -X POST -u "apikey:{api-schlüssel}" \
--header "Content-Type: application/json" \
--data "{\"text\":\"hello world\"}" \
--output hello_world.ogg \
"{url}/v1/synthesize"

Eine Ausgabe ist auch als WAV möglich, via HTTP und WebSocket.

Wie müsste man die sonos.conf anpasen?

Hi @schmid01,

du muesstest dafuer ein kleines PHP-Script “bauen” und es z.B. in /var/lib/homegear/scripts abspeichern. Unter /var/lib/homegear/scripts/DeviceScripts/Sonos findest du die vorinstallierten Beispiele fuer Polly & espeak IIRC … dort kannst du ggf. was “abgucken” :wink:

Anschliessend einfach in der sonos.conf den Parameter ttsProgramm entsprechend anpassen.

– Micha

Hey Danke @Micha. Hab da kurz reingeschaut, dann mir aber eingestehen müssen, dass mein Spaghetticodetalent dafür wohl doch nicht ausreicht. Dafür habe ich was anderes cooles gemacht: https://www.youtube.com/watch?v=4MMEP09kxvM

2 Likes

Hey @schmid01,

coole Sache :wink: IIRC hatte das sogar hier im Forum schon mal jmd. mit nem MAX!-Taster gebaut :wink:

Ach mensch … das warst du selber wie ich grad gesehen hab :joy:

– Micha

2 Likes

Danke @Micha. Habe unterdessen noch etwas ganz einfaches bei Google gefunden:

Und zwar muss man da folgendes machen:

Request URL

https://texttospeech.googleapis.com/v1beta1/text:synthesize

Request body

{
  "audioConfig": {
    "audioEncoding": "LINEAR16",
    "pitch": 0,
    "speakingRate": 1
  },
  "input": {
    "text": "Homegear ist super!"
  },
  "voice": {
    "languageCode": "de-DE",
    "name": "de-DE-Standard-B"
  }
} 

Ich hab versucht das mit einer http request Node aufzubauen, doch ohne Erfolg. Könnt ihr mir helfen, wie man das aufbauen muss und wo dann der Output von der Request-Node hingeleitet werden muss? Am besten kann man den auf den Audioout des Raspi oder grad auf den Sonos schicken :wink:

Hallo @schmid01,

prinzipiell so:

[{"id":"81c531a.f79355","type":"http-request","z":"578ff2ee.af6d7","name":"","method":"POST","ret":"txt","url":"https://texttospeech.googleapis.com/v1beta1/text:synthesize","usetls":false,"basicauth":false,"x":710,"y":140,"wires":[[{"id":"1df0fb05.b81e65","port":0}]]},{"id":"1dbdddcb.684932","type":"constant","z":"578ff2ee.af6d7","name":"","payload":"true","payloadType":"bool","outputonstartup":false,"x":260,"y":140,"wires":[[{"id":"8e248ac.3848cf8","port":0}]]},{"id":"1df0fb05.b81e65","type":"debug","z":"578ff2ee.af6d7","name":"","active":true,"console":"debtab","complete":"true","loglevel":"info","x":860,"y":140,"wires":[]},{"id":"d8db3429.e880a8","type":"template","z":"578ff2ee.af6d7","name":"set body","field":"payload","format":"handlebars","syntax":"plain","template":"{\n  \"audioConfig\": {\n    \"audioEncoding\": \"LINEAR16\",\n    \"pitch\": 0,\n    \"speakingRate\": 1\n  },\n  \"input\": {\n    \"text\": \"Homegear ist super!\"\n  },\n  \"voice\": {\n    \"languageCode\": \"de-DE\",\n    \"name\": \"de-DE-Standard-B\"\n  }\n}","output":"str","x":555,"y":140,"wires":[[{"id":"81c531a.f79355","port":0}]]},{"id":"8e248ac.3848cf8","type":"template","z":"578ff2ee.af6d7","name":"set headers","field":"headers","format":"json","syntax":"plain","template":"{\n    \"Authorization\": \"Bearer ...\",\n    \"Content-Type\": \"application/json; charset=utf-8\"\n}","output":"json","x":410,"y":140,"wires":[[{"id":"d8db3429.e880a8","port":0}]]}]

Fehlt nur noch der API-Schlüssel im Header-Template.

Viele Grüße

Sathya

1 Like