Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

Tobias

ZitatHier 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)
Das sieht aus, als ob du keinen Telnetzugang im fhem definiert hast..??

DLNA-Renderer hört sich interessant an... Ich streame es zZ. per Bluetooth-Stick zu meinem Bluetooth-Lautsprecher
Ich kann im Modul zb. die Set Methode deines Moduls aufrufen und damit auch die mp3-Datei URL übergeben...
Hat das DLNA-Modul schon einen relativ reifen Stand..??
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

hokascha

Zitat von: Tobias am 30 Januar 2014, 13:01:53
Ich kann im Modul zb. die Set Methode deines Moduls aufrufen und damit auch die mp3-Datei URL übergeben...

Genau, und der Benutzer müsste deinem Modul z.B. per attr-Befehl das anzusteuernde Gerät mitteilen, damit Du weißt, auf welches Gerät die set Methode angewendet werden muss.

Zitat von: Tobias am 30 Januar 2014, 13:01:53
Hat das DLNA-Modul schon einen relativ reifen Stand..??

Nicht wirklich. Es funktioniert soweit ganz gut, zumindest mit meinem Philips NP2500 WLAN-Radio. Ich hab hier auch noch ein Hama, da geht nix ;-) Da das einfache übergeben einer HTTP-URL eigentlich ein Hack das DLNA-Protokolls ist, kann ich schon vorstellen, dass das nicht bei allen Geräten funktioniert. Um das wirklich sauber zu machen, müsste man auch ein DLNA-Server-Modul in FHEM haben.

Grüße,

Kevin

Tobias

hmm, da finde ich die Lösung mit der Bluetoothübertragung aber besser...
ich glaube nicht das fhem den Anspruch eines DLNA-Servers hat ;)
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

hokascha

Zitat von: Tobias am 30 Januar 2014, 16:19:50
ich glaube nicht das fhem den Anspruch eines DLNA-Servers hat ;)

Natürlich müsste das kein vollwertiger Server sein, soll ja nur das Protokoll unterstützen, damit die DLNA-Clients sich unfallfrei die Datei abholen können. Ich guck mal, schätze das ist noch weniger Code als der Controller ;-)

Rince

@Tobias
Ich versuche grade eine zweite Instanz zu erzeugen.
MyTTS (Google) und MyTTSlocal (espeak)

Das scheint MyTTS zu löschen. Jedenfalls verschwindet es aus der Geräteübersicht?
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)

Tobias

Nö...
habe gerade
1x lokale Google Instanz
1x lokale ESpeak Instanz
1x Remote Instanz
angelegt... und alle 3 sind da...
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

[F***]
Entschuldige Tobias, habe festgestellt, dass dank meinem UMTS Anschluss wohl grade eh nix geht, außer gecacheten Dateien.
Da muss man erst mal drauf kommen.

Was die Sache noch dümmer macht, wenn ein leeres File zurück kommt, wird dieses ebenfalls gespeichert und bei einem erneuten Aufruf wieder abgespielt.

Hat man also einen Ausdruck im Cache, der beim ersten Aufruf nicht ging, bekommt man immer dieses fehlerhafte File abgespielt :( (sieht also so aus, als ob es nicht ginge)

Die Lösung ist ja ganz einfach, Cache leeren. Aber vielleicht ist das ja auch der Fehler, den einige vorher hatten.

Noch eine Frage:
Kannst du evtl. den Namen der Text2Speech Instanz, die die Sprache ausgeben soll, in den Namen der Cache Dateien mit einbauen? Also z.B. MyTTS.435uu4533z4543z54z53.mp3 ?

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)

Tobias

Warum die zusätzliche Kennung? Das mp3 sollte immer gleich sein
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

Ja und nein.
Bei mir im Moment folgendes Problem:

Bekomme nur leere MP3s zurück (vermute meinen UMTS Stick als Schuldigen).
Wenn ich jetzt eine neue Instanz bastle, scheint es zu funktionieren, solange die Daten schon im Cache liegen, obwohl es in Wirklichkeit nicht geht.
Jedes neue unbekannte Wort das bis dahin ausgegeben werden sollte, sorgt wieder nur für eine falsche MP3 Datei.

Ich müsste also erst  mal den mp3 Cache leeren, damit später wieder alles funktioniert. Jetzt wäre es dumm, da ich damit auch die funktionierenden Info-MP3s in den Wind schieße.


Außerdem:
Stell dir mal vor, Google bastelt neue Features in seine Stimme ein. Ich denke hier an emotional speech.
Dann könnte eine muffelige Haussteuerung anders klingen, als eine fröhliche gut gelaunte Haussteuerung.
Muffelig könnte sie sein, wenn Batterien gewechselt werden müssen, bestimmte Leute anrufen etc.

Verstehst du, was ich meine?
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)

Tobias

Ich werde es als optionales Attribut einbauen.
Sind die leeren mp3files 0Bytes lang? Dann könnte man darauf filtern und löschen...
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

svenr

Hallo Tobias,

ich habe nun mal einen anderen Bluetooth-Lautsprecher getestet. Damit funktioniert die Ausgabe korrekt. Also liegt es wohl am zuvor verwendeten Bose Lautsprecher.

Viele Grüße
Sven

fiedel

Hi Tobias,

also erst mal vielen Dank für das Modul! Da steckt viel Arbeit und KnowHow drin. In den letzen Tagen habe ich dein Modul und auch StreamRadio bei mit eingerichtet und alles aufeinander abgestimmt. Dabei ist mir Folgendes aufgefallen, was vielleicht dein Modul noch etwas verbessern könnte:

Gegenüber Webradiosendern und auch gut ausgesteuerten, selbst hergestellten Audioansagen (sowas habe ich vor TTS genutzt), ist die Lautstärke der TTS- Ansage recht leise. Selbst eine Lautstärkeautomatik, die aus FHEM heraus die Lautstärke vor jeder TTS- Ansage hochzieht und danach wieder auf den alten Wert zurückfährt, hilft nur bedingt.

Zum Glück gibt es für mplayer einen Parameter "-af volume=", mit dem man einen "internen Mixer" steuern und zu leise Signale bereits vor dem Systemmixer in der Lautstärke anheben kann. Ich habe also probehalber im Modul die Zeile 43 entspr. angepasst:

my $mplayerAudioOpts    = '-af volume=6 -ao alsa:device=';

Das Ergebnis ist perfekt. Man kann sich die Ansagelautstärke so hinbiegen, dass es gut zu Radio und Audiofiles passt. Solltest du es als Attribut hinzufügen wollen, wäre ggf. die Bezeichnung "pregain" passend.

Viele Grüße

Frank

FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Tobias

Ich glaube das habe ich sogar schon benutzt beim
Set volume
Kannst ja mal schauen ob das dir schon hilft
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

Starkstrombastler

Ich habe das Modul getestet - da kommt Freude auf, Danke.

Zunächst habe ich den Raspi via HDMI an meinen TV angeschlossen. Beim Vorlesen hat dann der TV scheinbar die ersten vier Sekunden verschluckt(?).

Mit amixer cset numid=3 1 habe ich die Ausgabe auf den Klinkenstecker und einen separaten Aktivlautsprecher umgeleitet - und voila - der Text wird komplett vorgelesen.

Eine Kleinigkeit habe ich noch gefunden: Bei Eingabe von set MyTTS volume 100
folgt eine Fehlermeldung:
volume level expects 0..100 percent

IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Rince

Du könntest 4 Sekunden Stille vor jeder Textansage einbauen.

Schau mal im Commandref nach. Entweder TTS_SentenceAppendix oder TTS_FileAppendix.
Damit sollte sich das lösen lassen.
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)