Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

svenr

Hallo,

das Modul funktioniert gut. Ich habe jedoch ein Problem über Bluetooth (fhem läuft auf einem raspberry pi).

Die erzeugten mp3-Dateien werden nicht ausgegeben (sind nicht zu hören). Evtl. liegt es daran, dass diese in Mono sind? Am PC wird der Ton ausgegeben.
Eine andere mp3-Datei (Stereo) wird über Bluetooth am raspberry ausgegeben. Getestet mit identischen Befehlen auf der Konsole.
Wenn ich Lautsprecher direkt an den raspberry anschließe, höre ich den Ton. Die Mono-Datei scheint also nur Probleme per Bluetooth zu haben.

Vielleicht hat jemand einen Tipp für mich, liegt sicher an der ALSA-Konfiguration. Danke.

Tobias

also ich nutze das Modul  mit Google und Ausgabe per bluetooth -> kein problem....
Mach mal einen längeren Satz... vieleich ist dein Satz zu kurz? BEi mir wird nämlich immer dieletzte Sekunde bei Ausgabe per BT abgeschnitten.. Deshalb das Attr TTS_SentenceAppendix

Was sagt verbose auf 5?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Rince

Hi Tobias,
darf ich einen Vorschlag machen?

Die Geschichte mit der Lautstärke finde ich sehr gut. Wäre es möglich,  die Lautstärke alternativ per attr setzen zu können?


Grund:
Wenn Sprachausgaben von 22 Uhr bis 6 Uhr kommen, fände ich es toll, wenn diese leiser sind.

Wenn es ein attr für die Lautstärke gibt, muss man nur mit einem at *22:00:00  set .... die Lautstärke neu definieren.

Ansonsten muss man in jedem Sprachausgabenotify noch diese Unterscheidung treffen.


Meinst du, das geht? (Oder geht das so auch elegant und ich sehe blos den Weg nicht?)

Besten Dank
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

svenr

#48
Zitat von: Tobias am 19 Januar 2014, 06:48:18
also ich nutze das Modul  mit Google und Ausgabe per bluetooth -> kein problem....
Mach mal einen längeren Satz... vieleich ist dein Satz zu kurz? BEi mir wird nämlich immer dieletzte Sekunde bei Ausgabe per BT abgeschnitten.. Deshalb das Attr TTS_SentenceAppendix

Was sagt verbose auf 5?

Hi Tobias,
ich habe einen längeren Satz probiert, auch mit TTS_SentenceAppendix. Leider ohne Erfolg. Die erzeugte Datei wird wie gesagt in iTunes korrekt wiedergegeben. Hier die Log-Ausgabe:

2014.01.19 18:51:49.842 4: Text2Speech: Bearbeite per MP3Wrap jetzt den Text: Das ist ein langer Satz, der ueber Bluetooth ausgegeben werden soll.
2014.01.19 18:51:49.856 4: Text2Speech: mp3wrap cache/4b9f11bfd29011e838d4f291e84b98f7.mp3 cache/f58135e4ec5738b50622227c4687a8b9.mp3 cache/silence.mp3
2014.01.19 18:51:50.103 4: Text2Speech:sudo /usr/bin/mplayer -ao alsa:device=bluetooth  -nolirc -noconsolecontrols cache/4b9f11bfd29011e838d4f291e84b98f7_MP3WRAP.mp3

Im Anhang meine Einstellungen:

Wenn ich eine Musik-MP3 mit dem Befehl wie oben aufrufe, wird diese korrekt ausgegeben. Liegt dann vermutlich eher an einer Systemeinstellung (debian).
Danke!
Sven

MrBlue

Leider weiterhin kein Erfolg, auch keine Logs...
Ein Aufruf funktioniert über die Kommandozeile, wie auch in FHEM. So dürften die Berechtigungen und die Hardware-Konfiguration korrekt sein.   

Tobias

#50
Zitat von: Rince am 19 Januar 2014, 08:08:37
Wenn es ein attr für die Lautstärke gibt, muss man nur mit einem at *22:00:00  set .... die Lautstärke neu definieren.
Ansonsten muss man in jedem Sprachausgabenotify noch diese Unterscheidung treffen.
Meinst du, das geht? (Oder geht das so auch elegant und ich sehe blos den Weg nicht?)

Ich würde sagen: Weg nicht gesehen? Das klappt doch... genaus deswegen ist ein "set <myTTS> volume 50" verfügbar... damit kann dynamisch geregelt werden. zb. per notify

@SvenR: das muss irgendwie klappen. mein Client ist auch ein Raspi...
@MrBlue: irgendetwas ist bei dir faul.... mir gehen die Ideen aus.... Du schaust auch in das korrekte fhem-Logfile?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

MrBlue

Ich weiss auch nicht mehr weiter...  :-\ Neuer Versuch.

Im TTS-Log "2014-01-20_12:54:30 TTS0 tts Das ist ein Test."

Im FHEM-Log:
2014.01.20 12:54:30 5: Cmd: >set TTS0 tts Das ist ein Test.<
2014.01.20 12:54:30 5: Triggering TTS0 (1 changes)
2014.01.20 12:54:30 5: Notify loop for TTS0 tts Das ist ein Test.
2014.01.20 12:54:31 4: eventTypes: Text2Speech TTS0 tts Das ist ein Test. -> tts Das ist ein Test.

Tobias

Da muss etwas falsch sein. Im Screenshot von dir Steht "MyTTS", hier aber steht etwas von TTS0... Britte prüfe das mal..
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

MrBlue

Sorry. Das passt schon mit TTS0. Hab's umbenannt.

eppi

@MrBlue:
Ich habe den MPlayer bereits vor dem Module TTS von Tobias zum abspielen von mp3 Files aus FHEM genutzt. Damit FHEM die Berechtigung dafür hatte, musste ich dem User fhem in die Gruppe Audio eintragen.

sudo gpasswd -a fhem audio
Danach den Raspi rebooten...

Vielleicht hilfts ja  ;)
Gruss Dani

MrBlue

Schön wärs, wenn so einfach die Lösung. Der User ist in der Gruppe. Direkte Aufrufe von mplayer und espeak funktionieren über FHEM. Nur leider nicht über das Modul...

MrBlue

Folgende Aufrufe getestet, die auch erfolgreich sind:

#DUMMY SOUNDCHECK
define SoundCH dummy
attr SoundCH group Sound.Control
attr SoundCH room Control
attr SoundCH setList state:espeak,mplayer,speaker-test
attr SoundCH webCmd state
define SoundCH_PAIR notify SoundCH {\
   if ("$EVENT" eq "espeak") {\
      `/usr/bin/espeak -v mb-de7 -a 150 -s 100 'Das ist ein Test'`;;\
   }\
   elsif ( "$EVENT" eq "mplayer") {\
      `/usr/bin/mplayer -ao alsa:device=hw=0.0 -nolirc -noconsolecontrols 'http://translate.google.com/translate_tts?tl=de&q=Das ist ein Test.'`;;\
   }\
   elsif ( "$EVENT" eq "speaker-test") {\
      `/usr/bin/speaker-test -t sine -f 440 -c 2 -s 1`;;\
   }\
}

KlausBüker

Hi Tobias,

vielen Dank für das neue Modu. Habe es bei mir "eingebaut". Jedoch nach einmaliger Lautsprecher-Ansage wird kein "set MyTTS ttx hallo" mehr ausgeführt. Erst ein rereadcfg bringt das Modul wieder zum Arbeiten. Vielleicht hast Du eine Idee?

Auf meiner Synology NAS habe ich kein sudo, habe also wie folgt konfiguriert:
define MyTTS Text2Speech none
attr MyTTS TTS_MplayerCall /var/packages/AudioStation/target/bin/mplayer
attr MyTTS verbose 5

Gruß
Klaus

Hier das Log (reverse)
Can't use an undefined value as a symbol reference at /volumeUSB1/usbshare1-1/fhem/FHEM/Blocking.pm line 126.

2014.01.21 15:09:35 1: CallBlockingFn: Can't connect to localhost:
Use of uninitialized value in concatenation (.) or string at /volumeUSB1/usbshare1-1/fhem/FHEM/Blocking.pm line 109.
Exiting... (End of file)

[AO_ALSA] Unable to find simple control 'Master',0.

A:  -0.0 (unknown) of 0.7 (00.7) ??,?%                                         
A:   0.2 (00.2) of 0.7 (00.7)  1.9%                                             
A:   0.2 (00.2) of 0.7 (00.7)  1.9%                                             
A:   0.3 (00.2) of 0.7 (00.7)  1.9%                                             
A:   0.3 (00.3) of 0.7 (00.7)  1.9%                                             
A:   0.3 (00.3) of 0.7 (00.7)  1.9%                                             
A:   0.4 (00.3) of 0.7 (00.7)  2.0%                                             
A:   0.4 (00.3) of 0.7 (00.7)  2.0%                                             
A:   0.4 (00.4) of 0.7 (00.7)  2.0%                                             
A:   0.5 (00.4) of 0.7 (00.7)  2.0%                                             
A:   0.5 (00.4) of 0.7 (00.7)  2.0%                                             
A:   0.5 (00.5) of 0.7 (00.7)  2.0%                                             
A:   0.5 (00.5) of 0.7 (00.7)  2.0%                                             
A:   0.6 (00.5) of 0.7 (00.7)  2.0%                                             
A:   0.6 (00.6) of 0.7 (00.7)  2.0%                                             
A:   0.6 (00.6) of 0.7 (00.7)  2.0%                                             
A:   0.7 (00.6) of 0.7 (00.7)  2.0%                                             
A:   0.7 (00.6) of 0.7 (00.7)  2.0%                                             
Starting playback...
Remove the equalizer filterVideo: no video
[AO_ALSA] Unable to find simple control 'Master',0.
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)
AUDIO: 16000 Hz, 1 ch, s16le, 32.0 kbit/12.50% (ratio: 4000->32000)
Selected audio codec: MP3 (MPEG audio layer 3) [libavcodec]
Enable it at compilation.
Requested audio codec family [mpg123] (afm=mpg123) not available.
Load subtitles in cache/
[lavf] stream 0: audio (mp3), -aid 0
[mp3 @ 0x4015e300]Estimating duration from bitrate, this may be inaccurate
[mp3 @ 0x4015e300]max_analyze_duration 10000 reached at 36000
Detected file format: MP2/3 (MPEG audio layer 2/3) (libavformat)
Playing cache/598d4c200461b81522a3328565c25f7c.mp3.

MPlayer2 8bf655a (C) 2000-2012 MPlayer Team
Cannot find HOME directory.
2014.01.21 15:09:34 4: Text2Speech:/var/packages/AudioStation/target/bin/mplayer   -nolirc -noconsolecontrols cache/598d4c200461b81522a3328565c25f7c.mp3
2014.01.21 15:09:34 4: Text2Speech: Datei <cache/598d4c200461b81522a3328565c25f7c.mp3> bereits vorhanden, erneuter Download nicht notwendig
2014.01.21 15:09:34 4: Text2Speech: Bearbeite jetzt den Text: hallo

Frank Hell

Sollte "TTS_Delemiter" nicht "TTS_Delimiter" heißen...?  8)

hokascha

Überlege gerade, ob sich das wohl mit meinem neuen, kleinen, noch nicht wirklich fertigem DLNA-Modul verbinden lässt, siehe http://forum.fhem.de/index.php/topic,14266.msg130297.html#msg130297

Bei mir hier lokal hab ich das im Moment über ein kleines PHP-Skript gelöst, dass den gewünschten Text via Google holt und als MP3-Datei für den DLNA-Renderer zur Verfügung stellt. Da das Text2Speech-Modul da schon deutlich ausgereifter scheint, müsste es doch möglich sein, statt der Ausgabe via MPlayer einfach das MP3-File via HTTP-Download zur Verfügung zu stellen und dem DLNA-Renderer nur die URL mitzuteilen, das geht über mein Modul z.B. mit
set MyRenderer http://fhemserver/file.mp3

Damit könnte man also die eigentliche Sprachausgabe auf ein beliebiges DLNA-fähiges Endgerät umleiten, WLAN-Radios, TVs, etc.

Grüße,

Kevin