Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi TTS -> Pulseaudio -> Snapcastserver

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

    Edomi TTS -> Pulseaudio -> Snapcastserver

    Hallo zusammen,


    ich habe folgendes Setup: Edomi läuft auf PC1 und auf PC2 befinden sich der "Multiroom-Audio-Server".

    Die Ablaufkette ist folgende: Mopidy -> Pulseaudio -> Snapcastserver -> Snapclient
    Es gibt mehrere Mopidy Instanzen, für jeden in der Familie eine. Somit kann sich jeder seine Playlist zusammenstellen.

    Mit diesem Server möchte ich überall musikhören und es wäre halt auch toll, darüber z.B. die Türklingel zu "hören" oder irgendwelche Benachrichtigungen.
    Mit dem LBS 19000301 kann man aus Text eine MP3 erzeugen.

    Soweit so gut aber wie bekomme ich diese Audiodatei von PC1 an den PC2 "übertragen"?
    Die "ducking" Funktion von Pulseaudio würde ich auch gerne benutzen wollen.

    Eine Anleitung für FHEM und für HA habe ich gefunden, leider komm ich damit nicht klar.


    Ich hab für Edomi testweise eine zusätzliche Mopidy Instanze erstellt, weil ich sonst nicht weis, wie ich die MP3 an Pulseaudio durchreichen kann.

    Die Mopidy Konfig für Edomi schaut so aus:
    Code:
    [audio]
    output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! pulsesink  server=127.0.0.1 device=edomi  stream-properties="props,media.role=phone"
    Durch die Ergänzung "properties="props,media.role=phone"" sollte das ducking eigentlich aktiviert werde. Tut es aber nicht.


    Die Mopidy Konfig für Florian schaut so aus:
    Code:
    [audio]
    output = audioresample ! audioconvert ! audio/x-raw,rate=48000,channels=2,format=S16LE ! pulsesink  server=127.0.0.1  device=florian  stream-properties="props,media.role=music"

    Folgende Konfig habe ich in der Pulseaudio system.pa :
    Code:
    load-module module-pipe-sink file=/tmp/florian.fifo   sink_name=florian
    load-module module-pipe-sink file=/tmp/katrin.fifo    sink_name=katrin
    load-module module-pipe-sink file=/tmp/kind1.fifo      sink_name=kind1
    load-module module-pipe-sink file=/tmp/kind2.fifo   sink_name=kind2
    
    load-module module-combine-sink slaves=kind1,kind2    sink_name=kinder
    
    load-module module-combine-sink slaves=florian,katrin,kind1,kind2  sink_name=edomi
    
    load-module module-role-ducking trigger_roles=phone ducking_roles=music volume=60
    
    ​
    Das "combine" Modul scheint zu funktionieren weil ich den Stream Florian und Edomi gleichzeitig höre.

    Daher meine Frage
    1. Wie kann ich die TTS Audiodatei auf dem Edomiserver an den Audioserver weiterleiten, so das es automatisch abgespielt wird?
    2. Warum funktioniert bei mir die "ducking" Funktion nicht.


    Leider bin ich mit meinem Wissen am Ende.
    Vielleicht kann mir jemand einen Schubser in die richtige Richtung geben oder es gibt schon eine andere Lösung.​​

    Danke und Grüße
    Florian

    #2
    Dateien kannst du per ssh/scp übertragen. Dafür dann public key authentication verwenden, damit keine Passworteingabe notwendig ist. Das geht entweder per SHELL Befehl oder mit dem SSH LBS.

    Zu den Fragen bzgl. des Audioservers kann ich nichts sagen, dazu ist das hier aber auch vermutlich das falsche Forum.

    Kommentar


      #3
      Ich hatte große hoffnung, dass du mir weiterhelfen hättest können, schade.

      Kommentar


        #4
        Falls es jemanden interresiert, jetzt klappt es mit der Audioausgabe von Edomi an den Pulseserver.
        Dabei hat folgende installation und Einstellung auf dem Edomi PC zum Erfolg geführt.

        Pulseaudio und Alsa installieren
        Code:
        yum install pulseaudio
        yum install alsa-lib.x86_64
        yum install alsa-utils.x86_64
        yum install alsa-plugins-pulseaudio.x86_64
        ​
        nano /etc/systemd/system/pulseaudio.service
        Code:
        [Unit]
        Description=PA
        After=network.target sound.target
        
        [Service]
        ExecStart=/usr/bin/pulseaudio --system
        
        # allow MPD to use real-time priority 50
        LimitRTPRIO=50
        LimitRTTIME=infinity
        
        # disallow writing to /usr, /bin, /sbin, ...
        ProtectSystem=yes
        
        [Install]
        WantedBy=multi-user.target​

        systemctl enable pulseaudio
        systemctl --global disable pulseaudio.service pulseaudio.socket
        usermod -aG pulse-access root

        nano /etc/pulse/client.conf​
        Code:
        autospawn = no
        default-server = 192.168.1.4​ (PulseaudioServer IP)

        nano /etc/pulse/daemon.conf
        Code:
        avoid-resampling = yes
        default-sample-rate = 48000​

        nano /etc/pulse/system.pa
        Code:
        load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1;192.168.0.0/16

        Mit folgendem Aufruf kann man testen, ob es funktioniert.
        Code:
        nanotts --Play -i "Das ist ein Test"

        Beim LSB 19000301 hab ich "play" als Format hinzugefügt
        Code:
            $allowedFormats = array(
                'wav',
                'mp3',
                'ogg',
                'play'​
        und die "else if" Abfrage erweitert
        Code:
              else if ($outputFormat == 'play')
                $nanoTTScommand = '/usr/local/bin/nanotts --Play -v ' . $voice . ' --speed ' . $speed . ' --pitch ' . $pitch . ' --volume ' . $volume . ' -i ' .$text;​


        Jetzt muss ich mal schauen ob ich die "ducking" Funktion umgehen kann, indem ich, vor dem TTS Aufruf, die laufenden Streams in Mopidy pausiere...

        Kommentar

        Lädt...
        X