Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS19000301 - TextToSpeech - Wie EDOMI sprechen lernte...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    LBS19000301 - TextToSpeech - Wie EDOMI sprechen lernte...

    Nachdem EDOMI schon lange denken, entscheiden und visualisieren kann, dachte ich mir, es ist an der Zeit, EDOMI auch das Sprechen beizubringen.
    Im LBS19000301 könnt ihr euch selbst ein Urteil bilden, ob EDOMI in der Schule aufgepasst hat.

    Aus meiner Sicht ist pico2wave die derzeit beste frei verfügbare TTS Engine. Auf dieser Engine beruht auch das hier eingesetzt nanotts.

    Der LBS erwartet einen Text am Eingang E1, was den LBS dann auch triggert. Dieser Text wird dann in ein Audiofile transformiert und zwar in MP3, WAV oder OGG.
    Dabei kann über E2 ein Dateinamenpräfix angegeben werden und in E3 das Zielverzeichnis. Außerdem kann die Sprache, Geschwindigkeit, Pitch und Volume der Ausgabe eingestellt werden, sowie das obligatorische Debug ins Tracelog.

    Als Ausgänge findet man den Dateinamen (inkl. Pfad, ohne Pfad, nur Pfad) und die URL, über die man auch per HTTP auf die Datei zugreifen kann. Dazu wird dann lediglich ein Link im Verzeichnis /usr/local/edomi/www/data/tts angelegt. Dies ermöglicht eine direkte Ausgabe des Sprach-Audio-Files über den Squeezebox Command LBS.

    Mit dem Ausgang A1 (kompletter Dateiname) kann man auch den LBS Telegram-Contact füttern, um sich Sprachnachrichten als Telegram zusenden zu lassen. MP3 funktioniert hier am besten mit allen Clients auf PC, iPhone und Android.

    Hier mal eine Übersicht des Bausteins und wie man ihn sinnvoll einbinden kann:
    2016-04-14 23_57_22-EDOMI · Administration.png


    Da allerdings einige Zusatzkomponenten erforderlich sind, habe ich ein kleines Shell-Skript geschrieben, welches ich mit in das LBS Zip gebe. Dieses Shell Skript ist nur auf den EDOMI Server zu kopieren und mit

    Code:
     chmod 755 19000301_lbs.sh
    ausführbar machen und dann mit

    Code:
     ./19000301_lbs.sh
    starten. Danach einfach den LBS importieren oder ins LBS Verzeichnis kopieren, LBS neu einlesen und es kann losgehen.

    Bin gespannt auf Euer Feedback.

    Viele Grüße
    André


    Changelog:
    ==========
    v0.1: Initial version
    v0.1.1: Directory in E3 is relative to /usr/local/edomi/data/tmp/
    Hours in filename ist now 24 instead of 12h based
    Zuletzt geändert von jonofe; 17.04.2016, 21:14.

    #2
    Das ist wohl dann mal ein Grund dem Squeeze Durchsage LBS das Abspielen entfernter Playlisten beizubringen
    Wollte ich die Tage eh nochmal bei...

    Kommentar


      #3
      Zitat von wintermute Beitrag anzeigen
      Das ist wohl dann mal ein Grund dem Squeeze Durchsage LBS das Abspielen entfernter Playlisten beizubringen
      Wollte ich die Tage eh nochmal bei...
      Ja das wäre super. Ich hatte das zuerst auch damit versucht, aber hab es nicht zum Laufen bekommen. Mit dem Command Baustein ging es aber dann. Aber so ein kleiner kompakter Durchsage Bausteine wäre natürlich perfekt.
      Die Ausgabe ist übrigens echt performant also quasi ohne Verzögerung, obwohl zunächste WAV generiert wird und dann in MP3 konvertieer wird bevor es dann an die Squeezebox geht. Das hat mich echt positiv überrascht.
      Zuletzt geändert von jonofe; 15.04.2016, 07:48.

      Kommentar


        #4
        Guten Morgään

        noch schnell vor der Arbeit den Baustein installiert. Funktioniert echt toll !!!

        Kurze Frage: Kann man in der App irgendwo einstellen dass er das Audiofile direkt abspielt?

        Ich warte noch auf den Forenbeitrag Wie EDOMI laufen lernte......
        Christians Kind hat sich ja schon soooo schnell entwickelt.

        Nochmals vielen Dank auch an Andre´ für seine tollen LBS.

        sooooo jetzt noch zur Arbeit

        Kommentar


          #5
          Zitat von Robby Beitrag anzeigen

          Kurze Frage: Kann man in der App irgendwo einstellen dass er das Audiofile direkt abspielt?
          Was genau meinst du damit? Dass der LBS es direkt abspielt? Also ohne Squeeze LBS? Ohne Squeeze geht es nicht, macht ja auch wenig Sinn es auf dem EDOMI Server abzuspielen.

          Oder meinst du die Telegram App? Dass eine Audio Nachricht direkt abgespielt wird? Glaube nicht dass das geht. Wenn man es als Voice sendet, wird es zwar direkt runtergeladen im vergleich zur Audio Nachricht, aber Abspielen geht meines Wissens nicht.

          Kommentar


            #6
            jonofe
            Kleine Bitte: Könnte Dein LBS die Daten bitte in /data/tmp/... ablegen? Wenn Du dort ein Verzeichnis anlegst, wird dieses zwar auch nicht(!) gelöscht nach dem Start (genau wie /data/tts) - allerdings entspricht dies eher der "Konvention" und das Verzeichnis wird von Backups ignoriert. Die mp3-Dateien werden ja on-the-fly erstellt und brauchen das Backup nicht "aufzublähen"
            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

            Kommentar


              #7
              Zitat von jonofe Beitrag anzeigen

              Was genau meinst du damit? Dass der LBS es direkt abspielt? Also ohne Squeeze LBS? Ohne Squeeze geht es nicht, macht ja auch wenig Sinn es auf dem EDOMI Server abzuspielen.

              Oder meinst du die Telegram App? Dass eine Audio Nachricht direkt abgespielt wird? Glaube nicht dass das geht. Wenn man es als Voice sendet, wird es zwar direkt runtergeladen im vergleich zur Audio Nachricht, aber Abspielen geht meines Wissens nicht.
              Nunja... Die Visu kann durchaus "Töne" (also mp3) abspielen - also auf dem Client! Allerdings zur Zeit nur mp3-Dateien, die man in der Konfiguration hochgeladen hat. Die mp3-Dateien dieses LBS könnten prinzipiell natürlich auch abgespielt werden, nur gibt die GUI das noch nicht her

              Ich nutze dies übrigens routinemäßig u.a. für meine Türklingel - das iPad an der Wand ist auf volle Pulle eingestellt (Lautstärke), die Klingel ist durchaus gut hörbar
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                #8
                Zitat von gaert Beitrag anzeigen
                jonofe
                Kleine Bitte: Könnte Dein LBS die Daten bitte in /data/tmp/... ablegen? Wenn Du dort ein Verzeichnis anlegst, wird dieses zwar auch nicht(!) gelöscht nach dem Start (genau wie /data/tts) - allerdings entspricht dies eher der "Konvention" und das Verzeichnis wird von Backups ignoriert. Die mp3-Dateien werden ja on-the-fly erstellt und brauchen das Backup nicht "aufzublähen"

                Klar kein Problem. Im Moment werden da ja nur die Links abgelegt und man kann per "Eingang" konfigurieren wo die eigentlichen Audiodateien abgelegt werden soll.
                Wie ist denn Dein Vorschlag dafür? Sollte das dann relativ zu "/usr/local/edomi/data/tmp" sein, so dass dies dann quasi das chroot für den TTS LBS ist? Dann bräuchte ich ja auch die Links nicht mehr, da dann die Dateien auf jeden Fall per HTTP erreichbar sind.

                BTW: gibt es eine Konvention wenn ich die mySQL DB für einen LBS nutzen möchte, d.h. eine neue Datenbank mit Tabellen, die nur von einem LBS genutzt wird? Inbesondere: Gibt es eine Konvention für den DB Namen, die dann entscheidet ob die DB im EDOMI Backup landet oder nicht?

                Kommentar


                  #9
                  Genau - einfach in www/data/tmp ablegen. In Zukunft wird EDOMI beim Start wahrscheinlich auch die Unterordner in /tmp löschen - zur Zeit werden nur die Dateien dort gelöscht.

                  DBs: Es werden nur die 3 vorhandenen DBs beim Backup berücksichtigt (edomiProject, edomiLive, edomiAdmin). Du kannst also im Prinzip nach Belieben neue DBs hinzufügen - empfehlen würde ich das allerdings nicht wirklich, denn dafür ist EDOMI eigentlich nicht designed. Theoretisch spricht aber nichts dagegen, ist halt nur so ne Sache wenn jetzt demnächst zig LBS irgendwelche DBs anlegen...

                  Sinnvoll (für zukünftige Erweiterungen) wäre es allerdings, wenn der Name Deiner DB nicht mit "edomi..." beginnen würde. Eher etwas wie "tmp..." oder "LBS..." oder so änhlich.
                  EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                  Kommentar


                    #10
                    Zitat von gaert Beitrag anzeigen

                    DBs: Es werden nur die 3 vorhandenen DBs beim Backup berücksichtigt (edomiProject, edomiLive, edomiAdmin). Du kannst also im Prinzip nach Belieben neue DBs hinzufügen - empfehlen würde ich das allerdings nicht wirklich, denn dafür ist EDOMI eigentlich nicht designed. Theoretisch spricht aber nichts dagegen, ist halt nur so ne Sache wenn jetzt demnächst zig LBS irgendwelche DBs anlegen...
                    Wäre nur eine Ausnahme für den Telegram LBS der Telegram Nachrichten empfängt. Ich nutze die bestehende php-telegram-bot Implementierung und die setzt für den Empfang eine mySQL DB voraus oder aber einen Web-Hook. Da ich bei Nutzung eines Web-Hooks sicher nicht den EDOMI Server ins Internet stellen möchte, müsste ein weiterer DMZ Server vorhanden sein. Glaube das wird dann für die Allgemeinheit zu kompliziert zu installieren. Daher die mySQL Lösung. Ansonsten habe ich derzeit keine mysql LBS im Angebot

                    Zitat von gaert Beitrag anzeigen
                    Sinnvoll (für zukünftige Erweiterungen) wäre es allerdings, wenn der Name Deiner DB nicht mit "edomi..." beginnen würde. Eher etwas wie "tmp..." oder "LBS..." oder so änhlich.
                    Passt, die DB heisst: LBS_19000304_Telegram

                    VG
                    André

                    Kommentar


                      #11
                      Update auf v0.1.1 verfübar

                      Changelog:
                      =========

                      v0.1.1: Directory in E3 is relative to /usr/local/edomi/data/tmp/
                      Hours in filename ist now 24 instead of 12h based

                      Kommentar


                        #12
                        Zitat von wintermute Beitrag anzeigen
                        Das ist wohl dann mal ein Grund dem Squeeze Durchsage LBS das Abspielen entfernter Playlisten beizubringen
                        Wollte ich die Tage eh nochmal bei...
                        Hi Michael,
                        wenn du bald noch mal an die Squeeze LBS rangehst, könntest du dem Durchsage-LBS noch das Abspielen von Remote Playlists (http://...) beibringen?

                        VG
                        André


                        Kommentar


                          #13
                          Ja, ich versuch daran zu denken

                          Kommentar


                            #14
                            Hallo Andre,

                            ich versuche gerade den LBS zu installieren. Das Paket was im Script drin steht schein es nicht mehr zu geben. über die Webseite habe ich herausgefunden das es ja diese Version gibt.

                            rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

                            Aber auch hier bekomme ich einen Timeout


                            wget http://pkgs.repoforge.org/rpmforge-r....rf.x86_64.rpm

                            --2016-10-25 17:54:06-- http://pkgs.repoforge.org/rpmforge-r....rf.x86_64.rpm

                            Resolving pkgs.repoforge.org... 78.46.17.228

                            Connecting to pkgs.repoforge.org|78.46.17.228|:80... failed: Connection timed out.

                            Retrying.

                            --2016-10-25 17:55:10-- (try: 2) http://pkgs.repoforge.org/rpmforge-r....rf.x86_64.rpm

                            Connecting to pkgs.repoforge.org|78.46.17.228|:80... failed: Connection timed out.

                            Retrying.


                            Ping vom Eiomi hat folgendes ergeben.


                            ping repoforge.org -- geht

                            PING repoforge.org (192.30.252.154) 56(84) bytes of data.

                            64 bytes from pages.github.com (192.30.252.154): icmp_seq=1 ttl=51 time=132 ms

                            64 bytes from pages.github.com (192.30.252.154): icmp_seq=2 ttl=51 time=127 ms


                            ping pkgs.repoforge.org -- geht nicht

                            PING pkgs.repoforge.org (78.46.17.228) 56(84) bytes of data.

                            Hast du eine Idee?

                            Viele Grüße
                            Lynn

                            Kommentar


                              #15
                              Probier's mal mit diesem Mirror:
                              wget http://mirror1.hs-esslingen.de/repof....rf.x86_64.rpm

                              Kommentar

                              Lädt...
                              X