Dieser Adapter nutzt die Sentry-Bibliotheken, um Ausnahmen und Codefehler automatisch an die Entwickler zu melden. Weitere Details und Informationen zum Deaktivieren der Fehlerberichterstattung finden Sie in der Sentry-Plugin-Dokumentation ! Die Sentry-Berichterstattung wird ab js-controller 3.0 verwendet.
Der SayIt-Adapter kann Text in Sprache umwandeln und auf bestimmten Geräten wiedergeben.
Konfiguration
Tatsächlich werden folgende Ausgaben unterstützt:
-
Browser – der Browser spielt den Text innerhalb des geöffneten Bereichs ab.
iobroker.visSeite. Sie wird von nahezu allen Desktop-Browsern und einigen mobilen Browsern unterstützt. -
Home24-MediaPlayer – Der Text wird an das Android-Gerät mit installiertem Home24-MediaPlayer gesendet und dort wiedergegeben. Hierfür wird die in Android integrierte Text-to-Speech-Funktion verwendet. Der Port kann nicht geändert werden und muss auf 50000 eingestellt sein.
-
Home24 – MediaPlayer und FTP-Server : Der Text wird an das Android-Gerät mit installiertem Home24 MediaPlayer gesendet und dort wiedergegeben. Hierfür wird die Google-Text-to-Speech-Engine verwendet. Die generierte MP3-Datei wird per FTP auf das Android-Gerät kopiert und mit Home24 MediaPlayer abgespielt. Beide Apps müssen dasselbe Benutzerverzeichnis verwenden (z. B. das Stammverzeichnis der SD-Karte).
-
System – Der Text wird vom Betriebssystem abgespielt, auf dem der ioBroker-Adapter ausgeführt wird. Folgende Betriebssysteme werden unterstützt: Windows, Linux, Mac OS X.
-
Windows-Engine – Der Text wird von Windows wiedergegeben, auf dem der sayIt-Adapter ausgeführt wird. Hierfür wird die Windows-Text-to-Speech-Engine verwendet, die vom Benutzer vorkonfiguriert werden muss. Eine Anleitung zur Einrichtung finden Sie hier .
-
Sonos – Wiedergabe von Text auf dem Sonos-Gerät. Stellen Sie sicher, dass der Webadapter aktiviert ist. Er ist erforderlich, damit Sonos die generierten MP3-Dateien lesen kann.
-
HEOS – Textwiedergabe auf HEOS-Geräten. Stellen Sie sicher, dass der Webadapter aktiviert ist. Er ist erforderlich, damit HEOS die generierten MP3-Dateien abspielen kann.
-
Chromecast – Text auf einem Chromecast-Gerät abspielen.
-
MPD – Wiedergabe von Text über den Musikplayer-Daemon. Verwenden Sie für den Webadapter ausschließlich http , nicht https.
Um die Text-zu-Sprache-Funktion auf einem Raspberry Pi oder Linux-System zu aktivieren, führen Sie einmalig folgenden Befehl aus:sudo apt-get -y install mpg321 mpg321 installieren.
Die MP3-/WAV-Dateien können abgespielt werden, indem ihr Name in das Objekt eingegeben wird. (z. B./vis.0/main/img/door-bell.mp3 )
Die Datei muss zuerst geladen werden.
TTS-Motoren
Online:
- Google: Englisch, Deutsch, Russisch, Italienisch, Spanisch, Französisch;
- Yandex: Russisch. Um Yandex Voices zu nutzen, müssen Sie hier einen API-Schlüssel anfordern: https://tech.yandex.ru/speechkit/cloud/doc/dg/concepts/About-docpage/ . [Dieser Dienst wird am 1. Januar 2019 eingestellt und durch Yandex.Cloud ersetzt.] Um Yandex.Cloud zu nutzen, registrieren Sie sich hier: [ https://cloud.yandex.ru/ ], installieren Sie die SpeechKIT-API in der Cloud und rufen Sie das Authentifizierungstoken und die Ordner-ID gemäß der API-Anleitung ab.
- FreeTTS: Über 400 Stimmen in mehr als 75 Sprachen, bereitgestellt von https://freetts.org . Die Sprache wird nicht von der Engine, sondern von der jeweiligen Stimme ausgewählt.
de-DE-KatjaNeuralEin API-Schlüssel von der Preisseite ist erforderlich. Die kostenlose Version des Dienstes fügt jedem Text den gesprochenen Hinweis „Generiert mit freeTTS.org“ hinzu und kann daher nicht für Ansagen verwendet werden. - Cloud: Um Cloud Voices nutzen zu können, müssen Sie es konfigurieren und ausführen lassen.
cloudAdapter oder App-Schlüssel direkt in den Einstellungen eingeben - Amazon Web Services Polly: Um AWS Polly-Stimmen zu verwenden, müssen Sie hier einen Zugriffsschlüssel und einen geheimen Schlüssel erstellen. Die Amazon-Dokumentation finden Sie hier .
Offline:
-
PicoTTS (nur Linux): Englisch, Deutsch, Italienisch, Spanisch, Französisch; Für PicoTTS müssen die folgenden Pakete installiert werden:
libttspico-utilsund lahm. Installationsbefehl:sudo apt-get install libttspico-utils lame -
Coqui TTS: Englisch, Deutsch, Spanisch, Französisch, Niederländisch, Japanisch, Chinesisch; Anweisungen zur Verwendung finden Sie in der offiziellen Dokumentation.
Test der Textgenerierung
Mit dem KnopfTest text generation auf der RegisterkarteEngine Sie können überprüfen, ob der ausgewählte Motor richtig konfiguriert ist.
Das FeldTest text Das Feld ist mit einem Testsatz in der Sprache der ausgewählten Engine vorausgefüllt und kann nach Belieben geändert werden. Ist das Feld leer, wird derselbe Satz verwendet. Der Text wird anhand der Dialogeinstellungen generiert; diese dürfen daher vor dem Test nicht gespeichert werden.
Der Text wird lediglich generiert, aber nicht abgespielt. Der Test funktioniert daher auch ohne verfügbaren Player. Im Dialogfeld werden Größe und Dauer der generierten Datei angezeigt und versucht, diese in einem neuen Browsertab zu öffnen, damit Sie sie anhören können. Hierfür muss der Browser Pop-ups für die ioBroker-Administration zulassen.
Um die Generierung und Wiedergabe gleichzeitig zu testen, verwenden Sie die SchaltflächeTest auf der RegisterkartePlayer Die
Cloud- und Amazon Web Services Polly-Textformatierung
Sie können Ihren Text mit der Speech Synthesis Markup Language formatieren.
Die nützlichsten Funktionen:
<break time="3s"/>- eine Pause von x Sekunden (maximal 10 Sekunden) einfügen.<emphasis> big </emphasis>- ein bestimmtes Wort hervorheben.<prosody volume="+6dB" rate="90%">I am speaking this</prosody>- Steuerung von Geschwindigkeits- und Lautstärkeparametern.<say-as interpret-as="digits">12345</say-as>- Sagen Sie jede Ziffer einzeln.
Mehr Infos .
Systembefehl
Wenn Sie ein Programm haben, das Audiodateien lokal oder extern abspielen kann, können Sie diesen Befehl hier eingeben. Z. B.
myCustomPlayer --option
Wenn die Systemausgabe ausgewählt ist,sayit Der Adapter führt folgenden Befehl auf dem lokalen System aus:
myCustomPlayer --option /opt/iobroker/node_modules/iobroker.sayit/say.mp3
Wenn der Dateiname irgendwo in der Mitte stehen muss, können Sie %s verwenden, um anzugeben, wo der Dateiname platziert werden soll:
myCustomPlayer --option "%s" > /dev/null
Es wird dazu führenmyCustomPlayer --option "/opt/iobroker/node_modules/iobroker.sayit/say.mp3" > /dev/null davon.
Verwendung
Der SayIt-Adapter kann nicht eigenständig verwendet werden. Er muss über einen JavaScript-Adapter oder über „vis“ mit einem spezifischen Widget gesteuert werden. Nach der Erstellung der Adapterinstanz finden Sie die folgenden Objekte:
sayit.N.tts.text: Der auszusprechende Satz.sayit.N.tts.volumeLautstärke, die beim Abspielen des Satzes verwendet wird.sayit.N.tts.playingGibt „true“ zurück, wenn gerade ein Text abgespielt wird, andernfalls „false“. Wird nur für die Wiedergabemodi „Windows“ und „System“ unterstützt.sayit.N.tts.cachetextDieser Satz wird zwischengespeichert und kann dann offline verwendet werden. Sie können beispielsweise manuell „Kein Internet“ eingeben. Wenn ein Ping an google.com negativ ausfällt, schreiben Sie „Kein Internet“ in „tts.text“, und der Satz wird vorgelesen. Der Cache muss natürlich aktiviert sein.
Zustandtts.text Unterstützt eine erweiterte Syntax, sodass Sprache/Engine und Lautstärke zusammen mit dem Text definiert werden können. Dies wird verwendet, um mehrsprachige Text-zu-Sprache-Engines zu aktivieren. Beispiel: Wenn der Adapter über eine Engine verfügtGoogle-english Mit der Formulierung ist dies möglich.de:Sag es um die Verwendung der Google-Deutsch-Sprachausgabe zu erzwingen.
Mitru;75;Погода хорошая Wir können die Verwendung der russischen Sprache und einer Lautstärke von 75 % erzwingen.
Sie können die Lautstärke der Ankündigung in Prozent der aktuellen oder einer vorgegebenen Lautstärke (nicht der maximalen Lautstärke) angeben. Beispiel: Wenn der Befehl lautetde;75;Gutes Wetter und die "Ankündigungslautstärke" 50% beträgt, wird die Ankündigung mit einer Lautstärke von 38% von maximal 100% abgespielt.
Der Systembefehl zum Abspielen der MP3-Datei kann ebenfalls angegeben werden. Wenn Sie das Feld leer lassen, werden die Standardeinstellungen verwendet: Windows –cmdmp3.exe , OSX -/usr/bin/afplay , Linux -mpg321 oderomxplayer (empfohlen).
Um omxplayer zu installieren, schreiben Siesudo apt-get install omxplayer oder schreibensudo apt-get install mpg321 mpg321 installieren.
Hinweis: Die Auswahl der Standardankündigung ist erst nach dem Start der Instanz möglich.
MitsendTo Sie können weitere verschiedene Parameter senden, wie zum BeispielsonosDevice oderbrowserInstance :
sendTo('sayit.0', 'say', {
text: 'Hello',
sonosDevice: 'Wohnzimmer', // optional, if not defined, the device from configuration will be used
engine: 'Google-de', // optional, if not defined, the device from configuration will be used
type: 'sonos', // optional, if not defined, the device from configuration will be used
volume: 20, // optional, if not defined, the device from configuration will be used
});
Prioritäten
Um den Text trotz der in der Warteschlange befindlichen Texte sofort auszusprechen, haben Sie zwei Möglichkeiten:
- Setzen Sie "!" als erstes Zeichen in den Text, damit dieser Text direkt im Anschluss an den aktuellen Text ausgesprochen wird.
- Schreiben Sie „true“ in den Zustand „tts.clearQueue“, um die Warteschlange zu leeren. Anschließend können Sie einen neuen Text schreiben.
tts.textAlle in der Warteschlange befindlichen Texte werden jedoch verworfen.
Motoren
Folgende Werte für Motoren sind möglich:
- en - Englisch
- de - Deutsch
- pl - Polski
- ru - Русский
- uk - український
- it - Italiano
- es - Spanisch
- fr - Français
- nl - Niederländisch
- zh-CN - 简体中文
- pt - Português
FreeTTS
- freeTTS – Stimme, Geschwindigkeit und Tonhöhe werden aus der Instanzkonfiguration übernommen.
Die Sprache ist Teil der Stimme, daher existiert nur ein Engine-Name. Die Stimme, z. B.de-DE-KatjaNeural Im Konfigurationsdialog wird diese Option ausgewählt, woraufhin die Liste aller verfügbaren Stimmen vom Dienst vorgelesen wird. Eine Anfrage ist auf 10.000 Zeichen begrenzt; längere Texte werden daher aufgeteilt und nacheinander vorgelesen.
Yandex
- ru_YA:Yandex - Русский
- ru_YA_CLOUD:Yandex Cloud - Русский [Die Yandex.Cloud-API generiert Dateien im OGG-Format. Um OGG-Dateien unter Linux abzuspielen, muss mplayer installiert und als Systemplayer ausgewählt sein.]
Amazon Polyphone via Cloud
- ru-RU_CLOUD_Female – Russisch – Tatjana
- ru-RU_CLOUD_Male – Russisch – Maxim
- de-DE_CLOUD_Female - Deutsch - Marlene
- de-DE_CLOUD_Male - Deutsch - Hans
- de-DE_CLOUD_Female_Vicki - Deutsch - Vicki
- de-DE_CLOUD_Male_Daniel - Deutsch - Daniel
- de-AT_CLOUD_Female_Hannah - Österreich - Hannah
- en-US_CLOUD_Female - en-US - Female - Salli
- en-US_CLOUD_Male - en-US - Male - Joey
- da-DK_CLOUD_Female – da-DK – Weiblich – Naja
- da-DK_CLOUD_Male – da-DK – Männlich – Mads
- en-AU_CLOUD_Female – en-AU – Weiblich – Nicole
- en-AU_CLOUD_Male – en-AU – Männlich – Russell
- en-GB_CLOUD_Female_Amy - en-GB - Weiblich - Amy
- en-GB_CLOUD_Male – en-GB – Männlich – Brian
- en-GB_CLOUD_Female_Emma - en-GB - Weiblich - Emma
- en-GB-WLS_CLOUD_Female - en-GB-WLS - Weiblich - Gwyneth
- en-GB-WLS_CLOUD_Male - en-GB-WLS - Männlich - Geraint
- cy-GB_CLOUD_Female - cy-GB - Weiblich - Gwyneth
- cy-GB_CLOUD_Male - cy-GB - Male - Geraint
- en-IN_CLOUD_Female - en-IN - Female - Raveena
- en-US_CLOUD_Male_Chipmunk - en-US - Male - Chipmunk
- en-US_CLOUD_Male_Eric - en-US - Male - Eric
- en-US_CLOUD_Female_Ivy - en-US - Weiblich - Ivy
- en-US_CLOUD_Female_Jennifer - en-US - Weiblich - Jennifer
- en-US_CLOUD_Male_Justin – en-US – Männlich – Justin
- en-US_CLOUD_Female_Kendra - en-US - Weiblich - Kendra
- en-US_CLOUD_Female_Kimberly - en-US - Weiblich - Kimberly
- es-ES_CLOUD_Female – es-ES – Weiblich – Conchita
- es-ES_CLOUD_Male – es-ES – Männlich – Enrique
- es-US_CLOUD_Female - es-US - Weiblich - Penelope
- es-US_CLOUD_Male - es-US - Male - Miguel
- fr-CA_CLOUD_Female - fr-CA - Female - Chantal
- fr-FR_CLOUD_Female - fr-FR - Female - Celine
- fr-FR_CLOUD_Male - fr-FR - Male - Mathieu
- is-IS_CLOUD_Female - is-IS - Female - Dora
- is-IS_CLOUD_Male - is-IS - Male - Karl
- it-IT_CLOUD_Female - it-IT - Female - Carla
- it-IT_CLOUD_Male - it-IT - Male - Giorgio
- nb-NO_CLOUD_Female - no-NO - Female - Liv
- keine_Wolke_Weiblich - nein-NEIN - Weiblich - Ida
- nl-NL_CLOUD_Female - nl-NL - Weiblich - Lotte
- nl-NL_CLOUD_Male - nl-NL - Male - Ruben
- pl-PL_CLOUD_Female_Agnieszka - pl-PL - Weiblich - Agnieszka
- pl-PL_CLOUD_Male_Jacek – pl-PL – Männlich – Jacek
- pl-PL_CLOUD_Female_Ewa - pl-PL - Weiblich - Ewa
- pl-PL_CLOUD_Male_Jan - pl-PL - Male - Jan
- pl-PL_CLOUD_Female - pl-PL - Weiblich - Maja
- pt-BR_CLOUD_Female - pt-BR - Weiblich - Vitoria
- pt-BR_CLOUD_Female_Camila - pt-BR - Weiblich - Camila
- pt-BR_CLOUD_Male - pt-BR - Male - Ricardo
- pt-PT_CLOUD_Male - pt-PT - Male - Cristiano
- pt-PT_CLOUD_Female - pt-PT - Female - Ines
- ro-RO_CLOUD_Female - ro-RO - Weiblich - Carmen
- sv-SE_CLOUD_Female - sv-SE - Weiblich - Astrid
- tr-TR_CLOUD_Female - tr-TR - Weiblich - Filiz
- pt-BR_CLOUD_Female_Camila - pt-BR - Weiblich - Camila
Pico TTS
- en-US - Englisch US
- en-GB - Englisch GB
- de-DE - Deutsch
- it-IT - Italiano
- es-ES - Espaniol
- fr-FR - Français
Coqui TTS
- Englisch
- Deutsch
- Spanisch
- Französisch
- Niederländisch
- 日本
Amazon Polly Direct
- ru-RU_AP_Female – Russisch – Tatjana
- ru-RU_AP_Male – Russisch – Maxim
- de-DE_AP_Female - Deutsch - Marlene
- de-DE_AP_Female_Vicki - Deutsch - Vicki
- de-DE_AP_Male - Deutsch - Hans
- en-US_AP_Female - en-US - Female - Salli
- en-US_AP_Male - en-US - Männlich - Joey
- da-DK_AP_Female - da-DK - Weiblich - Naja
- da-DK_AP_Male – da-DK – Männlich – Mads
- en-AU_AP_Female - en-AU - Weiblich - Nicole
- en-AU_AP_Male – en-AU – Männlich – Russell
- en-GB_AP_Female_Amy - en-GB - Weiblich - Amy
- en-GB_AP_Male – en-GB – Männlich – Brian
- en-GB_AP_Female_Emma - en-GB - Weiblich - Emma
- en-GB-WLS_AP_Female - en-GB-WLS - Weiblich - Gwyneth
- en-GB-WLS_AP_Male - en-GB-WLS - Männlich - Geraint
- cy-GB_AP_Female - cy-GB - Weiblich - Gwyneth
- cy-GB_AP_Male - cy-GB - Male - Geraint
- en-IN_AP_Female - en-IN - Weiblich - Raveena
- en-US_AP_Male_Chipmunk - en-US - Männlich - Streifenhörnchen
- en-US_AP_Male_Eric - en-US - Male - Eric
- en-US_AP_Female_Ivy - en-US - Weiblich - Ivy
- en-US_AP_Female_Jennifer - en-US - Weiblich - Jennifer
- en-US_AP_Male_Justin - en-US - Männlich - Justin
- en-US_AP_Female_Kendra - en-US - Weiblich - Kendra
- en-US_AP_Female_Kimberly - en-US - Weiblich - Kimberly
- es-ES_AP_Female - es-ES - Weiblich - Conchita
- es-ES_AP_Male – es-ES – Männlich – Enrique
- es-US_AP_Female - es-US - Weiblich - Penelope
- es-US_AP_Male – es-US – Männlich – Miguel
- fr-CA_AP_Female - fr-CA - Female - Chantal
- fr-FR_AP_Female - fr-FR - Weiblich - Celine
- fr-FR_AP_Male - fr-FR - Male - Mathieu
- is-IS_AP_Female - is-IS - Female - Dora
- is-IS_AP_Male - is-IS - Male - Karl
- it-IT_AP_Female - it-IT - Female - Carla
- it-IT_AP_Male - it-IT - Male - Giorgio
- nb-NO_AP_Female - nb-NO - Weiblich - Lebend
- nl-NL_AP_Female - nl-NL - Weiblich - Lotte
- nl-NL_AP_Male - nl-NL - Male - Ruben
- pl-PL_AP_Female_Agnieszka - pl-PL - Weiblich - Agnieszka
- pl-PL_AP_Male_Jacek – pl-PL – Männlich – Jacek
- pl-PL_AP_Female_Ewa - pl-PL - Weiblich - Ewa
- pl-PL_AP_Male_Jan - pl-PL - Male - Jan
- pl-PL_AP_Female - pl-PL - Weiblich - Maja
- pt-BR_AP_Female - pt-BR - Weiblich - Vitoria
- pt-BR_AP_Male - pt-BR - Male - Ricardo
- pt-PT_AP_Male - pt-PT - Male - Cristiano
- pt-PT_AP_Female - pt-PT - Female - Ines
- ro-RO_AP_Female - ro-RO - Weiblich - Carmen
- sv-SE_AP_Female - sv-SE - Weiblich - Astrid
- tr-TR_AP_Female - tr-TR - Weiblich - Filiz
- ko-KR_AP_Female - ko-KR - Weiblich - Seoyeon
Changelog
5.3.1 (2026-08-13)
- (@GermanBluefox) Added the button "Test text generation" to the "Engine" tab, so the selected engine can be tested with an own text
- (@GermanBluefox) Test generations do not overwrite the cached files anymore
- (@GermanBluefox) Adapter requires node.js >= 22 and js-controller >= 6.0.11 now
- (@GermanBluefox) Older changelog entries were moved to CHANGELOG_OLD.md
- (@GermanBluefox) Updated the dependabot and auto-merge configuration
5.3.0 (2026-08-13)
- (@GermanBluefox) Added freetts.org as a new TTS engine with more than 400 voices. An API key is required
- (@GermanBluefox) The engine is selected in two steps now: first the provider and then the voice
- (@GermanBluefox) The words of the Blockly block are translated into all 11 languages now
- (@GermanBluefox) Blockly block migrated to TypeScript and the generated code is unchanged
5.2.4 (2026-08-07)
- (@GermanBluefox) Corrected the upload of the announcement mp3 files and the location of the cache directory
- (@GermanBluefox) Corrected the splitting of long texts for the Google engine
- (@GermanBluefox) Corrected the detection of sonos devices in the configuration dialog
- (@GermanBluefox) Cached files will be deleted again if the engine was changed
- (@GermanBluefox) The queue does not block anymore if an error occurs by processing of a task
- (@GermanBluefox) Texts with semicolons will not be interpreted as "language;volume;text" anymore
- (@GermanBluefox) The local engines (PicoTTS, CoquiTTS) and the windows player are called without shell now
- (@GermanBluefox) Corrected the default settings of a new instance
5.1.0 (2025-09-17)
- (bluefox) Adapter was rewritten with TypeScript
- (bluefox) Updated Polly voices list
- (bluefox) Added an option to send sonos device as a parameter in sendTo command
5.0.0 (2024-07-16)
- (mcm1957) Adapter requires admin v7 or newer now
- (mcm1957) Adapter requires jas-controller 5 or newer now
- (bluefox) Added possibility to play directly from states:
sayit.0/tts.userfiles/gong.mp3
License
The MIT License (MIT)
Copyright (c) 2014-2026, bluefox dogafox@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.