Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Wiregate-Plugin für Sprachausgabe

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

    #16
    Oje Ne handvoll missverständnisse.

    Das war kein Aufruf zur Hilfe. Sollte nur darstellen dass ich ein wenig brauche es auf Google und meine Bedürfnisse anzupassen! Da es wie ich finde doch relativ komplex ist.

    Mit nem fetten Verstärker und ordentlichen boxen und dem Umstand dass paplay mit 100% Lautstärke raus ballert, brummt die männliche svox Stimme ganz schön. war auch nicht kritisierend gemeint. Ich habe übersehen dass ich normalerweise die Lautstärke über mpd regle. (alsa somit immer auf 100%)

    Google wie auf seite1 dieses threads gepostet (sprachausgabe.pl)

    In meinem Skript müsste ich die Sätze/werte zerlegen um Sie wie in deinem Skript zu verarbeiten. Natürlich sind die auch statisch, aber mein Ziel war es dass Sie "einfach" per plug-in anzupassen sind.

    Sry für die Missverständnisse!!


    Gruß vlamers

    Edit: An meinen perl Kenntnissen arbeite ich zur Zeit...

    Edit2: Seite 1

    ***censored***

    Kommentar


      #17
      Ich helfe dir gerne, muss nur wissen was du brauchst!
      Fry

      Kommentar


        #18
        Sehr nett von dir!

        Also:

        Der zu sprechende Satz :
        - In Wörter zerlegt werden
        - jedes Wort in sein eigenes mp3 File
        - Name des mp3 Files = Text der zu sprechen ist

        Das ganze vorher überprüfen ob dass Wort eventuell schon existiert. Evtl in der Art:
        Code:
            my $datei = "/tmp/$dateiname1.mp3";
            if (-e $datei) {
               my $debug = `MPD_HOST=$IP MPD_PORT=$Port mpc add $dateiname1.mp3`
                  return;
               } else {
            my $url = "http://translate.google.com/translate_tts?ie=UTF-8&q=$Ansage1";
            my $debug = `wget "$url" --keep-session-cookies --user-agent=sag_ich_nicht -O /tmp/$dateiname1.mp3`;
            my $debug = `MPD_HOST=$IP MPD_PORT=$Port mpc add $dateiname1.mp3`;
              return;
            }
        
        }
        Das ganze wie man schon sieht, als mpd Playlist zusammenbauen. Und abspielen.

        Viele Wünsche von mir...

        Das Problem ist eigentlich die Sätze zu zerlegen, dass bekomm ich nicht hin.
        Die Sätze bilden, machst du ja mit deinem Plugin.
        Da müsste ich nur dein
        Code:
        system $aplay, "-d $channel", @_;
        in

        Code:
        system $mpc, add, @_;
        system $mpc, play;
        das play natürlich ganz zum schluss.

        Gruß und Danke!

        Kommentar


          #19
          Da ich weder Miss Google noch MPD nutze, kann ich nur Hinweise geben.

          Hier wäre evtl. ein brauchbares Codefragment:

          Code:
          my $satz="Dies ist ein Satz.";
          
          $satz=~s/[\,\.\:]//g;  # Interpunktion entfernen
          $satz=~s/\s+/ /sg; # whitespace in einzelne Leerzeichen ueberfuehren
          
          my @woerter=split /\s/, $satz; # Satz in Woerter zerlegen
          
          my @playlist=();
          
          for my $wort (@woerter)
          {
             unless(-f "$wort.mp3")
             {
                # erzeuge die Datei $wort.mp3 irgendwie per "Miss Google"
                system "wget", ..wasweissich..;
             }
             push @playlist, "$wort.mp3"; # zur Playlist hinzufuegen
          }

          Kommentar


            #20
            Perfekt!

            Dankeschön!
            Erste Hürde geschafft.
            Rest dann zuHause am echten WG, da ich hier nur eine spärliche Linux distribution hab und nix installieren darf

            Code:
            #!/usr/bin/perl
            use strict;
            my $destination = "pakueche";
            my $satz="Dies ist ein Satz.";
            $satz=~s/[\,\.\:]//g;  # Interpunktion entfernen
            $satz=~s/\s+/ /sg; # whitespace in einzelne Leerzeichen ueberfuehren
            my @woerter=split /\s/, $satz; # Satz in Woerter zerlegen
            my @playlist=();
            for my $wort (@woerter)
            {
               unless(-f "$wort.mp3")
               {
             my $url = "[URL]http://translate.google.de/translate_tts?ie=UTF-8&q=$wort[/URL]";
             my $url2 = "--keep-session-cookies --user-agent=sag_ich_nicht -O $wort.mp3";
             system wget, "$url", $url2;
                 
               }
               push @playlist, "$wort.mp3"; # zur Playlist hinzufuegen
            system mpg123, -a, $destination, @playlist;
            }
            so gehts übrigens mit Miss google. Wie ich finde eine sehr angenehme Stimme!
            Kann man den Perl Plugins beibringen, dass sie nicht so lange auf der "Leitung stehen". So wie bei abspielen mit aplay, mpg123, sonsiges.
            Beim mpd geht dass übrigens sehr gut. Ich starte z.B meinen Radio Stream per Plugin. aber sobald der "mpc play" ausgeführt ist, ist dass plugin fertig.
            Bei mpg123, aplay rödelt dass so lange er spricht.

            Gruß und Danke für deine Hilfe!!

            Kommentar


              #21
              Hier ein Skript, mit dem man das gesamte Ansagen-Verzeichnis (so wie ich es aktuell nutze) aus Miss Google erzeugen kann.

              Have fun!
              Fry

              Code:
              #!/usr/bin/perl -w
              
              use strict;
              
              chdir "/var/lib/";
              system "mkdir", "-p", "Ansagen/MissGoogle";
              system "rm -f Ansagen/Sprache";
              system "ln -sf MissGoogle Ansagen/Sprache";
              chdir "/var/lib/Ansagen/MissGoogle";
              
              my %text=(
                  "./Achtung, es wurde ein Einbruch detektiert. Die Polizei wird automatisch benachrichtigt.wav"=>"Achtung, es wurde ein Einbruch detektiert. Die Polizei wird automatisch benachrichtigt",
                  "./AufWiedersehen.wav"=>"Auf Wiedersehen",
                  "./Bitte Schluesselbund ans Schluesselbrett haengen.wav"=>"Bitte Schluesselbund ans Schluesselbrett haengen",
                  "./Der Trockner ist fertig.wav"=>"Der Trockner ist fertig",
                  "./Die Alarmanlage ist aktiviert.wav"=>"Die Alarmanlage ist aktiviert",
                  "./Die Alarmanlage ist deaktiviert.wav"=>"Die Alarmanlage ist deaktiviert",
                  "./Die Alarmanlage wird in fuenf Minuten aktiviert.wav"=>"Die Alarmanlage wird in fuenf Minuten aktiviert",
                  "./Die Waschmaschine ist fertig.wav"=>"Die Waschmaschine ist fertig",
                  "./Es liegt neue Post im Briefkasten.wav"=>"Es liegt neue Post im Briefkasten",
                  "./Essen ist fertig.wav"=>"Essen ist fertig",
                  "./Fenster offen.wav"=>"Fenster offen",
                  "./Kaffee ist fertig.wav"=>"Kaffee ist fertig",
                  "./Monate/April.wav"=>"April",
                  "./Monate/August.wav"=>"August",
                  "./Monate/Dezember.wav"=>"Dezember",
                  "./Monate/Februar.wav"=>"Februar",
                  "./Monate/Januar.wav"=>"Januar",
                  "./Monate/Juli.wav"=>"Juli",
                  "./Monate/Juni.wav"=>"Juni",
                  "./Monate/Maerz.wav"=>"Maerz",
                  "./Monate/Mai.wav"=>"Mai",
                  "./Monate/November.wav"=>"November",
                  "./Monate/Oktober.wav"=>"Oktober",
                  "./Monate/September.wav"=>"September",
                  "./Personen/Alois.wav"=>"Alois",
                  "./Personen/Andrea.wav"=>"Andrea",
                  "./Personen/Christoph.wav"=>"Christoph",
                  "./Personen/Chris.wav"=>"Chris",
                  "./Personen/Guenther.wav"=>"Guenther",
                  "./Personen/Helena.wav"=>"Helena",
                  "./Personen/Jakob.wav"=>"Jakob",
                  "./Personen/Jasmin.wav"=>"Jasmin",
                  "./Personen/Julius.wav"=>"Julius",
                  "./Personen/Kim.wav"=>"Kim",
                  "./Personen/Lynn.wav"=>"Lynn",
                  "./Personen/Michael.wav"=>"Michael",
                  "./Personen/Nils.wav"=>"Nils",
                  "./Personen/Rita.wav"=>"Rita",
                  "./Personen/Tanja.wav"=>"Tanja",
               "./Personen/Uta.wav"=>"Uta",
                  "./Personen/Wigbert.wav"=>"Wigbert",
                  "./Rauchalarm.wav"=>"Rauchalarm",
                  "./Raum/A1.wav"=>"Aussenbereich unten",
                  "./Raum/A2.wav"=>"Aussenbereich oben",
                  "./Raum/AT.wav"=>"Aussentreppe",
                  "./Raum/AZ.wav"=>"Arbeitszimmer",
                  "./Raum/BA.wav"=>"Grosses Bad",
                  "./Raum/D1.wav"=>"Dusche Keller",
                  "./Raum/D2.wav"=>"Dusche Erdgeschoss",
                  "./Raum/DA.wav"=>"Dach",
                  "./Raum/EK.wav"=>"Esskueche",
                  "./Raum/E.wav"=>"Eingangsflur",
                  "./Raum/F2.wav"=>"Flur Erdgeschoss",
                  "./Raum/GA.wav"=>"Galerie",
                  "./Raum/GL.wav"=>"Global",
                  "./Raum/G.wav"=>"Garage",
                  "./Raum/HE.wav"=>"Heizung",
                  "./Raum/HW.wav"=>"Hauswirtschaftsraum",
                  "./Raum/K1.wav"=>"K1",
                  "./Raum/K2.wav"=>"K2",
                  "./Raum/K3b.wav"=>"K3",
                  "./Raum/K3.wav"=>"K3",
                  "./Raum/SZ.wav"=>"Schlafzimmer",
                  "./Raum/TE2.wav"=>"Terrasse",
                  "./Raum/TE3.wav"=>"Balkon",
                  "./Raum/TR1.wav"=>"Eingangstreppe",
                  "./Raum/TR2.wav"=>"Galerietreppe",
                  "./Raum/UT.wav"=>"Unter der Treppe",
                  "./Raum/VO.wav"=>"Vorratsraum",
                  "./Raum/WF.wav"=>"Windfang",
                  "./Raum/WZ.wav"=>"Wohnzimmer",
                  "./Sensor/KA.wav"=>"Aufzug",
                  "./Sensor/KF.wav"=>"Fenster",
                  "./Sensor/KO.wav"=>"Kontakt",
                  "./Sensor/KR.wav"=>"Relais",
                  "./Sensor/KS.wav"=>"Stromfluss",
                  "./Sensor/KT.wav"=>"Tuer",
                  "./Sensor/LF.wav"=>"Luftfeuchte",
                  "./Sensor/PM.wav"=>"Praesenz",
                  "./Sensor/TA.wav"=>"Aussentemperatur",
                  "./Sensor/TE.wav"=>"Estrich",
                  "./Sensor/TL.wav"=>"Innentemperatur",
                  "./Sensor/TO.wav"=>"Temperatur",
                  "./Sensor/TP.wav"=>"Taupunkt",
                  "./Sensor/VC.wav"=>"Wok",
                  "./Willkommen.wav"=>"Willkommen",
                 "./Wochentage/Di.wav"=>"Dienstag",
                  "./Wochentage/Do.wav"=>"Donnerstag",
                  "./Wochentage/Fri.wav"=>"Freitag",
                  "./Wochentage/Fr.wav"=>"Freitag",
                  "./Wochentage/Mi.wav"=>"Mittwoch",
                  "./Wochentage/Mon.wav"=>"Montag",
                  "./Wochentage/Mo.wav"=>"Montag",
                  "./Wochentage/Sat.wav"=>"Samstag",
                  "./Wochentage/Sa.wav"=>"Samstag",
                  "./Wochentage/So.wav"=>"Sonntag",
                  "./Wochentage/Sun.wav"=>"Sonntag",
                  "./Wochentage/Thu.wav"=>"Donnerstag",
                  "./Wochentage/Tue.wav"=>"Dienstag",
                  "./Wochentage/Wed.wav"=>"Mittwoch",
                  "./Woerter/Bett.wav"=>"Bett",
                  "./Woerter/Decke.wav"=>"Decke",
                  "./Woerter/Herd.wav"=>"Herd",
                  "./Woerter/Kamin.wav"=>"Kamin",
                  "./Woerter/links.wav"=>"links",
                  "./Woerter/rechts.wav"=>"rechts",
                  "./Woerter/Spuele.wav"=>"Spuele",
                  "./Woerter/unter_Galerie.wav"=>"unter_Galerie",
                  "./Woerter/unter_Treppe.wav"=>"unter_Treppe",
                  "./Zahlen/an.wav"=>"an",
                  "./Zahlen/auf.wav"=>"auf",
                  "./Zahlen/aus.wav"=>"aus",
                  "./Zahlen/c0.wav"=>"Null",
                  "./Zahlen/c1000.wav"=>"tausend",
                  "./Zahlen/c100.wav"=>"hundert",
                  "./Zahlen/c10.wav"=>"zehn",
                  "./Zahlen/c11.wav"=>"elf",
                  "./Zahlen/c12.wav"=>"zwoelf",
                  "./Zahlen/c13.wav"=>"dreizehn",
                  "./Zahlen/c14.wav"=>"vierzehn",
                  "./Zahlen/c15.wav"=>"fuenfzehn",
                  "./Zahlen/c16.wav"=>"sechzehn",
                  "./Zahlen/c17.wav"=>"siebzehn",
                  "./Zahlen/c18.wav"=>"achtzehn",
                  "./Zahlen/c19.wav"=>"neunzehn",
                  "./Zahlen/c1.wav"=>"eins",
                  "./Zahlen/c20.wav"=>"zwanzig",
                  "./Zahlen/c2.wav"=>"zwei",
                  "./Zahlen/c30.wav"=>"dreissig",
                  "./Zahlen/c3.wav"=>"drei",
                  "./Zahlen/c40.wav"=>"vierzig",
                  "./Zahlen/c4.wav"=>"vier",
                  "./Zahlen/c50.wav"=>"fuenfzig",
                  "./Zahlen/c5.wav"=>"fuenf",
                  "./Zahlen/c60.wav"=>"sechzig",
                  "./Zahlen/c6.wav"=>"sechs",
                  "./Zahlen/c70.wav"=>"siebzig",
                  "./Zahlen/c7.wav"=>"sieben",
                  "./Zahlen/c80.wav"=>"achtzig",
                  "./Zahlen/c8.wav"=>"acht",
                  "./Zahlen/c90.wav"=>"neunzig",
                  "./Zahlen/c9.wav"=>"neun",
                  "./Zahlen/Grad.wav"=>"Grad",
                  "./Zahlen/hoch.wav"=>"hoch",
                  "./Zahlen/Komma.wav"=>"Komma",
                  "./Zahlen/minus.wav"=>"minus",
                  "./Zahlen/o0.wav"=>"Nullter",
                  "./Zahlen/o1000.wav"=>"Tausendster",
                  "./Zahlen/o100.wav"=>"Hundertster",
                  "./Zahlen/o10.wav"=>"Zehnter",
                  "./Zahlen/o11.wav"=>"Elfter",
                  "./Zahlen/o12.wav"=>"Zwoelfter",
                  "./Zahlen/o13.wav"=>"Dreizehnter",
                  "./Zahlen/o14.wav"=>"Vierzehnter",
                  "./Zahlen/o15.wav"=>"Fuenfzehnter",
                  "./Zahlen/o16.wav"=>"Sechzehnter",
                  "./Zahlen/o17.wav"=>"Siebzehnter",
                  "./Zahlen/o18.wav"=>"Achtzehnter",
                  "./Zahlen/o19.wav"=>"Neunzehnter",
                  "./Zahlen/o1.wav"=>"Erster",
                  "./Zahlen/o20.wav"=>"Zwanzigster",
                  "./Zahlen/o2.wav"=>"Zweiter",
                  "./Zahlen/o30.wav"=>"Dreissigster",
                  "./Zahlen/o3.wav"=>"Dritter",
                  "./Zahlen/o40.wav"=>"Vierzigster",
                  "./Zahlen/o4.wav"=>"Vierter",
                  "./Zahlen/o50.wav"=>"Fuenfzigster",
                  "./Zahlen/o5.wav"=>"Fuenfter",
                  "./Zahlen/o60.wav"=>"Sechzigster",
                  "./Zahlen/o6.wav"=>"Sechster",
                  "./Zahlen/o70.wav"=>"Siebzigster",
                  "./Zahlen/o7.wav"=>"Siebter",
                  "./Zahlen/o80.wav"=>"Achtzigster",
                  "./Zahlen/o8.wav"=>"Achter",
                  "./Zahlen/o90.wav"=>"Neunzigster",
                  "./Zahlen/o9.wav"=>"Neunter",
                  "./Zahlen/Prozent.wav"=>"Prozent",
                  "./Zahlen/runter.wav"=>"runter",
                  "./Zahlen/u1.wav"=>"ein",
                  "./Zahlen/u2.wav"=>"zwei",
                  "./Zahlen/u3.wav"=>"drei",
                  "./Zahlen/u4.wav"=>"vier",
                  "./Zahlen/u5.wav"=>"fuenf",
                  "./Zahlen/u6.wav"=>"sechs",
                  "./Zahlen/u7.wav"=>"sieben",
                  "./Zahlen/u8.wav"=>"acht",
                  "./Zahlen/u9.wav"=>"neun",
                  "./Zahlen/uc20.wav"=>"und zwanzig",
                  "./Zahlen/uc30.wav"=>"und dreissig",
                  "./Zahlen/uc40.wav"=>"und vierzig",
                  "./Zahlen/uc50.wav"=>"und fuenfzig",
                  "./Zahlen/uc60.wav"=>"und sechzig",
                  "./Zahlen/uc70.wav"=>"und siebzig",
                  "./Zahlen/uc80.wav"=>"und achtzig",
                  "./Zahlen/uc90.wav"=>"und neunzig",
                  "./Zahlen/uo20.wav"=>"und zwanzigster",
                  "./Zahlen/uo30.wav"=>"und dreissigster",
                  "./Zahlen/uo40.wav"=>"und vierzigster",
                  "./Zahlen/uo50.wav"=>"und fuenfzigster",
                  "./Zahlen/uo60.wav"=>"und sechzigster",
                  "./Zahlen/uo70.wav"=>"und siebzigster",
                  "./Zahlen/uo80.wav"=>"und achtzigster",
                  "./Zahlen/uo90.wav"=>"und neunzigster",
                  "./Zahlen/zu.wav"=>"zu",
                  "./Zeiten/Minuten.wav"=>"Minuten",
                  "./Zeiten/Sekunden.wav"=>"Sekunden",
                  "./Zeiten/Stunden.wav"=>"Stunden",
                  "./Zeiten/Uhr.wav"=>"Uhr");
              
              for my $f (keys %text)
              {
                  my $t=$text{$f};
                  my $p=$f; $p=~s!/[^/]*$!!;
                  my $m=$f; $m=~s!\.wav$!.mpg!;
                  system "mkdir", "-p", $p;
                  system "wget", "http://translate.google.de/translate_tts?ie=UTF-8&q=$t", "--keep-session-cookies", "--user-agent=sag_ich_nicht", "-O", $m;
                  system "mpg123", "-w", $f, $m;
              # Wenn sox installiert ist (ist es auf meinem WG nicht, ich mache das 
              # auf einem anderen Rechner)
              #    system "rm", "-f", "tmp.wav", "tmp2.wav";
              #    system "sox", $f, "tmp.wav", "silence", "1", "0.001", "0.2%", "1", "0.3", "0.1%";
              #    system "sox", "tmp.wav", "tmp2.wav", "tempo", "1.5";
              #    system "mv", "tmp2.wav", $f;
                  system "rm", $m;
              }

              Kommentar


                #22
                Das geht ja zackig bei dir
                Super!

                Und nochmals ein Dankeschön!


                ***censored***

                Kommentar


                  #23
                  We aim to please :-)
                  meiner Frau gefällt Miss Google übrigens auch besser.
                  VG Fry

                  Kommentar


                    #24
                    Ich empfehle dir übrigens, mittels sox die Pausen rauszuschneiden und das Sprechtempo zu erhöhen. Leider läuft sox nicht auf dem WG.
                    VG, Fry

                    Kommentar


                      #25
                      Oje. Endlich Ne Möglichkeit die gute zu beschleunigen.
                      Geht das auch nicht zum nachinstallieren? Braucht dass zuviel rechen power??
                      Ich hätte noch Linux mint und ubuntu.

                      Gruß

                      ***censored***

                      Kommentar


                        #26
                        Unter Ubuntu und Mint kein Problem: "sudo apt-get install sox".
                        Danach müsste das Skript ohne die #'s laufen.
                        VG, Fry

                        Kommentar


                          #27
                          Hallo,

                          also auch aufm Wiregate:
                          apt-get install sox

                          funktioniert.

                          Ich hab das Plugin "verunstaltet" und wollte von vorne Anfangen. Also hab ich alles gelöscht (Ansagen.pl und Ansagen.conf). Dann die audio Files konvertiert.
                          Dass einzigste was ich jetzt bekomme ist ein log eintrag (Plugin log und Ansagen.log.)
                          Leider bekomme ich keine Audio ausgabe mehr... wenn ich manuell eine wav abspiele gehts.

                          Wie kann ich dass den am besten debuggen?

                          Die einzigsten änderungen die ich gemacht hab:
                          - aplay -> paplay
                          - channels angepasst

                          Gruß

                          Edit: Achja weiter log einträge:
                          pakuech=>1
                          und wenn ich an die entsprechende GA ein Telegramm schicke, bekomm ich auch ein log eintrag. d.h. subscriben tut es auch richtig.

                          Die wavs werden auch richtig zusammengestellt als: Zahlen/blabl.wav und ./Die aktuelle Aussentemperatur betraegt.wav

                          Problem gefunden: paplay kann nur eine Datei abspielen. Dein Script gibt ja mehrere Dateien hintereinander. Werde auf mp3 und mpg123 umstellen

                          Kommentar


                            #28
                            Und nochmal.

                            Habe den größten Teil in mp3 umgewandelt (erst in wav, dann abspiel geschw. erhöht, dann wieder mp3)
                            Das einzige ist, dass die GA Namen in @list mit "./$name" angegeben sind.
                            Der mpd möchte aber nur "$name". Und ich finde nicht wo du dass "./" dazu baust. Bei Zahlen ist es ja auch "Zahlen/an.mp3".
                            Bis jetzt spricht sie nur die Zahlen. Der GA Name fehlt.


                            Zeilen nummer würde genügen . Vielen Dank!

                            Gruß

                            Kommentar


                              #29
                              In meinem Skript wird in der Subroutine bestmatch die Datei gesucht, die am besten aufs Muster passt. Dazu wird vorher das Verzeichnis /var/lib/Ansagen/Sprache komplett nach WAV-Dateien durchsucht; hierzu wird GNU find aufgerufen. find gibt alles mit "./" aus.

                              Du kannst die "./" aber leicht entfernen, in etwa so:

                              map s/^\.\///, @playlist;

                              VG, Fry

                              Kommentar


                                #30
                                Eigenartigerweise funktionierte bei mir apt-get install sox nicht, aber die Installation über den Webmin hat geklappt.
                                Nun gut...
                                VG, Fry

                                Kommentar

                                Lädt...
                                X