Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sprachausgabe mit sayit auf 3.5mm Buchse funktioniert nicht

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sprachausgabe mit sayit auf 3.5mm Buchse funktioniert nicht

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      purehunter @MartinP last edited by

      @martinp said in Sprachausgabe mit sayit auf 3.5mm Buchse funktioniert nicht:

      Nach Gruppenzugehörigkeiten der User solltest Du auch schauen.

      Das habe ich eigentlich schon gemacht. iobroker gehört u.a. zu "audio". Die hätte ich jetzt als die notwendige erachtet.
      Aber sämtliche ausführbaren Dateien in /usr/bin/ dürfen ja von "allen" ausgeführt werden. Und auch sonst habe ich keine Hinweise gefunden, dass es ein Rechteproblem gibt.

      Leider gibt sayit im Log selbst im "debug" Level nichts sinnvolles aus, warum er in einen Fehlerzustand kommt.

      haselchen 1 Reply Last reply Reply Quote 0
      • haselchen
        haselchen Most Active @purehunter last edited by

        @purehunter

        Den Link mal durchgelesen?

        P 1 Reply Last reply Reply Quote 0
        • P
          purehunter @haselchen last edited by purehunter

          @haselchen
          Ja. Hatte das Problem, dass auf meinem Lite OS gar kein raspi-config drauf war. Nachinstalliert.
          Damit bin ich jetzt auf folgendes (Problem?) gestoßen:
          im raspi-config Menü /6/A7 Set Audio Control System
          steht "No audio systems installed".
          Da ist mir jetzt nicht klar, was das bedeutet. Ich kann ja mp3's abspielen. und hören 🙂

          Nachtrag:
          im raspi-config Menü /1/S2 ist bcm2835 ausgewählt. Das ist ja richtig. Habe ich wie oben beschrieben in configs geändert. War ursprünglich hdmi.

          P 1 Reply Last reply Reply Quote 0
          • P
            purehunter @purehunter last edited by purehunter

            Ich habe jetzt noch Pulseaudio installiert und im raspi-config Menü /6/A7 Set Audio Control System aktiviert.
            Das hat 2 Fehlermeldungen ausgespuckt:

            Failed to disable unit, unit pipewire-pulse.service does not exist.
            Failed to disable unit, unit wireplumber.service does not exist.
            

            Vermutlich einfach, weil die per default deaktiviert werden sollen aber nicht da sind.

            Aber auch nach einem Neustart des sayit Adapters und nach einem Reboot hat sich leider nichts verändert.
            Wenn ich das was ich in der Kürze der Zeit gelesen habe richtig verstehe, brauche ich Pulseaudio gar nicht, da ja nicht mehrere "Programme" gleichzeitig etwas wiedergeben sollen. Aber schaden wird's hoffentlich auch nicht.

            haselchen 1 Reply Last reply Reply Quote 0
            • haselchen
              haselchen Most Active @purehunter last edited by

              @purehunter

              Es ist definitiv möglich 😃
              Hatte vor ein paar Jahren Alexa auf nem Raspi installiert mit Audio Ausgabe über Klinke.
              Meine grauen Zellen erinnern sich das es über raspi config und zusammensuchen von Befehlen aus dem Netz ging.

              P 1 Reply Last reply Reply Quote 0
              • P
                purehunter @haselchen last edited by purehunter

                @haselchen

                @haselchen said in Sprachausgabe mit sayit auf 3.5mm Buchse funktioniert nicht:

                Hatte vor ein paar Jahren Alexa auf nem Raspi installiert mit Audio Ausgabe über Klinke.

                Das stelle ich ja nicht in Frage 🙂 . Auf meinem Raspi können ALLE Audio wiedergeben, nur der sayit Adapter nicht... 😞 und er hilft mir mit seinen Logs auch nicht, das Problem zu lokalisieren 👹

                Ich habe gestern eine komplett neue Raspi Desktop OS Installation aufgesetzt, da war dann auch gleich Pulseaudio und Pipewire mit drauf, und auch raspi-config, was ich aber gar nicht vermisst hatte, da ich die configs ja auch selber bearbeiten kann und dabei gleich noch ein paar andere Sachen sehe.
                Auf dem neuen unverdorbenen OS iob installiert, plus die gewünschten Adapter, einmal iob fix laufen lassen, und siehe da: dieser sayit Adapter wirft genau die selben (Fehler! - ) Meldungen raus wie auf der alten Installation, während ich von der Kommandozeile aus den mp3 Gong, die vom sayit-Adapter selbst erzeugte Uhrzeit-mp3, oder noch viel tröstlicher, vom Desktop ohne jegliche Umstände mir im Browser "The Police - Every Breath You Take" anhören kann 🎼

                Aus meiner jetzigen Sicht hat dieser Adapter ein massives Problem, entweder in der Programmierung oder in der Dokumentation. Auf jeden Fall aber in den "sinnlosen" (error-) Logausschriften die die Fehlersuche zumindest in diesem Fall nicht unterstützen, noch nicht einmal im "debug" Level.
                Da ich die Sprachausgabe "nur zum Spaß" für meine selbstentwickelte Wortuhr als Demo verwenden wollte, aber im normalen Leben nicht von Stimmen aus dem Off irritiert werden möchte gebe ich das "Sayit-Experiment" fürs erste auf.
                Ansonsten bin ich mit dem iobroker sehr zufrieden, der Einstieg war nach kleinen Anfangsschwierigkeiten erfolgversprechend. Nach ein paar Jahren mit fhem bin ich doch froh, den Umstieg gewagt und erste Automatisierungen mit Blockly implementiert zu haben.

                Vielen Dank für die Tipps und Hinweise!

                P 1 Reply Last reply Reply Quote 0
                • P
                  purehunter @purehunter last edited by

                  Nachtrag:
                  Nachdem ich wieder von der "Lite-OS" SD gebootet habe, spricht der sayit Adapter doch noch mit mir. Hat wohl Angst bekommen, deinstalliert zu werden 🔨 .
                  Allerdings werden die Ansagen mit den immer noch gleichen sinnlosen Fehlermeldungen garniert. Nicht schön, aber das Logging lässt sich ja abschalten 😀

                  sayit.0
                  	2025-01-08 09:40:02.148	error	stderr: [0:01] Decoding of sayit.0.say.mp3 finished.
                  sayit.0
                  	2025-01-08 09:40:00.340	error	stderr: MPEG 2.0 L III cbr24 16000 mono
                  sayit.0
                  	2025-01-08 09:40:00.337	error	stderr: Directory: /opt/iobroker/iobroker-data/sayit/ Playing MPEG stream 1 of 1: sayit.0.say.mp3 ...
                  sayit.0
                  	2025-01-08 09:40:00.308	error	stderr: High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3 version 1.31.2; written and copyright by Michael Hipp and others free software (LGPL) without any warranty but with best wishes
                  sayit.0
                  	2025-01-08 09:40:00.301	debug	Execute mpg123 /opt/iobroker/iobroker-data/sayit/sayit.0.say.mp3
                  sayit.0
                  	2025-01-08 09:40:00.229	error	stderr: 54/54 (100%)| 0:00/ 0:00| 0:00/ 0:00| 98.276x| 0:00 ------------------------------------------------------------------------------- kbps mono % long switch short % 24.0 100.0 94.4 3.7 1.9 ReplayGain: -4.1dB
                  sayit.0
                  	2025-01-08 09:40:00.227	error	stderr: 
                  sayit.0
                  	2025-01-08 09:40:00.207	error	stderr: LAME 3.100 64bits (http://lame.sf.net) Using polyphase lowpass filter, transition band: 5742 Hz - 5935 Hz Encoding /opt/iobroker/node_modules/iobroker.sayit/lib/say.wav to /opt/iobroker/iobroker-data/sayit/sayit.0.say.mp3 Encoding as 16 kHz single-ch MPEG-2 Layer III (10.7x) 24 kbps qval=3 Frame | CPU time/estim | REAL time/estim | play/CPU | ETA 0/ ( 0%)| 0:00/ : | 0:00/ : | x| : 00:01-------------------------------------------------------------------------- kbps % % 0.0  0/54 ( 0%)| 0:00/ 0:00| 0:00/ 0:00| 0.0000x| 0:00 00:01-------------------------------------------------------------------------- kbps % % 0.0
                  sayit.0
                  	2025-01-08 09:40:00.161	info	saying: Es ist zwanzig vor zehn
                  javascript.0
                  	2025-01-08 09:40:00.151	info	script.js.Tests.TTS-Test: Eine Minute später
                  
                  MartinP 1 Reply Last reply Reply Quote 0
                  • MartinP
                    MartinP @purehunter last edited by MartinP

                    @purehunter Die Fehlermeldungen scheinen aus Ausgaben z. B. des Lame Encoders gebildet zu werden, enthalten ja sogar Steuerzeichen...

                    Ist daher die Frage, wieso Lame "normale" Ausgaben auf stderr statt auf stdout rausschiebt ...

                    Wenn Du System Commands verwendest könntest Du da entsprechende Umleitungen in der Custom-Kommandozeile einrichten...

                    https://github.com/ioBroker/ioBroker.sayit

                    System command

                    If you have some program, that can play audio files locally or somewhere else, you can write this command here. E.g.

                    myCustomPlayer --option

                    If System output is selected, the sayit adapter will execute the following command on a local system:

                    myCustomPlayer --option /opt/iobroker/node_modules/iobroker.sayit/say.mp3

                    If file name must stay somewhere in the middle, you can use %s to specify where the file name must be placed:

                    myCustomPlayer --option "%s" > /dev/null

                    sayIt will make myCustomPlayer --option "/opt/iobroker/node_modules/iobroker.sayit/say.mp3" > /dev/null from it.

                    1 Reply Last reply Reply Quote 0
                    • P
                      purehunter last edited by purehunter

                      @martinp

                      ich verstehe es so, dass der sayit Adapter in einen Fehlerzustand kommt, und er die (normalen) Ausgaben der von ihm aufgerufenen Kommandos als Fehler uminterpretiert.
                      Die Ausschriften vom mpg123 kann ich damit unterdrücken - Danke für den Tipp!
                      Für die Ausschriften von LAME habe ich keine Idee, da der intern (fix?) vom sayit Adapter aufgerufen wird und ich auf den Aufruf keinen Einfluss habe und über ein config File lässt er sich anscheinend nicht konfigurieren.

                      Ja, leider kann man die Logs des Adapters nicht ganz abschalten. "Error" ist das mindeste, was geloggt wird. Und das sind ja "Errors".

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        purehunter @purehunter last edited by

                        habe in der text2speech.js auf github die Stelle(n) gefunden, wo LAME aufgerufen wird.

                        try {
                                    await this.exec(`lame ${__dirname}/say.wav ${this.MP3FILE}`)
                                } catch (e) {
                                    throw new Error(`Cannot create (lame) "say.mp3": ${e}`);
                                }
                        

                        da noch ein --quiet einzufügen wäre ein leichtes 🙂 aber daraus wieder einen fertigen Adapter zu basteln geht mir dann doch zu weit.

                        MartinP 1 Reply Last reply Reply Quote 0
                        • MartinP
                          MartinP @purehunter last edited by

                          Hmm, wieso wird eigentlich lame jedes Mal aufgerufen, um aus wave files mp3 files zu machen, und diese dann wiederum auszuspielen - wieso werden nicht direkt die wave files ausgespielt? Oder zumindest direkt MP3 Files als Muster angelegt?

                          P 1 Reply Last reply Reply Quote 0
                          • P
                            purehunter @MartinP last edited by

                            @martinp

                            hmm, wieso ... ?

                            ich könnte mir vorstellen, dass die verschiedenen TTS Engines mal .wav und manche .mp3 erzeugen. mit der Vorgehensweise könnte sein dass der Ablauf einfacher gestaltet werden kann.

                            Als ich den Post gerade noch mal sah, fiel es mir wie Schuppen von den Augen: das Ganze wird ja in einem JS abgearbeitet, das wird ja i.d.R. nich compiliert; dann müsste die Datei doch auf meinem System sein...
                            ... tatsächlich, ist sie. Das --quiet eingefügt, und die "Fehlermeldungen" sind weg 🙂
                            Zumindest bis zum nächsten Adapter - Update. Aber ich hab mir eine Kopie beiseite gelegt.

                            Manchmal ist es doch sinnvoll, wenn man etwas länger über etwas spricht.

                            MartinP 1 Reply Last reply Reply Quote 0
                            • MartinP
                              MartinP @purehunter last edited by

                              @purehunter Es ist natürlich interessant, dass "Sayit" einfach durch Texteingabe getriggert wird, und wenn die "aufzusagenden" Texte variieren ("Achtung Frostgefahr Außentemperatur -1,7°C") auch durchaus unvermeidlich.

                              Für immer gleiche Texte ("Fenster Schlafzimmer steht auf") wäre aber ein Vorhalten der bereits erzeugten Audio-Dateien ggfs die bessere Lösung, als jedesmal die ganze Kette Text -> Wav Datei -> MP3 Datei -> Ausspiel zu durchlaufen.

                              P 1 Reply Last reply Reply Quote 0
                              • P
                                purehunter @MartinP last edited by purehunter

                                @martinp

                                Für immer gleiche Texte...

                                Ich denke der Aufwand, dafür unterschiedliche Methoden bereitzuhalten lohnt nicht, da im gewählten Szenario lediglich mehr CPU Zeit benötigt wird, und die ist ja meist zur Verfügung. Auf meinem Raspi 4 ist die CPU Last (derzeit) bei einzelnen Prozent.

                                Aber die traurige 😉 Meldung ist, dass sich wie allgemein bekannt, Fehler nicht von selbst lösen (wie am 8.1. berichtet). Seit 2 Tagen spricht der sayit Adapter nicht mehr, wenngleich wie gehabt, das vom Adapter ausgegebene Kommando "mpg123 -q /opt/.../say.mp3" auf der Konsole eingegeben, den Text wiedergibt. Und am System habe ich nichts geändert.
                                Die ganzen Tage lief ein Skript, das tagsüber stündlich die Uhrzeit ansagte. Das Skript selbst läuft natürlich noch...

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate
                                FAQ Cloud / IOT
                                HowTo: Node.js-Update
                                HowTo: Backup/Restore
                                Downloads
                                BLOG

                                667
                                Online

                                31.8k
                                Users

                                80.0k
                                Topics

                                1.3m
                                Posts

                                3
                                23
                                596
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo