Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Offline Sprachausgabe in hoher Qualität

NEWS

  • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar
    BluefoxB
    Bluefox
    11
    2
    227

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.0k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.7k

Offline Sprachausgabe in hoher Qualität

Offline Sprachausgabe in hoher Qualität

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
19 Posts 9 Posters 2.2k Views 12 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • uweklattU Offline
    uweklattU Offline
    uweklatt
    wrote on last edited by
    #1

    Hallo,

    ich war auf der Suche nach einer offline Sprachausgabe, die als Ersatz für SayIt dienen kann und eine gute Sprachqualität besitzt.

    Als Ergebnis habe ich das Projekt piper verwendet und dieses auf einem virtuellen Linux Server installiert.
    Dort läuft auch ein Webserver, der die generierten Sprachausgaben zur Nutzung/Download bereitstellt.
    Die gewünschten Texte werden über eine HTTP Webanfrage dorthin übermittelt.

    Falls Interesse besteht, kann ich die Schritte zur Umsetzung hier zeigen.

    Tschau
    Uwe

    Proxmox/LXC/Docker

    wendy2702W liv-in-skyL 2 Replies Last reply
    1
    • uweklattU uweklatt

      Hallo,

      ich war auf der Suche nach einer offline Sprachausgabe, die als Ersatz für SayIt dienen kann und eine gute Sprachqualität besitzt.

      Als Ergebnis habe ich das Projekt piper verwendet und dieses auf einem virtuellen Linux Server installiert.
      Dort läuft auch ein Webserver, der die generierten Sprachausgaben zur Nutzung/Download bereitstellt.
      Die gewünschten Texte werden über eine HTTP Webanfrage dorthin übermittelt.

      Falls Interesse besteht, kann ich die Schritte zur Umsetzung hier zeigen.

      Tschau
      Uwe

      wendy2702W Offline
      wendy2702W Offline
      wendy2702
      wrote on last edited by
      #2

      @uweklatt zeig bitte mal die Schritte !

      Bitte keine Fragen per PN, die gehören ins Forum!

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      uweklattU 1 Reply Last reply
      0
      • wendy2702W wendy2702

        @uweklatt zeig bitte mal die Schritte !

        uweklattU Offline
        uweklattU Offline
        uweklatt
        wrote on last edited by uweklatt
        #3

        Lokaler Text2Speak (TTS) Server

        Ich beschreibe hier meine Vorgehensweise zur Einrichtung eines im lokalen Netzwerk befindlichen TTS-Servers. Dieser kann zum Erstellen von WAV-Sounddateien genutzt werden. Als Eingabe dient der gewünschte Text, den man über eine Webschnittstelle an diesen Server sendet und dann die WAV-Datei anschließend von diesem herunterladen und weiter verwenden kann.

        Es gibt diverse Stimmen in vielen Sprachen: https://github.com/rhasspy/piper/blob/master/VOICES.md

        Verwendete Softwarekomponenten:

        • Debian oder Devuan Linux (minimale Serverversion genügt)
        • Webserver mit PHP-CGI (lighttpd)
        • Python3 mit PIP
        • piper (AI-Sprachgenerierung) => https://github.com/rhasspy/piper

        Ich habe einen „neuen“ virtuellen Proxmox Server genutzt. Man kann aber auch einen RasPi oder einen anderen Linuxserver verwenden. Dann muss die Installation der einzelnen Softwarekomponenten evtl. angepasst werden. Ich haben Devuan 4 als Basis verwendet. https://www.devuan.org/

        Bei Debian/Deuvan basierten Linuxsystemen wird apt zur Softwareverwaltung verwendet.
        Das wird auch bei dieser Anleitung verwendet.

        Die folgenden Schritte habe ich als root-User durchgeführt:

        Installation des Devuan-Linux bzw. Nutzung eines vorhandenen Linux.
        Anschließend Update der aktuellen Software:

        apt update
        apt upgrade

        Installation von python und pip:

        apt install python3 pip

        Installation von piper:

        pip install piper-tts

        Test der piper Installation: (Optional)

        echo 'Willkommen!' | piper --model de_DE-thorsten-high --output_file welcome.wav

        Diese WAV-Datei sollte sich mit einem Player abspielen lassen.
        Beim ersten Aufruf von „piper“ wird die benutzte Stimme (hier de_DE_thorsten-high) heruntergeladen und im aktuellen Verzeichnis gespeichert. Die generierte WAV-Datei landet ebenfalls im aktuellen Verzeichnis.

        Installation des Webservers mit php-cgi:

        apt install lighttpd php-cgi

        Aktivierung von PHP fastcgi:

        ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf
        ln -s /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled/15-fastcgi-php.conf

        Neustart des Webservers:

        /etc/init.d/lighttpd restart

        Damit die heruntergeladene Stimme und die WAV-Datei im WEB-Verzeichnis /var/www/html erstellt werden können, bekommt dieses Verzeichnis Schreibrechte für alle User! Das sollte man bei einem öffentlich erreichbaren Server so nicht tun!

        chmod 777 /var/www/html

        Im Webverzeichnis /var/www/html wird nun eine kleine PHP-Datei index.php erstellt, die zum Empfang des zu erstellenden Textes dient. Sie ruft dann piper mit den erforderlichen Parametern auf.

        /var/www/html/index.php:

        <?php
          $text = htmlspecialchars_decode($_GET['text']); 
          $text2 = escapeshellarg($text);
          exec("/bin/echo '".$text2."' | /usr/local/bin/piper --model de_DE-thorsten-high --output_file tts.wav");
        ?>
        

        Nun kann durch den Aufruf des Servers mit Übergabe des Textes eine entsprechende WAV-Datei erstellt werden:
        http://server-ip?text=Willkommen

        Die WAV-Datei kann anschliessend heruntergeladen werden:
        http://server-ip/tts.wav

        Im ioBroker nutze ich den Server per JavaScript mit dem Chromecast Adapter.
        Der gewünschte Text wird mit dem httpGet() Befehl zum Server übertragen und anschließend die URL der WAV-Datei im Chromecast Adapter im Objekt chromecast.0.Google_Home.player.url2play eingetragen und abgespielt.
        Damit das sauber funktioniert, musste ich nach dem Generieren der WAV-Datei eine kleine Pause (1 sec) einfügen, bevor die URL zum Chromecast gesandt wird.
        Der Code sieht wie folgt aus:

        function talk(text)
        {
            setState('chromecast.0.Google_Home.player.volume', 30);
            setState('chromecast.0.Google_Home.player.announcement', "http://ioBroker-ip:8082/sayit.0/tts.userfiles/mp3_silence_1sec.mp3");
            httpGet("http://server-ip/?text="+text, function() 
            {
                setTimeout(function()
                { 
                    setState('chromecast.0.Google_Home.player.url2play', 'http://server-ip/tts.wav'); 
                }, 1000);  
            });
        }
        

        Eine Demo für den Webbrowser liefert diese HTML-Datei. Sie bietet neben der Eingabemöglichkeit des Textes auch einen Player zum direkten Abspielen im Browser.

        <!doctype html>
        <head>
        <meta charset=utf-8>
        <title>TTS-Demo</title>
        </head>
        <body>
          <?php
            $text = htmlspecialchars_decode($_GET['text']); 
            $text2 = escapeshellarg($text);
            exec("/bin/echo '".$text2."' | /usr/local/bin/piper --model de_DE-thorsten-high --output_file play.wav");
          ?>
          <form action="/play.php">
            <input type="text" name="text" value="<?php echo $text;?>">
            <input type="submit" value="Generate">
          </form> 
          <audio id="audio" controls src="/play.wav"></audio><br>
          <a href="/play.wav">Download WAV</a>
          <script type="text/javascript">
            document.getElementById('audio').addEventListener("ended",function() {
                this.src = "/play.wav.php?nocache="+new Date().getTime();
                this.play();
            });
          </script>
        </body>
        </html>
        

        Evtl. ist das alles für den Einen oder Anderen nützlich.

        Tschau
        Uwe

        Proxmox/LXC/Docker

        haselchenH P 2 Replies Last reply
        4
        • uweklattU uweklatt

          Lokaler Text2Speak (TTS) Server

          Ich beschreibe hier meine Vorgehensweise zur Einrichtung eines im lokalen Netzwerk befindlichen TTS-Servers. Dieser kann zum Erstellen von WAV-Sounddateien genutzt werden. Als Eingabe dient der gewünschte Text, den man über eine Webschnittstelle an diesen Server sendet und dann die WAV-Datei anschließend von diesem herunterladen und weiter verwenden kann.

          Es gibt diverse Stimmen in vielen Sprachen: https://github.com/rhasspy/piper/blob/master/VOICES.md

          Verwendete Softwarekomponenten:

          • Debian oder Devuan Linux (minimale Serverversion genügt)
          • Webserver mit PHP-CGI (lighttpd)
          • Python3 mit PIP
          • piper (AI-Sprachgenerierung) => https://github.com/rhasspy/piper

          Ich habe einen „neuen“ virtuellen Proxmox Server genutzt. Man kann aber auch einen RasPi oder einen anderen Linuxserver verwenden. Dann muss die Installation der einzelnen Softwarekomponenten evtl. angepasst werden. Ich haben Devuan 4 als Basis verwendet. https://www.devuan.org/

          Bei Debian/Deuvan basierten Linuxsystemen wird apt zur Softwareverwaltung verwendet.
          Das wird auch bei dieser Anleitung verwendet.

          Die folgenden Schritte habe ich als root-User durchgeführt:

          Installation des Devuan-Linux bzw. Nutzung eines vorhandenen Linux.
          Anschließend Update der aktuellen Software:

          apt update
          apt upgrade

          Installation von python und pip:

          apt install python3 pip

          Installation von piper:

          pip install piper-tts

          Test der piper Installation: (Optional)

          echo 'Willkommen!' | piper --model de_DE-thorsten-high --output_file welcome.wav

          Diese WAV-Datei sollte sich mit einem Player abspielen lassen.
          Beim ersten Aufruf von „piper“ wird die benutzte Stimme (hier de_DE_thorsten-high) heruntergeladen und im aktuellen Verzeichnis gespeichert. Die generierte WAV-Datei landet ebenfalls im aktuellen Verzeichnis.

          Installation des Webservers mit php-cgi:

          apt install lighttpd php-cgi

          Aktivierung von PHP fastcgi:

          ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf
          ln -s /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled/15-fastcgi-php.conf

          Neustart des Webservers:

          /etc/init.d/lighttpd restart

          Damit die heruntergeladene Stimme und die WAV-Datei im WEB-Verzeichnis /var/www/html erstellt werden können, bekommt dieses Verzeichnis Schreibrechte für alle User! Das sollte man bei einem öffentlich erreichbaren Server so nicht tun!

          chmod 777 /var/www/html

          Im Webverzeichnis /var/www/html wird nun eine kleine PHP-Datei index.php erstellt, die zum Empfang des zu erstellenden Textes dient. Sie ruft dann piper mit den erforderlichen Parametern auf.

          /var/www/html/index.php:

          <?php
            $text = htmlspecialchars_decode($_GET['text']); 
            $text2 = escapeshellarg($text);
            exec("/bin/echo '".$text2."' | /usr/local/bin/piper --model de_DE-thorsten-high --output_file tts.wav");
          ?>
          

          Nun kann durch den Aufruf des Servers mit Übergabe des Textes eine entsprechende WAV-Datei erstellt werden:
          http://server-ip?text=Willkommen

          Die WAV-Datei kann anschliessend heruntergeladen werden:
          http://server-ip/tts.wav

          Im ioBroker nutze ich den Server per JavaScript mit dem Chromecast Adapter.
          Der gewünschte Text wird mit dem httpGet() Befehl zum Server übertragen und anschließend die URL der WAV-Datei im Chromecast Adapter im Objekt chromecast.0.Google_Home.player.url2play eingetragen und abgespielt.
          Damit das sauber funktioniert, musste ich nach dem Generieren der WAV-Datei eine kleine Pause (1 sec) einfügen, bevor die URL zum Chromecast gesandt wird.
          Der Code sieht wie folgt aus:

          function talk(text)
          {
              setState('chromecast.0.Google_Home.player.volume', 30);
              setState('chromecast.0.Google_Home.player.announcement', "http://ioBroker-ip:8082/sayit.0/tts.userfiles/mp3_silence_1sec.mp3");
              httpGet("http://server-ip/?text="+text, function() 
              {
                  setTimeout(function()
                  { 
                      setState('chromecast.0.Google_Home.player.url2play', 'http://server-ip/tts.wav'); 
                  }, 1000);  
              });
          }
          

          Eine Demo für den Webbrowser liefert diese HTML-Datei. Sie bietet neben der Eingabemöglichkeit des Textes auch einen Player zum direkten Abspielen im Browser.

          <!doctype html>
          <head>
          <meta charset=utf-8>
          <title>TTS-Demo</title>
          </head>
          <body>
            <?php
              $text = htmlspecialchars_decode($_GET['text']); 
              $text2 = escapeshellarg($text);
              exec("/bin/echo '".$text2."' | /usr/local/bin/piper --model de_DE-thorsten-high --output_file play.wav");
            ?>
            <form action="/play.php">
              <input type="text" name="text" value="<?php echo $text;?>">
              <input type="submit" value="Generate">
            </form> 
            <audio id="audio" controls src="/play.wav"></audio><br>
            <a href="/play.wav">Download WAV</a>
            <script type="text/javascript">
              document.getElementById('audio').addEventListener("ended",function() {
                  this.src = "/play.wav.php?nocache="+new Date().getTime();
                  this.play();
              });
            </script>
          </body>
          </html>
          

          Evtl. ist das alles für den Einen oder Anderen nützlich.

          Tschau
          Uwe

          haselchenH Offline
          haselchenH Offline
          haselchen
          Most Active
          wrote on last edited by
          #4

          @uweklatt

          Hey...

          erstmal Hut ab für die Anleitung. Super gemacht.
          Kannst Du vielleicht ein paar Anwendungsfälle geben?

          Vielleicht habe ich auch nicht richtig um die Ecke gedacht.
          Text und MP3 kann ich ja auch so auf dem Google z.b. ausgeben lassen.
          Dazu muss natürlich die ganze Maschinerie laufen, aber das muss Dein Server ja dann auch.....

          Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

          uweklattU 1 Reply Last reply
          0
          • haselchenH haselchen

            @uweklatt

            Hey...

            erstmal Hut ab für die Anleitung. Super gemacht.
            Kannst Du vielleicht ein paar Anwendungsfälle geben?

            Vielleicht habe ich auch nicht richtig um die Ecke gedacht.
            Text und MP3 kann ich ja auch so auf dem Google z.b. ausgeben lassen.
            Dazu muss natürlich die ganze Maschinerie laufen, aber das muss Dein Server ja dann auch.....

            uweklattU Offline
            uweklattU Offline
            uweklatt
            wrote on last edited by
            #5

            @haselchen sagte in Offline Sprachausgabe in hoher Qualität:

            Kannst Du vielleicht ein paar Anwendungsfälle geben?
            Text und MP3 kann ich ja auch so auf dem Google z.b. ausgeben lassen.

            Die Hauptmotivation war, ohne die Cloud auszukommen.
            Die gesamte Sprachgenerierung erfolgt offline, also ohne Cloud. Und das Ergebnis ist deutlich besser, als andere lokale Sprachgeneratoren.

            Durch die Implementierung in Verbindung mit einem Webserver kann man die Spracherzeugung leicht in viele Tools und Projekte integrieren.

            Längerfristig möchte ich auch die Spracheingabe lokal erledigen. 😊

            Tschau
            Uwe

            P.S: Hier das Ergebnis des Textes "Peiper funktioniert prima im lokalen Netzwerk": play.mp3

            Proxmox/LXC/Docker

            1 Reply Last reply
            0
            • uweklattU uweklatt

              Hallo,

              ich war auf der Suche nach einer offline Sprachausgabe, die als Ersatz für SayIt dienen kann und eine gute Sprachqualität besitzt.

              Als Ergebnis habe ich das Projekt piper verwendet und dieses auf einem virtuellen Linux Server installiert.
              Dort läuft auch ein Webserver, der die generierten Sprachausgaben zur Nutzung/Download bereitstellt.
              Die gewünschten Texte werden über eine HTTP Webanfrage dorthin übermittelt.

              Falls Interesse besteht, kann ich die Schritte zur Umsetzung hier zeigen.

              Tschau
              Uwe

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              wrote on last edited by
              #6

              @uweklatt

              wo findet letztlich die ausgabe statt ?

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              uweklattU 1 Reply Last reply
              0
              • liv-in-skyL liv-in-sky

                @uweklatt

                wo findet letztlich die ausgabe statt ?

                uweklattU Offline
                uweklattU Offline
                uweklatt
                wrote on last edited by
                #7

                @liv-in-sky sagte in Offline Sprachausgabe in hoher Qualität:

                wo findet letztlich die ausgabe statt ?

                In meinem Fall auf einem Google Home mini (mit dem Chromecast Adapter).
                Man kann die WAV-Datei aber auch mit einem anderen Netzwerkplayer ausgeben.

                Tschau
                Uwe

                Proxmox/LXC/Docker

                liv-in-skyL 1 Reply Last reply
                0
                • uweklattU uweklatt

                  @liv-in-sky sagte in Offline Sprachausgabe in hoher Qualität:

                  wo findet letztlich die ausgabe statt ?

                  In meinem Fall auf einem Google Home mini (mit dem Chromecast Adapter).
                  Man kann die WAV-Datei aber auch mit einem anderen Netzwerkplayer ausgeben.

                  Tschau
                  Uwe

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  wrote on last edited by
                  #8

                  @uweklatt

                  also braucht man natürlich eine alexa oder google box

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  uweklattU 1 Reply Last reply
                  0
                  • liv-in-skyL liv-in-sky

                    @uweklatt

                    also braucht man natürlich eine alexa oder google box

                    uweklattU Offline
                    uweklattU Offline
                    uweklatt
                    wrote on last edited by uweklatt
                    #9

                    @liv-in-sky sagte in Offline Sprachausgabe in hoher Qualität:

                    also braucht man natürlich eine alexa oder google box

                    Nein, jedes "Gerät", das WAV-Dateien im lokalen Netzwerk abspielen kann, kann für die Ausgabe verwendet werden. (z.B. auch ein RasPi).

                    Im Prinzp kann der TTS Server auch selbst die Ausgabe übernehmen, wenn er einen Audioausgang hat. Dann kann die WAV-Datei mit z.B.

                    aplay /var/www/html/tts.wav

                    direkt ausgegeben werden. Noch eleganter ist es, die Ausgabe von Piper direkt als Stream in das Audiodevice zu leiten. Piper kann auch direkt Audiodaten als RAW Stream generieren...

                    Tschau
                    Uwe

                    Proxmox/LXC/Docker

                    J 1 Reply Last reply
                    1
                    • uweklattU uweklatt

                      @liv-in-sky sagte in Offline Sprachausgabe in hoher Qualität:

                      also braucht man natürlich eine alexa oder google box

                      Nein, jedes "Gerät", das WAV-Dateien im lokalen Netzwerk abspielen kann, kann für die Ausgabe verwendet werden. (z.B. auch ein RasPi).

                      Im Prinzp kann der TTS Server auch selbst die Ausgabe übernehmen, wenn er einen Audioausgang hat. Dann kann die WAV-Datei mit z.B.

                      aplay /var/www/html/tts.wav

                      direkt ausgegeben werden. Noch eleganter ist es, die Ausgabe von Piper direkt als Stream in das Audiodevice zu leiten. Piper kann auch direkt Audiodaten als RAW Stream generieren...

                      Tschau
                      Uwe

                      J Offline
                      J Offline
                      jwerlsdf
                      wrote on last edited by jwerlsdf
                      #10

                      @uweklatt
                      Vielen Dank für die Anleitung. Ich habe noch zwei/drei Fragen:

                      1. Gibt es eine Möglichkeit , anstatt Thorsten eine weibliche Frsuenstimme zu installieren? Wie sähe dies aus?
                      2. Gibt es die Möglichkeit anstatt wav eine mp3 zu erzeugen?
                      3. Anstatt chromecast könnte ich ja die Datei such über sonos abspielen?!

                      Beste Grüße

                      uweklattU 1 Reply Last reply
                      0
                      • J jwerlsdf

                        @uweklatt
                        Vielen Dank für die Anleitung. Ich habe noch zwei/drei Fragen:

                        1. Gibt es eine Möglichkeit , anstatt Thorsten eine weibliche Frsuenstimme zu installieren? Wie sähe dies aus?
                        2. Gibt es die Möglichkeit anstatt wav eine mp3 zu erzeugen?
                        3. Anstatt chromecast könnte ich ja die Datei such über sonos abspielen?!

                        Beste Grüße

                        uweklattU Offline
                        uweklattU Offline
                        uweklatt
                        wrote on last edited by uweklatt
                        #11

                        @jwerlsdf
                        Es gibt auch deutsche Frauenstimmen. Die Namen sind oben verlinkt.
                        Man muss dazu den Namen der Stimme in der PHP Datei austauschen.
                        In der verfügbaren Qualität "low" klingen die aber nicht so gut wie Thorsten "high".

                        Ein MP3 erfordert noch einen weiteren Konvertierungsschritt, z.B. mit ffmpeg.
                        Auch das kann man in das PHP Script integrieren.

                        Wenn man dem Sonos eine Datei zum Abspielen übermitteln kann, geht das.
                        Leider kenne ich die Sonos Geräte zu wenig, um das konkret zu beantworten.

                        Tschau
                        Uwe

                        Proxmox/LXC/Docker

                        Rene55R S 2 Replies Last reply
                        0
                        • uweklattU uweklatt

                          @jwerlsdf
                          Es gibt auch deutsche Frauenstimmen. Die Namen sind oben verlinkt.
                          Man muss dazu den Namen der Stimme in der PHP Datei austauschen.
                          In der verfügbaren Qualität "low" klingen die aber nicht so gut wie Thorsten "high".

                          Ein MP3 erfordert noch einen weiteren Konvertierungsschritt, z.B. mit ffmpeg.
                          Auch das kann man in das PHP Script integrieren.

                          Wenn man dem Sonos eine Datei zum Abspielen übermitteln kann, geht das.
                          Leider kenne ich die Sonos Geräte zu wenig, um das konkret zu beantworten.

                          Tschau
                          Uwe

                          Rene55R Offline
                          Rene55R Offline
                          Rene55
                          wrote on last edited by
                          #12

                          @uweklatt Ich geb mich die Tage auch mal dadran - ich hab den Sayit nie ans laufen bekommen (oder falsch verstanden). 👍

                          Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                          ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                          Wetterstation: Froggit WH3000SE V1.6.6

                          uweklattU 1 Reply Last reply
                          0
                          • Rene55R Rene55

                            @uweklatt Ich geb mich die Tage auch mal dadran - ich hab den Sayit nie ans laufen bekommen (oder falsch verstanden). 👍

                            uweklattU Offline
                            uweklattU Offline
                            uweklatt
                            wrote on last edited by
                            #13

                            @rene55
                            Du hast ja auch Proxmox am laufen. Mein Setup läuft ebenfalls als Proxmox LXC mit dem Devuan 4 Image.

                            Tschau
                            Uwe

                            Proxmox/LXC/Docker

                            1 Reply Last reply
                            0
                            • uweklattU uweklatt

                              @jwerlsdf
                              Es gibt auch deutsche Frauenstimmen. Die Namen sind oben verlinkt.
                              Man muss dazu den Namen der Stimme in der PHP Datei austauschen.
                              In der verfügbaren Qualität "low" klingen die aber nicht so gut wie Thorsten "high".

                              Ein MP3 erfordert noch einen weiteren Konvertierungsschritt, z.B. mit ffmpeg.
                              Auch das kann man in das PHP Script integrieren.

                              Wenn man dem Sonos eine Datei zum Abspielen übermitteln kann, geht das.
                              Leider kenne ich die Sonos Geräte zu wenig, um das konkret zu beantworten.

                              Tschau
                              Uwe

                              S Offline
                              S Offline
                              Shadowhunter23
                              wrote on last edited by
                              #14

                              @uweklatt sagte in Offline Sprachausgabe in hoher Qualität:

                              In der verfügbaren Qualität "low" klingen die aber nicht so gut wie Thorsten "high".

                              Warum gibt es nur Thorsten als "high" Version?

                              Proxmox 9 HA-Cluster mit 3x HP prodesk 400 G6 i5
                              Bei einem downvote bitte melden, es könnte sein, dass dieser ungewollt ist!

                              uweklattU Thorsten-VoiceT 2 Replies Last reply
                              0
                              • S Shadowhunter23

                                @uweklatt sagte in Offline Sprachausgabe in hoher Qualität:

                                In der verfügbaren Qualität "low" klingen die aber nicht so gut wie Thorsten "high".

                                Warum gibt es nur Thorsten als "high" Version?

                                uweklattU Offline
                                uweklattU Offline
                                uweklatt
                                wrote on last edited by
                                #15

                                @shadowhunter23
                                Keine Ahnung.

                                Proxmox/LXC/Docker

                                1 Reply Last reply
                                0
                                • S Shadowhunter23

                                  @uweklatt sagte in Offline Sprachausgabe in hoher Qualität:

                                  In der verfügbaren Qualität "low" klingen die aber nicht so gut wie Thorsten "high".

                                  Warum gibt es nur Thorsten als "high" Version?

                                  Thorsten-VoiceT Offline
                                  Thorsten-VoiceT Offline
                                  Thorsten-Voice
                                  wrote on last edited by
                                  #16

                                  Guude 👋 !
                                  Bin durch @uweklatt auf diesen Thread aufmerksam geworden und habe mich auch gerade erst hier registriert. Sehr schöne Anleitung übrigens 👍 .

                                  Mein Name ist Thorsten, Gründer von Thorsten-Voice und zugehöriger Stimmspender.

                                  @Shadowhunter23 : Meine Stimme ist generell auch in der Qualitätsstufen "low" und "medium", sowie in div. Emotionen verfügbar. Woran hängt es denn?

                                  Viele Grüße
                                  Thorsten

                                  Open voice tech tutorials on Youtube "Thorsten-Voice"

                                  uweklattU 1 Reply Last reply
                                  0
                                  • Thorsten-VoiceT Thorsten-Voice

                                    Guude 👋 !
                                    Bin durch @uweklatt auf diesen Thread aufmerksam geworden und habe mich auch gerade erst hier registriert. Sehr schöne Anleitung übrigens 👍 .

                                    Mein Name ist Thorsten, Gründer von Thorsten-Voice und zugehöriger Stimmspender.

                                    @Shadowhunter23 : Meine Stimme ist generell auch in der Qualitätsstufen "low" und "medium", sowie in div. Emotionen verfügbar. Woran hängt es denn?

                                    Viele Grüße
                                    Thorsten

                                    uweklattU Offline
                                    uweklattU Offline
                                    uweklatt
                                    wrote on last edited by
                                    #17

                                    @thorsten-voice
                                    Die Frage war eher, warum es die anderen Stimmen nicht auch in hoher Qualität gibt.

                                    Tschau
                                    Uwe

                                    Proxmox/LXC/Docker

                                    Thorsten-VoiceT 1 Reply Last reply
                                    0
                                    • uweklattU uweklatt

                                      @thorsten-voice
                                      Die Frage war eher, warum es die anderen Stimmen nicht auch in hoher Qualität gibt.

                                      Tschau
                                      Uwe

                                      Thorsten-VoiceT Offline
                                      Thorsten-VoiceT Offline
                                      Thorsten-Voice
                                      wrote on last edited by
                                      #18

                                      @uweklatt Ups, ich sollte tatsächlich richtig lesen 🤦‍♂️.

                                      Mike, der Entwickler von Piper hat die meisten Modelle in "medium" trainiert. Ich habe mein Thorsten Modell selber in "high" trainiert und bereitgestellt.
                                      Eventuell kann man in der Piper Community anfragen, ob er ein anderes deutschsprachiges Modell auch noch in "high" trainieren kann.

                                      Open voice tech tutorials on Youtube "Thorsten-Voice"

                                      1 Reply Last reply
                                      0
                                      • uweklattU uweklatt

                                        Lokaler Text2Speak (TTS) Server

                                        Ich beschreibe hier meine Vorgehensweise zur Einrichtung eines im lokalen Netzwerk befindlichen TTS-Servers. Dieser kann zum Erstellen von WAV-Sounddateien genutzt werden. Als Eingabe dient der gewünschte Text, den man über eine Webschnittstelle an diesen Server sendet und dann die WAV-Datei anschließend von diesem herunterladen und weiter verwenden kann.

                                        Es gibt diverse Stimmen in vielen Sprachen: https://github.com/rhasspy/piper/blob/master/VOICES.md

                                        Verwendete Softwarekomponenten:

                                        • Debian oder Devuan Linux (minimale Serverversion genügt)
                                        • Webserver mit PHP-CGI (lighttpd)
                                        • Python3 mit PIP
                                        • piper (AI-Sprachgenerierung) => https://github.com/rhasspy/piper

                                        Ich habe einen „neuen“ virtuellen Proxmox Server genutzt. Man kann aber auch einen RasPi oder einen anderen Linuxserver verwenden. Dann muss die Installation der einzelnen Softwarekomponenten evtl. angepasst werden. Ich haben Devuan 4 als Basis verwendet. https://www.devuan.org/

                                        Bei Debian/Deuvan basierten Linuxsystemen wird apt zur Softwareverwaltung verwendet.
                                        Das wird auch bei dieser Anleitung verwendet.

                                        Die folgenden Schritte habe ich als root-User durchgeführt:

                                        Installation des Devuan-Linux bzw. Nutzung eines vorhandenen Linux.
                                        Anschließend Update der aktuellen Software:

                                        apt update
                                        apt upgrade

                                        Installation von python und pip:

                                        apt install python3 pip

                                        Installation von piper:

                                        pip install piper-tts

                                        Test der piper Installation: (Optional)

                                        echo 'Willkommen!' | piper --model de_DE-thorsten-high --output_file welcome.wav

                                        Diese WAV-Datei sollte sich mit einem Player abspielen lassen.
                                        Beim ersten Aufruf von „piper“ wird die benutzte Stimme (hier de_DE_thorsten-high) heruntergeladen und im aktuellen Verzeichnis gespeichert. Die generierte WAV-Datei landet ebenfalls im aktuellen Verzeichnis.

                                        Installation des Webservers mit php-cgi:

                                        apt install lighttpd php-cgi

                                        Aktivierung von PHP fastcgi:

                                        ln -s /etc/lighttpd/conf-available/10-fastcgi.conf /etc/lighttpd/conf-enabled/10-fastcgi.conf
                                        ln -s /etc/lighttpd/conf-available/15-fastcgi-php.conf /etc/lighttpd/conf-enabled/15-fastcgi-php.conf

                                        Neustart des Webservers:

                                        /etc/init.d/lighttpd restart

                                        Damit die heruntergeladene Stimme und die WAV-Datei im WEB-Verzeichnis /var/www/html erstellt werden können, bekommt dieses Verzeichnis Schreibrechte für alle User! Das sollte man bei einem öffentlich erreichbaren Server so nicht tun!

                                        chmod 777 /var/www/html

                                        Im Webverzeichnis /var/www/html wird nun eine kleine PHP-Datei index.php erstellt, die zum Empfang des zu erstellenden Textes dient. Sie ruft dann piper mit den erforderlichen Parametern auf.

                                        /var/www/html/index.php:

                                        <?php
                                          $text = htmlspecialchars_decode($_GET['text']); 
                                          $text2 = escapeshellarg($text);
                                          exec("/bin/echo '".$text2."' | /usr/local/bin/piper --model de_DE-thorsten-high --output_file tts.wav");
                                        ?>
                                        

                                        Nun kann durch den Aufruf des Servers mit Übergabe des Textes eine entsprechende WAV-Datei erstellt werden:
                                        http://server-ip?text=Willkommen

                                        Die WAV-Datei kann anschliessend heruntergeladen werden:
                                        http://server-ip/tts.wav

                                        Im ioBroker nutze ich den Server per JavaScript mit dem Chromecast Adapter.
                                        Der gewünschte Text wird mit dem httpGet() Befehl zum Server übertragen und anschließend die URL der WAV-Datei im Chromecast Adapter im Objekt chromecast.0.Google_Home.player.url2play eingetragen und abgespielt.
                                        Damit das sauber funktioniert, musste ich nach dem Generieren der WAV-Datei eine kleine Pause (1 sec) einfügen, bevor die URL zum Chromecast gesandt wird.
                                        Der Code sieht wie folgt aus:

                                        function talk(text)
                                        {
                                            setState('chromecast.0.Google_Home.player.volume', 30);
                                            setState('chromecast.0.Google_Home.player.announcement', "http://ioBroker-ip:8082/sayit.0/tts.userfiles/mp3_silence_1sec.mp3");
                                            httpGet("http://server-ip/?text="+text, function() 
                                            {
                                                setTimeout(function()
                                                { 
                                                    setState('chromecast.0.Google_Home.player.url2play', 'http://server-ip/tts.wav'); 
                                                }, 1000);  
                                            });
                                        }
                                        

                                        Eine Demo für den Webbrowser liefert diese HTML-Datei. Sie bietet neben der Eingabemöglichkeit des Textes auch einen Player zum direkten Abspielen im Browser.

                                        <!doctype html>
                                        <head>
                                        <meta charset=utf-8>
                                        <title>TTS-Demo</title>
                                        </head>
                                        <body>
                                          <?php
                                            $text = htmlspecialchars_decode($_GET['text']); 
                                            $text2 = escapeshellarg($text);
                                            exec("/bin/echo '".$text2."' | /usr/local/bin/piper --model de_DE-thorsten-high --output_file play.wav");
                                          ?>
                                          <form action="/play.php">
                                            <input type="text" name="text" value="<?php echo $text;?>">
                                            <input type="submit" value="Generate">
                                          </form> 
                                          <audio id="audio" controls src="/play.wav"></audio><br>
                                          <a href="/play.wav">Download WAV</a>
                                          <script type="text/javascript">
                                            document.getElementById('audio').addEventListener("ended",function() {
                                                this.src = "/play.wav.php?nocache="+new Date().getTime();
                                                this.play();
                                            });
                                          </script>
                                        </body>
                                        </html>
                                        

                                        Evtl. ist das alles für den Einen oder Anderen nützlich.

                                        Tschau
                                        Uwe

                                        P Offline
                                        P Offline
                                        pejasus
                                        wrote on last edited by
                                        #19

                                        @uweklatt
                                        Danke für diese GENIALE Anleitung!, ich habe Sie auf einem Raspi4 installiert - ohne größere Probleme!

                                        1 Reply Last reply
                                        0
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes


                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        57

                                        Online

                                        32.4k

                                        Users

                                        81.3k

                                        Topics

                                        1.3m

                                        Posts
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        ioBroker Community 2014-2025
                                        logo
                                        • Login

                                        • Don't have an account? Register

                                        • Login or register to search.
                                        • First post
                                          Last post
                                        0
                                        • Recent
                                        • Tags
                                        • Unread 0
                                        • Categories
                                        • Unreplied
                                        • Popular
                                        • GitHub
                                        • Docu
                                        • Hilfe