Neues Modul: Text2Speech

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

Vorheriges Thema - Nächstes Thema

Tobias

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

Invers

Nö, funktioniert nicht. Liegt vielleich an der abweichenden Schreibweise. In der set-Liste  = volume, im neuen Reading = Volume.
Somit funktioniert set MyTTS Volume 10 nicht, MyTTS volume 10 nicht aber schon.
Und darum klappt auch mein Olan:
global:INITIALIZED set MyTTS Volume [DU_aktLautst];set MyTTS tts "fhem initialisiert."

nicht.

DU_aktLautst ist der Dummy, der den zu setzenden Wert enthält.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

marvin78

@Invers: Aber was genau funktioniert denn nicht? Der Wert mit mit

set xxx volume YY

gesetzt und erscheint dann im Reading Volume. Die unterschiedliche Schreibweise ist wirklich nicht schön, grundsätzlich ist die gewünschte Fuktionalität aber da.

Tobias

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

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

die unterschiedlichen schreibweise ist ein problem in fhemweb für longpoll und die Initialisierung des sliders auf den aktuellen wert.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

marvin78

Ein slider ist hier (in FHEMWEB) ohnehin eher schwierig, da das Attribut setList dem Modul nicht bekannt ist.

Invers

Kleiner Fehler?
Ich habe nun 2 Readings, Volume mit dem uralten Wert und volume mit dem nun neuen Weert, wie es auch sein soll. Ich vermute mal, das ist nicht gewollt?
Bitte nicht auf Neustart hinweisen, habe ich gemacht.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

marvin78

Das alte reading Volume hast du auch noch von "alten" Version des Moduls, die du getestet hast. Das lässt sich einfach mit

deletereading TTSDEVICE Volume

entfernen und kommt dann auch nicht mehr wieder.

Das ist nicht wirklich ein Bug.

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

justme1968

du brauchst in diesem fall nicht setList sondern widgetOverride.

setList ist nur für dummys um einem dummy zu sagen was er für kommandos kann.

andere module wissen was sie für kommandos können.

hier muss nur fhemweb gesagt werden das für ein kommando ein anderes widget verwendet werden soll als das vom modul vorgesehene.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Panik

Hallo,

ist es eigentlich möglich, die Sprachausgabe etwas in der Geschwindigkeit zu beeinflussen?
Ich finde die Dame etwas langsam  ;)

Panik
Raspberry3+,  CUL USB V3 mit V 1.66 CUL868, TRXRFX433, HM-MOD-UART, Phoscon-GW

td

#342
Hallo Tobias,

vielen Dank für die Korrektur. Ich habe mit der Version vom 19.3., 13:xx getestet.
Nun funktioniert es mit dem File-Mapping.

Mit
set wstts tts :whistle:Dieses ist ein Test
wird erst korrekt die zu "whistle" zugehörige mp3-Datei abgespielt.
Bei einem zweiten, identischen, Aufruf wird ebenfalls die mp3 korrekt, aber der Text mit immens hoher Geschwindigkeit (Mickey Mouse-Effekt) abgespielt.

Log-Datei-Auszug

2015.03.23 20:51:05 4: wstts: Auflistung der Textbausteine nach Aufbereitung:
2015.03.23 20:51:05 4: wstts: 0 => templates/tos_intercom_whistle.mp3
2015.03.23 20:51:05 4: wstts: 1 => Dieses ist ein Test
2015.03.23 20:51:05 4: Text2Speech: Bearbeite per MP3Wrap jetzt den Text: templates/tos_intercom_whistle.mp3 Dieses ist ein Test
2015.03.23 20:51:05 4: Text2Speech_CalcMP3Duration: cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3 hat eine Länge von 2 Sekunden.
2015.03.23 20:51:05 4: Text2Speech:sudo /usr/bin/mplayer  -really-quiet -nolirc -noconsolecontrols -softvol -softvol-max 100 -volume 40 cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3
2015.03.23 20:51:05 4: Text2Speech_readingsSingleUpdateByName: Dev:wstts Reading:duration Val:2
2015.03.23 20:51:05 4: Text2Speech_readingsSingleUpdateByName: Dev:wstts Reading:endTime Val:00:00:00


Das Verhalten ist reproduzierbar.
Die Datei "cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3" selbst wird mit "mpg123" problemlos abgespielt.

Auch wiederholter Aufruf von "set wstts tts Dieses ist ein Test" wird in korrekter Geschwindigkeit abgespielt.

Also: Nur wenn mp3 mit Text kombiniert wird, wird ab dem zweiten identischen Aufruf der Text zu schnell abgespielt. Und das, obwohl die im Cache vorhandene mp3 korrekt ist.

Bin verblüfft.

Nachtrag:
Ich habe soeben die Datei sowohl mit mpg123 als auch dem im Log vorgefundenen mplayer-Aufruf getestest:

olymp:/opt/fhem # /usr/bin/mplayer -nolirc -noconsolecontrols -softvol -softvol-max 100 -volume 40 cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3
MPlayer -4.8 (C) 2000-2015 MPlayer Team

Playing cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3.
libavformat version 56.15.102 (internal)
Audio only file format detected.
Load subtitles in cache/
==========================================================================
Trying to force audio codec driver family libmad...
Opening audio decoder: [libmad] libmad mpeg audio decoder
AUDIO: 48000 Hz, 2 ch, s16le, 320.0 kbit/20.83% (ratio: 40000->192000)
Selected audio codec: [mad] afm: libmad (libMAD MPEG layer 1-2-3)
==========================================================================
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
[Mixer] No hardware mixing, inserting volume filter.
Video: no video
Starting playback...
A:   2.2 (02.2) of 1.0 (01.0)  0.3%
Cannot sync MAD frame
Cannot sync MAD frame
A:   2.2 (02.2) of 1.0 (01.0)  0.3%
Cannot sync MAD frame
A:   2.2 (02.2) of 1.0 (01.0)  0.3%
Cannot sync MAD frame
A:   2.2 (02.2) of 1.0 (01.0)  0.3%


Exiting... (End of file)

olymp:/opt/fhem # mpg123 cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.18.0; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes

Directory: cache/
Playing MPEG stream 1 of 1: 8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3 ...

MPEG 1.0 layer III, 320 kbit/s, 48000 Hz joint-stereo
Title:   Use Mp3Splt to obtain original tracks
Artist:  File wrapped with Mp3Wrap
Comment: This file is wrapped with Mp3Wrap. Get mp3splt, the free tool to split original files at http://mp3splt.sourceforge.net. Please do not remove this comment.
Album:   http://mp3splt.sourceforge.net
Year:

Warning: Big change (MPEG version, layer, rate). Frankenstein stream?

MPEG 2.0 layer III, 32 kbit/s, 16000 Hz mono

This was a Frankenstein track.
[0:03] Decoding of 8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3 finished.


mplayer zeigt den beschriebenen Mickey Mouse-Effekt, mpg123 nicht.
Kommt mplayer mit den mittels mp3wrap konkatenierten mp3-Dateien nicht klar?

Bin noch verblüffter.

2. Nachtrag
Ich behelfe mich nun dadurch, daß ich "whistle" und den Text in zwei getrennten tts-Kommandos absetze.
Aber schön ist das nicht ;)

Gruß
td

Tobias

Also ich hatte das Problem moch nicht. Schlussendlich mird nur ein simpler mplayer aufruf gestartet. Den kannst du ja auch selbst aus dem Log kopieren und ausführen.
Kannst du es reproduzieren indem du manuell auf der Konsole den Aufruf tätigst??
sudo /usr/bin/mplayer  -really-quiet -nolirc -noconsolecontrols -softvol -softvol-max 100 -volume 40 cache/8b9fa982a19cf8ef8db93bc067bb1e98_MP3WRAP.mp3
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

Von-XS1-Nach-FHEM

#344
Hallo TeeVau,

Wie hast du das gemacht mit diesem code?

ZitatMyTTS:duration:.* {
  my $devMPD = "myMPD";
  my $stateMPD = Value("$devMPD");
  my $atTimestamp = time_num2str($EVTPART1+2);
  my $atName = "at_" . $devMPD . "_play";

  if (!$defs{$atName}) {
    fhem("define $atName at +" . $atTimestamp . " set $devMPD play");
  } else {
    fhem("modify $atName +" . $atTimestamp);
  }
 
}

Bei mich findet er diesem kommando nicht wieder und gibt ein fehlermeldung:

Zitattime_num2str

Func_VolAut_N return value: Undefined subroutine &main::time_num2str called at (eval 90) line 6.

Ich wollte es so nutzen aber es geht leider nicht mit diesem Fehlermeldung

ZitatMyTTS:.*!.* {

  my $Radio = (Value("SRadio"));
  my $Station = ReadingsVal("SRadio", "StreamURL", "");
  my $Old_Vol = (OldValue("Dum_Volume_D"));
  my $atTimestamp = time_num2str($EVTPART1+2);

  if ($Radio eq "playing") {
        fhem("set SRadio STOP ; set Dum_Volume_D 80");
        fhem("define Radio_Comeback_A at +" . $atTimestamp . " set SRadio PLAY $Station;; set Dum_Volume_D 78");
  }
  if ($Radio eq "stopped") {
        fhem("set Dum_Volume_D 80");
       fhem("define Vol_Res_A at +" . $atTimestamp . " set Dum_Volume_D 78");
  }
}

Muss ich ein Module nachladen vorn Perl und wenn ja wie mache ich das?