Ankündigung

Einklappen
Keine Ankündigung bisher.

Squeezebox TTS

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

    Squeezebox TTS

    Hallo,

    kennt sich irgendwer mit der Squeezbox aus wie man Text To Speech machen kann? Ich denke den Teil TTS kann ich hinkriegen, nur weiss ich nicht wie ich die Audio-Ausgabe hinbekomme. Muss ich hierfür einfach die aktuelle Playlist verändern und meine neu generierte MP3 einfügen und dann? Wie kann ich an genau dem Punkt vom letzten Titel wieder fortfahren?
    Gibt es keine Voice Over Funktion, wo die aktuelle Ausgabe nicht gestoppt wird sondern nur leiser abgespielt wird?

    Wäre dankbar für jeden Hinweis.

    Ciao,
    MF

    #2
    Am TTS-Teil wäre ich interessiert.

    Den Rest (kein Voice Over) kann ich liefern.

    logic.conf
    Code:
    #SQUEEZEBOX    
    [ansage_waschmaschine]
        filename = ansage_waschmaschine.py
        watch_item = wm.fertig
    ansage_waschmaschine.py
    Code:
    #/logics/ansage_waschmaschine.py
    #!/usr/bin/env python
    # Ansage bei Waschmaschine
    
    import time
    
    if trigger['value'] == 1:
        power = sh.squeezebox_kueche.power()
        volume = sh.squeezebox_kueche.volume()
        playing = sh.squeezebox_kueche.play() # Status auslesen
        
        sh.squeezebox_kueche.playlist_save('squeeze_kueche') # Aktuelle Playlist abspeichern
        sh.squeezebox_kueche.volume(50)
        sh.squeezebox_kueche.playlist_load('http://192.168.2.213/ansagen/waschmaschine_fertig_playlist.m3u')
        time.sleep(5) # Länge Ansage
        sh.squeezebox_kueche.volume(volume)
        time.sleep(1)
        sh.squeezebox_kueche.playlist_resume('squeeze_kueche') # Resume alte Playlist
        if not playing:
            sh.squeezebox_kueche.stop(True) # Falls vorher gestoppt war, nun auch stoppen
            sh.squeezebox_kueche.power(power)
    item.conf (nicht aufgeräumt)
    Code:
    [squeezebox_kueche]
        squeezebox_playerid = '00:04:20:2d:d6:ab'
        
    # 00:04:20:2d:d6:ab show line1:Speicherladung line2:MeinTesttext centered:1 duration:10
    # up squeezebox_kueche.playlist_waschmaschine_fertig = 1
    
        [[playlist_save]]
            type = str
            visu = yes
            enforce_updates = true
            squeezebox_send = <playerid> playlist save {}  
    
        [[playlist_resume]]
            type = str
            visu = yes
            enforce_updates = true
            squeezebox_send = <playerid> playlist resume {}
        
        [[playlist_load]]
            type = str
            visu = yes
            enforce_updates = true
            squeezebox_send = <playerid> playlist load {}
        
        [[playlist_load]]
            type = str
            visu = yes
            enforce_updates = true
            squeezebox_send = <playerid> playlist load {}  
            squeezebox_recv = <playerid> playlist load
        
        
        [[name]]
            type = str
            visu = yes
            squeezebox_send = <playerid> name {}  
            squeezebox_recv = <playerid> name    
        [[ip]]
            type = str
            visu = yes
            squeezebox_recv = player ip <playerid>  
        [[power]]
            type = bool
            visu = yes
            squeezebox_send = <playerid> power {}
            squeezebox_recv = <playerid> prefset server power
            squeezebox_init = <playerid> power    
        [[mute]]
            type = bool
            visu = yes
            squeezebox_send = <playerid> mixer muting {}
            squeezebox_recv = <playerid> prefset server mute
            squeezebox_init = <playerid> mixer muting
        [[volume]]
            type = num
            visu = yes
            squeezebox_send = <playerid> mixer volume {}
            squeezebox_recv = <playerid> prefset server volume
            squeezebox_init = <playerid> mixer volume
    
    
    
      [[Signal_Strength]]
        type = num
        visu = yes
        squeezebox_recv = <playerid> signalstrength    
    
      
      [[volume_Up]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> button volup
      [[volume_Down]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> button voldown
        
      [[play]]
        type = bool
        visu = yes
        squeezebox_send = <playerid> play
        squeezebox_recv = <playerid> play
        squeezebox_init = <playerid> mode
      [[stop]]
        type = bool
        visu = yes
        squeezebox_send = <playerid> stop
        squeezebox_recv = <playerid> stop
        squeezebox_init = <playerid> mode
      [[pause]]
        type = bool
        visu = yes
        squeezebox_send = <playerid> pause {}
        squeezebox_recv = <playerid> pause
        squeezebox_init = <playerid> mode
        
      [[Current_Title]]
        type = str
        visu = yes
        squeezebox_recv = <playerid> playlist newsong
        squeezebox_init = <playerid> current_title
    
      [[Genre]]
        type = str
        visu = yes
        squeezebox_recv = <playerid> genre
      [[Artist]]
        type = str
        visu = yes
        squeezebox_recv = <playerid> artist
      [[Album]]
        type = str
        visu = yes
        squeezebox_recv = <playerid> album
      [[Title]]
        type = str
        visu = yes
        squeezebox_recv = <playerid> title
      [[Duration]]
        type = num
        visu = yes
        squeezebox_recv = <playerid> duration
    
      [[Time]]
        type = num
        visu = yes
        squeezebox_send = <playerid> time {}
        squeezebox_recv = <playerid> time
    
      [[Playlist_Index]]
        type = num
        visu = yes
        squeezebox_send = <playerid> playlist index {}
        squeezebox_recv = <playerid> playlist index
      [[Playlist_Forward]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist index +1
      [[Playlist_Backward]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist index -1
        
      [[Playlist_Name]]
        type = str
        visu = yes
        squeezebox_send = <playerid> playlist name {}
        squeezebox_recv = <playerid> playlist name
      [[Playlist_Save]]
        type = str
        visu = yes
        squeezebox_send = <playerid> playlist save {}  
      [[Playlist_Load]]
        type = str
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist load {}
      [[Playlist_Load_Internetradio]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist load file:///var/www/playlist.m3u
        
      [[Repeat]]
        type = num
        visu = yes
        squeezebox_send = <playerid> playlist repeat {}
        squeezebox_recv = <playerid> playlist repeat    
      [[Repeat_Song]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist repeat 1
      [[Repeat_Playlist]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist repeat 2
      [[Repeat_None]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist repeat 0
        
      [[Shuffle]]
        type = num
        visu = yes
        squeezebox_send = <playerid> playlist shuffle {}
        squeezebox_recv = <playerid> playlist shuffle    
      [[Shuffle_By_Song]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist shuffle 1
      [[Shuffle_By_Album]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist shuffle 2
      [[Shuffle_None]]
        type = bool
        enforce_updates = true
        visu = yes
        squeezebox_send = <playerid> playlist shuffle 0
    
    #### Display Values
        
      [[Display_Speicher]]
        type = str
        knx_dpt = 4.002
        knx_listen = 9/1/1
        enforce_updates = true
        squeezebox_send = <playerid> show line1:Speichertemperatur line2:{} centered:1 duration:10
        eval = str(int(sh.ow.WP_WW_SP()))+' °C'
        
      [[Display_Speicherladung_aktiv]]
        type = str
        knx_dpt = 4.002
        enforce_updates = true
        squeezebox_send = <playerid> show line1:Speicherladung line2:{} centered:1 duration:10
        eval = 'an' if sh.ebus.speicherladung() == 1 else 'aus'
        eval_trigger = ebus.speicherladung
        
      [[Display_Aussen]]
        type = str
        knx_dpt = 4.002
        knx_listen = 1/2/35
        enforce_updates = true
        squeezebox_send = <playerid> show line1:Aussentemperatur line2:{} centered:1 duration:10
        eval = str(int(sh.ow.AT_Nord()))+' C Grad'
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      Danke für deine Antwort, habe erst jetzt gesehen dass jemand geantwortet hat. Das schaut recht gut aus, ich werde mich an die Implementierung machen und meine Erfahrung mit TTS später posten.

      Kommentar


        #4
        Gibt's schon Erfahrungen, knxmfbp ?

        Kommentar


          #5
          Zitat von Onkelandy Beitrag anzeigen
          Gibt's schon Erfahrungen, knxmfbp ?
          Leider immer noch nicht, hatte sehr wenig Zeit die letzen Monate, hoffe dass sich das wieder ab September ändert.

          Kommentar


            #6
            Hallo,

            Gibts schon etwas Neues zum Thema TTS?

            Gruß

            Kommentar


              #7
              Hallo,
              suche auch schon länger eine Lösung dazu, allerdings ist für mich die Sonos als auch die Squezzebox Lösung eher eine Notlösung für Statusmeldungen. Meine Idee ist eher das Speech Plugin weiter auszubauen. Mein Gedanke geht dahin das man die Bustelegramme in den Tasker bringt um sie dann mit diesem seine Ansagen und Aktionen triggern kann. Also das Plugin praktisch umdrehen!

              Kommentar


                #8
                Geht das nicht über Autoremote?
                Deinen Ansatz habe ich noch nicht verstanden. Wie ist der Weg über Speech nach Tasker?

                Gruß

                Kommentar


                  #9
                  Autoremote weiss ich nicht! Tasker kann JSON. Es müsste praktisch nur eine Anbindung an den SmarthomePY kommen, welches die Busdaten in den Tasker liefert. Danach kann man es zu einer Sprachausgabe ausgeben wenn sich der Wert ändert.
                  An das Speech Plugin direkt hatte ich nicht gedacht, nur an die Funktionsweise, nur umgekehrt.

                  Man braucht so wie sich es mir im Moment darstellt, ein Script im Tasker, welche die Daten vom Smarthomepy bekommt.
                  Die Sprachausgaben können dann so im Tasker einfacher gestaltet werden, als sie erst als MP3 hochzuladen.

                  Hoffe es ist jetzt verständlicher

                  Kommentar


                    #10
                    Ich hatte das mal mit einem EibPC auf diese Weise am Laufen. Der EibPC sendet per HTTP-GET oder POST (weiß nicht mehr genau) an Autoremote seinen payload und über Tasker kam dann die Sprachausgabe.
                    Leider war es bei mir so, dass Autoremote manchmal, wenn sich das entsprechende Gerät in Standby begeben hat, über WLAN die Internetverbindung verloren und somit nichts mehr empfangen hat. Man mußte die App neu starten und dann gings wieder. Wenn die Verbindung allerdings erstmal stand, funktionierte es zuverlässig.

                    Gruß

                    Kommentar


                      #11
                      Hast du da noch was von, was du Posten könntest? So muss ich nicht ganz bei Null anfangen.

                      Dein Standby Problem scheint Endgeräte abhängig zu sein und habe es schon öfter gehört. Ich habe ein Nexus 10 mit einem 5.0 Android, das hält die Verbindung. Probleme habe ich nur, wenn das Wlan mal weg ist und dann wieder kommt oder ich den Tasker ein wenig überfordert habe und die App abstürzt

                      Kommentar


                        #12
                        Ich kann morgen mal nachsehen, ob ich noch etwas habe. Aber vermutlich schon.
                        Bei mir lief das ganze auf einem Nexus 7 (2013) und einem Nexus 5. Alles mittlerweile Android 6. Solange das Nexus 5 nicht auf WLAN lief, war alles ok. Sobald per WLAN und einmal verloren, wars vorbei.

                        Gruß

                        Kommentar


                          #13
                          Habe mich mal mit dem Prowl Plugin beschäftigt, ist auch eine Alternative. Syncron dazu würde auch Pushbullet und Whatsapp gehen.
                          Bei dem Durchstöbern der Plugins ist mir die Idee gekommen, das man die Meldungen Puffern sollte. Wenn wie du man WLAN Probleme hat, würde oder sollte man die Nachrichten dann empfangen können, nachdem WLAN wieder da ist.

                          Allerdings habe ich noch keine Idee wie ich das umsetzten soll. Werde wohl mal ein wenig mit den Plugins spielen müssen.

                          Viele Grüße

                          Kommentar


                            #14
                            Das Problem mit dem Umgang der Meldungen um nicht überschüttet zu werden hatte ich auch anfangs mit dem PB-Plugin. Lars hat dann dankenswerterweise die Messge-ID in eine Variable mit hineingepackt, welche ich nun per Logik verwenden kann. Bsp.: Alarm tritt auf, PB sendet Meesage mit ID4711, 5 Min später ist Alarm erledigt und PB sendet mit ID4712. Da ich ja weiß das 4711+4712 zusammenpassen schicke ich per Logik einen "Lösche meldung ID4711" zus. zur Meldung ID4712. Dadurch sehe ich am Ende sogar das es ein Alarmissue gegeben hat, dieses aber schon gelöst ist.

                            Kommentar


                              #15
                              Das ist ja auch eine geile Idee. Pushbullet müsste die Meldung ja auch speichern und wenn Handy wieder auf Empfang dann übertragen. Das müsste ja parallel dazu auch die Sprachübertragung im Tasker funktionieren. So hat man 2 Fliegen mit einer Klappe, wenn ich das gerade richtig verstehe.

                              Kannst du was dazu Posten, wie du das mit den IDs machst?

                              Kommentar

                              Lädt...
                              X