Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

Intruder1956

#810
hallo,
ich habe es jetzt mal versucht nachzubauen wie @Otto auch
Habe einen Raspi 3 mit aktuellem Jessie lite vom 21.06.17 gerade neu installiert
Fhem installiert, aber noch nichts in Fhem eingegeben außer "update"

also beides ganz frisch.
bis Schritt 10 bin ich auch und bekomme die gleiche Meldung wie @Otto
pacmd set-sink-volume 0 65535
Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst.


bei Punkt 11 bekomme ich aber trotzdem über die Klinkenbuchse und einen Lautsprecher
paplay /usr/share/sounds/alsa/Front_Left.wav
die Ansage des Mädel "Left"
ich werde jetzt bei Punkt 12 weitermachen  ;)

Muss ich denn anschl. oben den Mplayer bis zum define myTTS auch installieren ??? <erl. ist installiert

Edit: bin jetzt bis Punkt 13 gekommen
Damit sollte die Einrichtung abgeschlossen sein und wir können überprüfen, ob wir etwas über Bluetooth ausgeben können

mplayer -ao pulse http://stream01.iloveradio.de/iloveradio1.mp3


der Stream wird im Lautsprecher ausgegeben.
dann habe ich in Fhem

define TTS Text2Speech default

angelegt und bei set tts kommt nix an, ich denke da fehlt noch was

Nach einem "sudo reboot" connectet der Lautsprecher nicht automatisch

da müssen wir noch dran arbeiten  ;) ;) ;)

gruß Werner


Nach einem "sudo reboot" ist der Lautsprecher weg



Gruß Werner



Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

mumpitzstuff

#811
Erst einmal Danke das es jemand versucht hat nachzuvollziehen!


  • Weshalb die python-gobject Pakete installiert werden müssen oder ob das gar nichzt notwendig ist, kann ich leider nicht sagen. Den Teil habe ich einfach stur aus der Anleitung, die auch im Wiki verlinkt ist, (ganz unten) entnommen
  • Ich denke nicht, dass man die Rechte für fhem setzen muss. Ich habe zusätzlich (so wie bei der Text2Speech Installation beschrieben) dem mplayer admin rechte eingeräumt. Da fhem bzw. text2speech den mplayer aufruft, sollte das so ausreichend sein.
  • Mir war nicht ganz klar, inwieweit das dann noch relevant ist und ich wollte als Neulink nicht gleich fremde Inhalte löschen. Deshalb habe ich erst einmal (alt) dran geschrieben.
  • Die Ausgabe im Log zu PulseAudio sieht bei mir aktuell auch so aus. Ich habe ehrlich gesagt noch nicht weiter nach links und rechts geschaut, weil ich einfach froh war, dass überhaupt was lief nach 3 Tagen. Ich schau aber noch mal im Internet nach, ob man das irgwendwie auch anders hinbekommt.
  • Versucht es mal mit einem reboot und schaut dann, ob PulseAudio dann noch läuft und versucht es noch mal. In den Kommentaren der Quelle wo ich viele der Infos her habe, stand dazu aber auch was drin. Ich suche heute noch mal und poste dann eine Alternative dazu. Ich habe einen Raspberry 2B+ glaube ich und keinen 3. Vielleicht gibts da Unterschiede.
  • Versucht auch mal die Befehle aus 10 und 11 mit sudo abzusetzen. Vielleicht geht das ja.

Ich kontrolliere heute Abend aber noch mal sicherheitshalber alle Kommandos aus dem Wiki, vielleicht ist irgendwo doch noch ein Fehler drin. Aber wenn PulseAudio startet ist das schon mal 90% der Miete! Das hat mich 2,5 Tage gekostet...

Zitat von: Otto123 am 26 Juni 2017, 11:50:01
Hi,

ich habe schon so viel Zeit in den BT Mist investiert und mir geschworen: ich streame Musik darüber und telefoniere im Auto darüber - aber linux und BT geht einfach nicht zusammen.
Ich will mich doch nochmal hinsetzen und deine Anleitung nachvollziehen.  :D

Beim durchlesen ergeben sich diese Fragen:

- Wozu braucht man die Pakete python-gobject python-gobject-2 ?
- Du machst in Punkt 3 die Rechte Anpassung für Pi, das muss doch auch für User fhem passieren!?
Allgemeine Frage:
Sollte der alte Folgeabschnitt nach deinem (ich denke Original von Tobias) nicht einfach gestrichen werden? Ich hatte da schon mal die Randbemerkungen dran gemacht.
Ich weiß allerdings nicht genau, wie man diese Information händeln soll. Ich befürchte, wie mit vielen Dingen, müsste man exakt die Systemvoraussetzungen hinschreiben, denn mit dem nächsten Release eines Treibers/ Kernels/ Systems ist alles grundlegend anders.  :-\ :'(

So, ich arbeite Schritt für Schritt ab mal sehen wie weit ich komme.

Edit:
Nur als Hinweis: Schritt 8 status pulseaudio ist in Ordnung -> läuft  auf den ersten Blick - aber???● pulseaudio.service - PulseAudio Sound System
   Loaded: loaded (/etc/systemd/system/pulseaudio.service; enabled)
   Active: active (running) since Mo 2017-06-26 12:11:00 CEST; 8min ago
Main PID: 424 (pulseaudio)
   CGroup: /system.slice/pulseaudio.service
           └─424 /usr/bin/pulseaudio

Jun 26 12:11:00 raspib2W pulseaudio[424]: N: [pulseaudio] main.c: System-Modus aktiv, Exit-Idle-Time gezwungenermaßen deaktiviert!
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] main.c: OK, nun wird PA im System Mode betrieben. Vorsicht, dies sollte man nicht tun.
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] main.c: Bei Nichtbeachtung, selber Schuld wenn Dinge nicht funktionieren.
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] main.c: Für eine Erklärung warum System Mode eine schlechte Idee ist, bitte http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode lesen
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] authkey.c: Failed to open cookie file '/var/run/pulse/.config/pulse/cookie': Datei oder Verzeichnis nicht gefunden
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] authkey.c: Failed to load authorization key '/var/run/pulse/.config/pulse/cookie': Datei oder Verzeichnis nicht gefunden
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] authkey.c: Failed to open cookie file '/var/run/pulse/.pulse-cookie': Datei oder Verzeichnis nicht gefunden
Jun 26 12:11:00 raspib2W pulseaudio[424]: W: [pulseaudio] authkey.c: Failed to load authorization key '/var/run/pulse/.pulse-cookie': Datei oder Verzeichnis nicht gefunden
Jun 26 12:11:00 raspib2W pulseaudio[424]: E: [pulseaudio] bluez4-util.c: org.bluez.Manager.GetProperties() failed: org.freedesktop.DBus.Error.UnknownMethod: Method "GetProperties" with signature "" on interface "org.bluez.Manager" doesn't exist
Jun 26 12:11:00 raspib2W systemd[1]: Started PulseAudio Sound System.



Bei Schritt 10 bin ich gestorben -> pacmd set-sink-volume 0 65535 Ausgabe: Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst.
Schritt 11 geht dann auch nicht -> Abbruch


:-[
Gruß Otto

mumpitzstuff

Ich habe mplayer alle Rechte eingeräumt, wie es unter a.) beschrieben ist (ganz oben). Und dann natürlich das Device in FHEM anlegen mit:

define MyTTS Text2Speech default
attr MyTTS room Text2Speech
attr MyTTS TTS_UseMP3Wrap 1


Wenn du was hörst ist das schon mal sehr sehr gut!!! Das Bluetooth Zeugs hat bei mir auf Anhieb geklappt. Pass aber bitte auf, das du nicht lepresenced oder sowas in der Art auf den BT Dongle laufen hast, das wird nicht klappen.

Zitat von: Intruder1956 am 26 Juni 2017, 16:27:53
hallo,
ich habe es jetzt mal versucht nachzubauen wie @Otto auch
Habe einen Raspi 3 mit aktuellem Jessie lite vom 21.06.17 gerade neu installiert
Fhem installiert, aber noch nichts in Fhem eingegeben außer "update"

also beides ganz frisch.
bis Schritt 10 bin ich auch und bekomme die gleiche Meldung wie @Otto
pacmd set-sink-volume 0 65535
Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst.


bei Punkt 11 bekomme ich aber trotzdem über die Klinkenbuchse und einen Lautsprecher
paplay /usr/share/sounds/alsa/Front_Left.wav
die Ansage des Mädel "Left"
ich werde jetzt bei Punkt 12 weitermachen  ;)

Muss ich denn anschl. oben den Mplayer bis zum define myTTS auch installieren ???

Gruß Werner

mumpitzstuff

Eventuelle Lösungen für Schritte 10 und 11:

http://www.forum-raspberrypi.de/Thread-tutorial-bluetooth-audio-streaming-mit-a2dp-raspbian-jessie?pid=221787#pid221787

oder

pulseaudio -D

eingeben und es noch einmal probieren.

Wenn das zweite funktioniert, dann könnt ihr mit "pulseaudio -D" über exit 0 in der Datei eintragen:
sudo nano /etc/rc.local

Falls die Musik irgendwie stottern sollte, hilft eventuell ein Kernel Update (steht jedenfalls so in den Kommentaren der Quelle drin). Schuld können z.B. veraltete Treiber sein.

Intruder1956

es läuft  ;) :D

Der Lautsprecher musste nur 2 x kurz auf die ON/OFF Taste geklickt werden, dann connectet er sich automatisch wieder.

Dann habe ich den Lautsprecher ausgeschaltet ein "sudo reboot" durchgeführt, dann Lautspecher an und er connectet automatisch.

Text2Speech läuft  :D :D

Bei aus und wieder einschalten des Lautsprecher klappt es immer noch und er connectet wieder automatisch

Wie geil, endlich  ;) ;)

Danke Danke

Gruß Werner

Danke, danke
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

mumpitzstuff

Oh schön. Das freut mich zu hören. Jetzt muss man nur noch einen günstigen Bluetooth Lautsprecher finden (so um 50€ wäre super), der einen guten Klang hat und sich per Bluetooth aus dem Standby wecken lässt, dann kann man sich die völlig überteuerten Sonos Systeme usw. echt sparen.

Otto123

Ich versuche es morgen noch einmal, mit einem völlig frischen System.
Das mit den Rechten ist mir noch unklar, warum braucht pi dann diese Rechte? Na egal, da denke ich nochmal drüber nach.
Das Du die alte Anleitung zu BT nicht gleich gelöscht hast ist schon richtig  :D die Frage wollte ich eher perspektivisch so in die "Runde" stellen.

Gerade bei Textansagen, wird es immer ein Problem sein, dass BT erst verbinden muss. Sonos würde ich auch nicht für Ansagen anschaffen, die erfüllen primär einen anderen Zweck.

Mal sehen was im zweiten Anlauf passiert  ;)

Schönen Abend
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

mumpitzstuff

Jetzt habe ich noch 3 Fragen:
1.) Kann ich irgendwie realisieren, das die Ansage erst leiser beginnt und erst nach 3s die Lautstärke auf 100% setzt?
2.) Muss ich darauf achten das 100 Zeichen Limit einzuhalten oder kümmert sich das Modul darum.
3.) Gibt's eine einfache Möglichkeit bestimmte Dinge aus einem Reading zu ersetzen, bevor man es dem Modul übergibt? Z.b. °C in grad celsius?

@Otto: Ich helfe gern wenn ich irgendwie zur Lösungsfindung beitragen kann.

Ellert

1. Nicht, dass ich wüste.
2. Das Modul kümmert sich.
3. Ja, über eine Perl-Funktion oder RegexP.

Intruder1956

mein  Bluetooth Lautsprecher verfällt nicht in einen Sleepmodus, ist immer aktiv
Ist ein 13 Euro Teil vom Billigmarkt Action.
Gruß Werner
Zotac CI547 32GB RAM 500GB SSD,ESXI 6.5, VM-Fhem5.8, VM-ioBroker, Cul 868Mhz;Cul 433Mhz = Busware, LGW, HM-MOD-RPI-PCB, Uniroll, IT YCR-100 TMT2100,ITR-1500, LD382 mit Wifilight, ESA 2000 + SENSOR WZ SET,FS20 TFK, HM-Sec-SC, HM-CC-RT-DN,PCA301,

Otto123

Zitat von: mumpitzstuff am 26 Juni 2017, 23:09:30
3.) Gibt's eine einfache Möglichkeit bestimmte Dinge aus einem Reading zu ersetzen, bevor man es dem Modul übergibt? Z.b. °C in grad celsius?
Zur Antwort von Ellert fällt mir hier noch ein: am einfachsten userReadings definieren und Text2Speech Ausgabe mit "set magic"

Beispiel:attr SensorAussen userReadings tempText { my $val = (ReadingsVal("$name","temperature","Fehler"));; $val =~ s/\./ komma /;; return $val;;}

set MyTTS tts Es sind [SensorAussen:tempText] Grad)

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

mumpitzstuff

Okay stimmt. Daran habe ich nicht gedacht mit dem ersetzen. Sieht gut aus, werde ich probieren.

Ein fade in Effekt für die Sprachausgabe lässt sich vielleicht hiermit realisieren:

http://www.linuxquestions.org/questions/linux-software-2/mplayer-volume-increasing-4175524145/

Meine Frau fällt sonst jedes Mal vom Stuhl, wenn die Ansagen ertönen...

Otto123

Du kannst doch einen Jingel (MP3 Datei) vorneweg spielen, die entsprechend sanft darauf hinweist.
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

mumpitzstuff

Das mit dem Jingle hab ich jetzt so umgesetzt. Funktioniert aber nur, wenn man das mp3 file separat abspielt, sonst kackt das gesamte Modul ab. Jetzt habe ich aber noch andere Probleme. Manchmal wiederholt das Modul Textansagen und auch die Aussprache ist komisch.

defmod WETTER_ANSAGEN_DI DOIF ([06:30-10:00] && ([MOTION_WOHNZIMMER:state] eq "motion" && [?$SELF:B_ANSAGE] ne "done"))\
(\
  set TTS tts :axe.mp3:, set TTS tts Guten Morgen. Das Wetter ist heute [WETTER:ur_fc0_text], setreading $SELF B_ANSAGE done\
)\
DOELSEIF ([06:29])\
(\
  setreading $SELF B_ANSAGE wait\
)
attr WETTER_ANSAGEN_DI do always
attr WETTER_ANSAGEN_DI room WETTER

setstate WETTER_ANSAGEN_DI initialized
setstate WETTER_ANSAGEN_DI 2017-07-07 21:25:44 B_ANSAGE done
setstate WETTER_ANSAGEN_DI 2017-07-07 21:27:52 cmd 0
setstate WETTER_ANSAGEN_DI 2017-07-07 21:27:52 state initialized
setstate WETTER_ANSAGEN_DI 2017-07-07 21:27:52 timer_01_c01 08.07.2017 06:30:00
setstate WETTER_ANSAGEN_DI 2017-07-07 21:27:52 timer_02_c01 08.07.2017 10:00:00
setstate WETTER_ANSAGEN_DI 2017-07-07 21:27:52 timer_03_c02 08.07.2017 06:29:00


Im Reading steht folgender Text:
Zunächst Gewitter. Tiefsttemperatur 18  grad celsius.

Daraus macht das Modul jedes Mal "18 a euro Grad Celsius". Das nervt irgendwie. Wenn ich übrigens [WETTER:ur_fc0_text] direkt durch "18 Grad Celsius" ersetze, wird es richtig ausgesprochen. Hat jemand eine Idee was man noch machen könnte?

Ellert

Ich vermute, dass eines der Zeichen nach 18 kein echtes Leerzeichen ist und daher wird der Zeichencode vorgelesen.
Wenn das der Fall ist, müsstest Du das Zeichen herausfiltern.