Neues Modul: Text2Speech

Begonnen von Tobias, 07 Januar 2014, 12:57:23

Vorheriges Thema - Nächstes Thema

carzl

Ich habe einen anderen putzigen Effekt: ein set FhemSpricht tts é erzeugt bei mir eine Sprachausgabe "aurheberrecht". Ist das bei Euch auch so? Entsprechend ist dann z.B. auch meine Ansage bei eingehenden Anrufen, z.B. wenn mein Kumpel André anruft  ;D   Im Browser hingegen funktioniert http://translate.google.com/translate_tts?tl=de&q=é ohne diesen Effekt...
Fhem 6.0 auf RPi3: CUL, JeeLink, Hue Bridge v2, HarmonyHub, Fritzbox7590+7412, 6x FHT80b, 2x FS20S6A, FS20S4A, S300TH, 4x FritzDECT200/210, 4x TX29DTH, 4x Hue LightStripe, 5x Hue Smart Plug, Sonos mit 5x Play:1, Beam und Sub; 3x Lenovo Tab M10 mit FTUI

hexenmeister

Zitat von: carzl am 20 Juli 2015, 17:24:28
Ich habe einen anderen putzigen Effekt: ein set FhemSpricht tts é erzeugt bei mir eine Sprachausgabe "aurheberrecht". Ist das bei Euch auch so?
Ja.

Otto123

ist bei mir auch so  :o

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

carzl

Ok, also kein Bug in meiner Installation. Muss ich meinen Kumpel halt von André nach Andree umbenennen, dann klappt auch die Ansage. Wobei ich das eigentlich nicht wollte, denn Fhem holt sich den Namen von der Fritte, die von den Google-Kontakten und die werden von Outlook via gsyncit betankt; d.h. ich muss den Namen in meinem Produktiv-Outlook verfälschen, damit Fhem richtig spricht. Naja gibt schlimmeres  :D
Fhem 6.0 auf RPi3: CUL, JeeLink, Hue Bridge v2, HarmonyHub, Fritzbox7590+7412, 6x FHT80b, 2x FS20S6A, FS20S4A, S300TH, 4x FritzDECT200/210, 4x TX29DTH, 4x Hue LightStripe, 5x Hue Smart Plug, Sonos mit 5x Play:1, Beam und Sub; 3x Lenovo Tab M10 mit FTUI

marvin78

Ich habe mir deshalb eine eigene TTS Funktion geschrieben, die zum einen, je nach Umstand aussucht, welches TTS Gerät überhaupt verwendet wird (ich muss so auch nicht jedes einzeln ansteuern) und auch solche Ersetzungen vornimmt "é" nach "ee", "ä" nach "ae" etc. Um dann eine Sprachausgabe zu machen, rufe ich dann setTTS(ARGUMENTE) auf und den Rest macht die sub. Somit muss ich keine Abstricher bei der Benennung von Devices machen und habe eine flexible und zentrale Ansteuerung der TTS Devices.

Otto123

Ich denke in dem Text2Speech Modul ist so eine Möglichkeit Ersetzung auch drin.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

marvin78

Das TTS Modul ersetzt gewisse Dinge, ja. Aber das ist nicht flexibel konfigurierbar (zumindest laut commandref nicht).

TeeVau

Zitat von: Otto123 am 21 Juli 2015, 14:19:34
Ich denke in dem Text2Speech Modul ist so eine Möglichkeit Ersetzung auch drin.

Gruß Otto

So halb. Das Modul ersetzt in dem String lediglich die Umlaute und das ß.
FHEM 5.8 dev (virtualisiert) / FBF 7390 (CUL 868MHz V 1.51 / panStick (AVR1))
FS20: fs20di,fs20pira,fs20sm8,fs20st2,fs20tfk,fs20ue1,fs20ws1
panStamp (AVR1): RGB Multi von ext23, 1W-DSxxxx, I/O Sketch, Spritzpumpe
Multimedia: Panasonic TV (VIERA), Kodi, Yamaha RX-V781, LMS
Sonstiges: XiaomiFlowerSen

hexenmeister

Zitat von: TeeVau am 21 Juli 2015, 15:20:35
So halb. Das Modul ersetzt in dem String lediglich die Umlaute und das ß.
... was bei meiner Installation aus mir unerklärlichen Gründen nicht richtig funktioniert. Die Kodierung der Datei scheint auf meinem Cubietruck nicht zu passen. Die Umlaute werden zu sonderbaren Sonderzeichen ;)

marvin78

Jep. Das mit der Kodierung kann auch bei unterschiedlichen Clientgeräten Probleme machen. Daher auch die Umsetzung in einer eigenen sub. Das funktioniert interessanterweise immer.

Otto123

Zitat von: marvin78 am 21 Juli 2015, 19:34:27
Daher auch die Umsetzung in einer eigenen sub.
Hi Marvin

kannst Du uns eventuell teilhaben lassen?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

marvin78

Das ist sehr individuell. Ich unterlasse sowas eigentlich, da ich weiß, dass hier viele nur stur Copy & Paste machen und nicht darüber nachdenken, was sie da tun.

Hier ist auch eine rudimentäre Behandlung der Lautstärke enthalten, falls gerade Telefonate geführt werden. Unkommentiert und noch aus meiner Perl Anfangszeit (da könnte man vieles Eleganter lösen):

sub setTTS($;$) {
  my ($say,$dv)=@_;
  $dv="all" unless defined($dv);
  $dv="all" if (defined($dv) && $dv eq "");
  my @dvs=();
  @dvs=split(":",$dv) if (defined($dv) && $dv ne "all");
  my @devices=();
  my $playStatus;
  my $volume=100;
  $say =~ s/ä/ae/g;
  $say =~ s/ö/oe/g;
  $say =~ s/ü/ue/g;
  $say =~ s/Ä/Ae/g;
  $say =~ s/Ö/Oe/g;
  $say =~ s/Ü/Ue/g;
  $say =~ s/ß/ss/g;
  $say =~ s/é/ee/g;
  $say =~ s/è/ae/g;
      @devices=devspec2array("sType=TTS");
      my $dev="";
      my $ttsDev="F";
      my $ttsCmd="F";
      foreach(@devices) {
          $dev=$_;
            if (Value($dev) eq "on" || Value($dev) eq "present") {
                $ttsDev=AttrVal($dev,'TTSDevice', 'F');
            $ttsCmd=AttrVal($dev,'TTSCmd','F');
        my $fritzAction=ReadingsVal("EG.bu.NN.FritzBoxCall.dis","event","disconnect");
        my $fritzDevice="-";
        if ($ttsDev eq "TTS") {
          if ($fritzAction eq "connect") {
              $fritzDevice=ReadingsVal("EG.bu.NN.FritzBoxCall.dis","device",0);
          }
          $volume=InternalVal($ttsDev,"VOLUME",80);
          fhem ("set $ttsDev volume 10") if ($fritzDevice eq "buero");
        }
        if ($ttsDev eq "WzTTS") {
          if ($fritzAction eq "connect") {
              $fritzDevice=ReadingsVal("EG.bu.NN.FritzBoxCall.dis","device",0);
          }
          $volume=InternalVal($ttsDev,"VOLUME",80);
          fhem ("set $ttsDev volume 10") if ($fritzDevice eq "privat");
        }
        $playStatus="stopped";
        if ($ttsCmd eq "talk") {
            $playStatus=ReadingsVal($ttsDev,"playStatus","playing");
              $volume=ReadingsVal($ttsDev,"volume",80);
              fhem ("set $ttsDev volume 80");
        }
            if ($ttsDev ne 'F' && $ttsCmd ne 'F' && ($dv eq "all" || inArray(\@dvs,$ttsDev))) {
            Log 3, "TTS: $ttsDev - $say - $ttsDev - $ttsCmd - "."set $ttsDev $ttsCmd $say";
          $say =~ s/ /-/g if ($ttsCmd eq "power");
                fhem("set $ttsDev $ttsCmd $say");
         
            }
          fhem ("set $ttsDev volume $volume") if (($ttsCmd eq "talk" && $playStatus ne "playing") || $ttsDev eq "TTS");
        }
      }
}

Otto123

Danke Marvin, ich behandle es vorsichtig. 8)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

zwehn

#403
Zitat von: Pfriemler am 20 Juli 2015, 13:32:47
Moinsen,

vor gefühlt hunderte Beiträgen schrieb ich über Probleme mit Blockaden durch Text-2-Speech. Aufm Raspi 2 läuft die unverändert übernommene Installation seit vielen Wochen störungsfrei.

Jetzt gibt es aber was neues:
Seit kurzem fällt mir ein "Nachlaut" bei der Ausgabe auf, im Stil: "Alarmanlage ist jetzt aus. ... A"

Ist das schon bekannt oder gibt es eine Idee zum Weiterforschen?
Hallo, das Problem hatte ich auch. Ich musste bei mir den übergebenen String ändern. Ich hatte zuvor alles in ' hochkomma und habe diese gelöscht und schon gehts wieder.
Gruss zwehn
Fhem auf Proxmox VM mit MSI Cubi N8GL mit N5000: HM-USB, HM-Lan, Cul 868, Cul 433, Selbstbau CUL868MHz für Wireless M-Bus, RFXtrx; FS20, HomeMatic Rolladensteuerung, Somfy Markisensteuerung, TextToSpeech, TFA Wetter, Universalsensor Innen/Aussen, Feinstaubsensor. Div Arduino und Esp Easy projekte.

Navigator

#404
Hmmm... ohne eigenes zutun in Form von Updates oder ähnlichem funktioniert meine Sprachausgabe auf 2 FHEM Instanzen nicht mehr.
PERL WARNING: Use of uninitialized value in addition (+) at ./FHEM/98_Text2Speech.pm line 545.

Einer FHEM Installation habe ich jetzt mal ein Update untergejubelt, trotzdem ändert sich daran nichts. Bin ich der einzige mit diesem Problem?

Update: na Hoppla...scheinbar ein Google Problem, die Fehlermeldung ist diesbezüglich etwas irretierend, vielleicht könnte man eine Meldung einbauen wenn der Google Translate Service nicht erreichbar war oder die Übersetzung fehlgeschlagen ist.

Update2: seltsam...offensichtlich werden die Anfragen vom Modul an Google geblockt. Das passiert auf zwei Fhem Systemen, die in voneinander getrennten Netzwerken agieren. Der Link, der vom Modul aufgerufen wird, führt zu folgender Seite.
Kann mir irgendwie nicht vorstellen, daß beide Netzwerke auf einmal mit Malware oder ähnlichem infiziert sein sollen.

Gruß aus Sachsen. FHEM auf Cubietruck. Vormals EZControl XS1 User.