Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

mi.ke

Tach,
das Problem hab ich auch . . .
(Anfang der Ausgabe wird am manchen BT Speakern  "verschluckt)

TTS_SentenceAppendix => hängt am ENDE der Ausgabe was an (habe fertig)

Sensationell wäre eine Funktion wie TTS_SentenceAppendix, die eine Datei VOR der Ausgabe platziert.
Könnte z.B. auch als Standard Einleitungstext verwendet werden . . . .

Cheers
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

fiedel

Zitat von: Tobias am 13 Februar 2014, 18:42:41
Ich glaube das habe ich sogar schon benutzt beim
Set volume
Kannst ja mal schauen ob das dir schon hilft

Hi Tobias,

habs gefunden. Du hattest Recht, deine Lautstärke stellt schon am mplayer. Allerdings war so noch keine echte Pegelanhebung möglich. Bei 99% Lautstärke kam nur 99% der Originallautstärke des Soundfiles raus, was mir zu leise war.

Ich hab mal etwas getestet und angepasst: Wei es jemand bemängelt hatte: Die Lautst. lässt sich jetzt auch auf "100" und nicht nur "99" stellen. Dann habe ich den Parameter mit der "+dB"- Wirkung an die Stelle deines vorherigen Parameters gesetzt. Weil jetzt bei einer Lautstärke von z.B. "100" die Lautsprecher explodieren würden, habe ich einen Faktor eingefügt, der dafür sorgt, dass man weiterhin die Lautst. von 0...100 eingeben kann. Wem das noch zu laut ist, kann sich den Faktor anpassen. Der Faktor für Angsthasen  ;) wäre z.B. "0.10". Das entspricht bei Vol.=100 einer Verstärkung um 10 dB. Außerdem ergibt "set myTTS volume 0" jetzt nicht mehr "kein Ton" sondern "Originalpegel". Ich hätte aber auch schon eine Idee, wie das wieder möglich wäre.

Achtung! Tastet euch beim Ausprobieren an die Lautstärke besser vorsichtig heran! Empfehlung zum testen wären Werte kleiner 50. Bei mir hängen nur Passivquäken am Phoneout des Rechners, aber wer dicke Aktivlautsprecher hat, kann sich jetzt in Grund und Boden brüllen lassen.  ;D

Die Änderungen:

320: return "volume level expects 0..100 percent" if($vol !~ m/^([0-9]{1,3})$/ or $vol > 100); #fiedel: lasse 3-stellige Zahlen zu, aber nicht ueber 100
321: $hash->{VOLUME} = $vol *0.15  if($vol <= 100); #fiedel: Faktor fuer Vol. wegen Ausgabe in +dB, lasse auch Wert= 100 zu
322: delete($hash->{VOLUME}) if($vol > 100); #fiedel: loesche Wert nur wenn groesser 100

461: $mplayerOpts .= "  -af volume=" . $hash->{VOLUME}; #fiedel: Vorverstaerkung in +dB


Testausgabe mit "set myTTS volume 100":

tts Zeile 461 - Wert von mplayerOpts: -nolirc -noconsolecontrols  -af volume=15

Gruß

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

Rince

Als Workaround könnt ihr eine beliebige Datei nehmen!
Zitat
TTS_FileMapping
Definition of mp3files with a custom templatedefinition. Separated by space. All templatedefinitions can used in audiobricks by i>tts. The definition must begin and end with e colon. The mp3files must saved in the given directory by TTS_FIleTemplateDir.
attr myTTS TTS_FileMapping ring:ringtone.mp3 beep:MyBeep.mp3
set MyTTS tts Attention: This is my ringtone :ring: Its loud?

Nehmt eine Datei mit Stille, mappt sie mit FileMapping

set MyTTS tts :Stille: Und hier kommt der Text


Also so:
attr myTTS TTS_FileMapping stille:audiodateimit4sekundenstille.mp3 beep:MyBeep.mp3
set MyTTS tts :stille: hier der Text

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)

Marcel2209

Hallo Tobias,

erstmal super Modul funktioniert soweit auch ganz gut, nur schaffe ich es nicht ein MP3 file abzuspielen.

mir wird statt der mp3 der Ordner und Dateiname angesagt, also templates alarm.mp3 z.B.

fhem.cfg:
define MyTTS Text2Speech hw=0.0
attr MyTTS room Flur
attr MyTTS TTS_UseMP3Wrap 1
attr MyTTS TTS_FileMapping alarm:alarm.mp3

set MyTTS tts Test :alarm: Test:
Ausgegebener Text: Test templates alarm punkt mp3 Test

Und zum anderen ist die Ausgabe sehr leise.
Ich habe über Klinke einen aktiven Handy Lautsprecher angeschlossen der eigentlich ziemlich laut ist.
Volume ist auf 99 gesetzt 100 wird nicht akzeptiert.

fiedel

#79
Hi Marcel,

ZitatVolume ist auf 99 gesetzt 100 wird nicht akzeptiert.

dann probier mal mein angepasstes Modul von ein paar Posts weiter oben!

Aber gut den Text dazu lesen und nicht gleich auf 100% loslegen! ;)

Gruß

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

Rince

Marcel, machst du bitte mal ein verbose 5 und postest die Einträge vom Logfile?
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

habs noch nicht geschafft die Änderungen umzusetzen.
Allerdings sollte "set xxx volume" auch weiterhin gut möglich sein, 0 = Stumm und 100 = maximale Lautstärke.
Allerdings werde ich wohl noch ein Verstärkungsfaktor per Attribut einbauen, zwischen 0-10. Ich glaube der mplayer hat dafür auch eins direkt parat...
Dann kann man grundsätzlich dieses setzen und wie gewohnt per volume regeln.
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

Könntest du noch das
$t =~ s/ß/sz/g (Ich glaube in Zeile 377)

Gegen:
$t =~ s/ß/ss/g

austauschen?
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

bitte mal testen

Neues Attr: TTS_VolumeAdjust
Ist in Prozent anzugeben: Default: 110%
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

Marcel2209

MP3 wird jetzt abgespielt, ich hatte die MP3 im falschem Ordner abgelegt ::)

mit dem angepasstem Modul von fiedel ist die Lautstärke auch in Ordnung.

Kann man auch nur die MP3 abspielen lassen ohne weiteren Text?

Gruß Marcel

Rince

Ich glaube, nachdem es bei dir läuft, könntest du es vermutlich mit
set MyTTS tts Test :alarm:
ziemlich schnell rausfinden.

Scheller als hier zu fragen ;)
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)

Marcel2209

Das hab ich bereits probiert das geht eben nicht, deshalb frag ich ja erst.

Rince

Hm, dann hast du doch die Antwort?

Du könntest versuchen mal einige Leerzeichen anzugeben, oder, gib mal das Zeichen ALT + 255 (also ALT Taste drücken und auf dem Ziffernblock 255 tippen) ein.
Das sieht aus wie ein Leerzeichen, ist aber keines ;) (wenn nach dem ALT 255 nix passiert, was wie ein Leerzeichen aussieht, Numlock drücken)

Das Modul sollte also denken, dass ein Zeichen kommt, aber keine Sprachausgabe erzeugen.

Hoffe ich jedenfalls.
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)

fiedel

Zitat von: Marcel2209 am 17 Februar 2014, 22:22:49
Kann man auch nur die MP3 abspielen lassen ohne weiteren Text?

Wie sieht denn dein Szenario aus? Eine MP3 kannst du auch direkt an den mplayer schicken, ohne TTS- Modul:

{system("sudo mplayer /Pfad/Sound.mp3 &")}
Ggf. auch ohne sudo - musst du probieren.

So mache ich das: Für einige feste Alarme nehme ich MP3s, teilw. mit Gong- Geräusch, die ich direkt an mplayer schicke. Variable Ansagen wie Temperaturen oder Telefonanrufer lasse ich von TTS ansagen.

Gruß

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

Rince

Na ja,
ich verstehe es schon. Der Vorteil ist, dass Modul ist non blocking und brächte auch gleich den Vorteil mit, auf Remote Geräten ausgegeben werden zu können.
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)