Sprachausgabe benutzen

@ H-MAN
Vielen dank, für deine Hilfe.
Werde es gleich Morgen mal ausprobieren.
Ich werde berichten.
Vielen Dank und Gute Nacht!
Gruß
Xanon

@H-Man
Vielen Dank, es hat geklappt.
Kannst du mir vielleicht nochmal helfen?
Habe mir erstmal div. Tutorials durchgelesen.
Und will nun auch mal alles per Hand schreiben. (Ich denke das man da am besten lernt.
Also Habe ich erstmal ein Script „abgeschrieben“ (Uhrzeit), welches auch funktioniert.
Nun möchte ich aber das ganze auch als TTS_Speak ausgeben.

$S = date („H:i“);
if ($S < 10) echo "Guten Morgen, es ist ";
elseif ($S < 18) echo "Guten Tag, es ist ";
elseif ($S >= 18) echo „Guten Abend, es ist „;
echo $S;
TTS_Speak(48637,“.$S.“);
?>

Wenn ich nun aber auf Execute klicke, bekomme ich NUR „Die aktuelle Uhrzeit“,
Aber ebend nicht wie oben im Script geschrieben (Guten Abend, es ist „Aktuelle Uhrzeit“).
Das Echo funktioniert zwar:

Guten Abend, es ist 22:09

zusätzlich sagt TTS aber auch nicht

„Zweiundzwanzig uhr neun“
sondern
„Zweiundzwanzig uhr null neun“
:confused:
Ich verstehe aber nicht wieso nicht.
Wo mache ich den fehler?
Habe leider nirgendswo etwas dazu lesen können.
Will es noch irgendwie mit Wetterdaten und so füttern und dann das Script Morgens abspielen lassen, wenn ich aufstehe, zu einer bestimmten Uhrzeit.
Also statt Fernsehen, eigene Info Zentrale. „Hoffe das geht überhaupt“
Oder noch später über einen Bewegungsmelder.
Aber das wird wohl noch etwas dauern, bis ich soweit bin.
Gruß
Xanon

Hallo Xanon,

in Deinem Script werden Ausgaben auf zwei verschiedene Medien gemacht:

  1. echo“: Ausgabe in das „Script Output Window“
  2. TTS_Speak(…)“: Ausgabe auf das Sound-Device

Wenn Du den Text "Guten Morgen, es ist " auch hören möchtest, musst Du ihn natürlich ebenfalls der TTS_Speak-Funktion übergeben. Die echo-Funktion dient nur der Kontrolle.

etwa so:

$S2 = date ("H:i");
if ($S < 10) $S1 = "Guten Morgen, es ist ";
elseif ($S < 18) $S1 = "Guten Tag, es ist ";
elseif ($S >= 18) $S1 = "Guten Abend, es ist ";
echo $S1. $S2;
TTS_Speak(48637, $S1. $S2);

Die PHP-Funktion date gibt bei den Parametern „H“ und „i“ den Wert als String mit führender Null aus. Um dies zu vermeiden kannst du die Ausgabe in einen Integer-Wert wandeln und danach wieder zu einem String zusammenfassen:

$h = (integer)date("H");
$m = (integer)date("I");
$S2 = $h. ":". $m;

Gruß
HJH

@HJH
Vielen dank, für die Hilfe zu so später Stunde!
Also ich habe mal dein Script mit meinem verglichen und es so umgeändert, wie du es geschrieben hast. (Kopieren ist langweilig) :slight_smile:
Aber entweder du hast einen fehler gemacht, oder ich blicke garnicht mehr durch?!?
Dein Script:

$S2 = date („H:i“); //<–Hier heißt es $S2
if ($S < 10) $S1 = "Guten Morgen, es ist ";
elseif ($S < 18) $S1 = "Guten Tag, es ist "; //<-- Hier aber nur noch $S (ohne die 2) Ist das richtig?
elseif ($S >= 18) $S1 = "Guten Abend, es ist ";
echo $S1. $S2;
TTS_Speak(48637, $S1. $S2);

Bitte nicht als Angriff, oder Klugscheißerei sehen.
Ist wirklich nicht böse gemeint.
Ich bin froh, das mir jemand hilft.
Wollte nur wissen, ob es evtl. falsch ist.
Ich habe das jetzt mal umgeändert in:

$S2 = date („H:i“);
if ($S2 < 10) $S1 = "Guten Morgen, es ist "; //<–
elseif ($S2 < 18) $S1 = "Guten Tag, es ist ";//<-- oder ist das falsch?
elseif ($S2 >= 18) $S1 = "Guten Abend, es ist ";//<–
echo $S1. $S2;
TTS_Speak(48637, $S1. $S2);

Als nächstes:

Die PHP-Funktion date gibt bei den Parametern „H“ und „i“ den Wert als String mit führender Null aus. Um dies zu vermeiden kannst du die Ausgabe in einen Integer-Wert wandeln und danach wieder zu einem String zusammenfassen:

Mache ich das mit diesem Code?
Habe es jetzt mal mit dem Code gemacht:

$h = (integer)date(„H“);
$m = (integer)date(„I“);
$S2 = $h. „:“. $m;
$S2 = date („H:i“);
if ($S2 < 10) $S1 = "Guten Morgen, es ist ";
elseif ($S2 < 18) $S1 = "Guten Tag, es ist ";
elseif ($S2 >= 18) $S1 = "Guten Abend, es ist ";
echo $S1. $S2;
TTS_Speak(48637, $S1. $S2);

Habe mal die Windows Uhr auf 1:01 Uhr gedreht.
Es wird zwar jetzt schonmal „Guten Morgen, es ist…“ gesagt, aber leider " Statt Ein uhr Eins" wird „Ein(s) uhr Null Eins“ gesagt.
Habe ich wieder etwas verkehrt gemacht?
Gruß
Xanon

Nachtrag:Ich habe gemerkt, das es keinen unterschied macht, ob da nun $S oder $S2 steht.
Ist scheinbar nicht so wichtig.

Ja. Das liegt daran, dass PHP dir die Uhrzeit und die Minuten mit führender Null ausgibt. Trick 17 wäre die Zahl nach int und dann wieder nach str zu casten…

Der Code von HJH war nur als Denkanstoss für das Prinzip… Hier wie er sich das Vorgestellt hatte:


$h = (int)date("H");
$m = (int)date("i");
$S2 = $h.":".$m;
if ($h < 10) $S1 = "Guten Morgen, es ist ";
elseif ($h < 18) $S1 = "Guten Tag, es ist ";
elseif ($h >= 18) $S1 = "Guten Abend, es ist ";
echo $S1.$S2;
TTS_Speak(48637, $S1. $S2);

paresy

Als erstes mal wieder ein großes Lob an diese Community.
Ist echt toll wie einem Newbie hier geholfen wird.
Ich hoffe ich kann mich auch irgend wann mal nützlich erweisen.
@ paresy
Vielen Dank!
Endlich läuft es so wie ich es mir vorgestellt habe.
Außer das ich bei

$S2 = $h.":".$m;

das „:“ dur das Wort „Uhr“ ersetzten mußte, weil er dieses nicht mehr mitgeagt hat, wenn die Uhrzeit zwischen XX:01 - XX:09 war.
Liegt aber vielleicht liegt das auch an meiner TTS Engine.
Ich bedanke mich vielmals bei dir und den anderen die mir so tapfer geholfen haben.

Gruß
Xanon

Hey,
kannst du deinen funktionierenden Code evtl. posten? Das ist dann einfacher für mich, von deinen Erfahrungen zu lernen!
Vielen Dank!!!

LG; Marcus

Ja natürlich!
Hier der Code!

<?
/*


IP-SYMCON Event Scripting


File : Zeitansage.ips.php
Trigger :
Interval :
*/
$h = (int)date(„H“);
$m = (int)date(„i“);
$S2 = ($h . " Uhr, " . $m);
if ($h < 10) $S1 = "Guten Morgen! Ich hoffe sie haben gut geschlafen. Es ist jetzt, ";
elseif ($h < 18) $S1 = "Guten Tag, es ist jetzt ";
elseif ($h >= 18) $S1 = "Guten Abend, es ist jetzt ";
echo $S1.$S2;
TTS_Speak(48637, $S1. $S2); //<–„Hier noch deine eigene TTS_Speak Instance ID eintragen“
?>

Gruß
Xanon

Danke!!! Welche TTS Speak bevorzugst du denn? Ich kenne die Steffi - gibts da noch was natürlicheres?

Ich benutze den TTS von Loquendo Mit der Stimme von Stefan.
Es gibt noch massen, von diesen Stimmen.
Gib mal unter Suchen hier im Forum TTS ein.
Ich glaube da hatte ich auch etwas gefunden.
Es gibt noch die Katrin von Loquendo Die finde ich hört sich noch besser an.
Aber am allerbesten hört sich „meiner Meinung“ nach die Stimme von Linguartec „Voice Reader“ an.
Die ist allerdings nicht kompatibel zu IPS. Leider :frowning:
Gruß
Xanon

Loquendo? Kosten die Stimmen nicht mehr als 1000€? oder kommt man da auch billiger ran?

Das kann sein, Habe es von eimem Freund bekommen. Der Hat sich auch das Ganze Haus Vernetzen lassen, inkl. Sprache. Aber er hat das alles von einer Firma machen lassen, denn der hat eigentlich in sachen Computer 2 linke Hände. Hat aber ein anderes System als Ich. Alles irgendwie verkabelt, also kein Funk.
War bestimmt schweine teuer.

Naja, auf jeden fall hat der das dazu gekauft.
Ich wußte aber nicht, das das so teuer ist ?!?
Gruß
Xanon

Hallo,

also ich habe mir das jetzt mal alles hier durchgelesen. Ist schon eine coole Sache. Da ich aber absoluter Newbie im Bereich IPS usw. bin, würde mich noch interessieren in welchen Zusammenhang ihr das nutzt mit der Sprachausgabe. Gerade dieses „Guten Morgen, ich hoffe Sie haben gut geschlafen“ usw.

Hast du irgendwelche Bewegungsmelder im Bad ? :slight_smile: Oder andere Sonsoren ? Oder drückst du einen Knopf und dann wird das ganze abgespielt ?

Die Scripte ist ja das eine, aber das andere sind einfach Ideen und Anregungen für den Alltag, bzw. wie das ganze dann auch wirklich eingesetzt wird ?

Grüße,
Visionsurfer

Hallo!
Zur Zeit setze ich das ganze in verbindung mit dem Licht im Flur ein.
Sobald ich dieses über einen Taster einschalte, wird das Licht im Flur eingeschaltet und die Sprache aktiviert. (Kann aber auch das Licht einschalten, ohne Sprache, über eine andere Taste.)
Ich habe allerdings vor das ganze eigentlich über einen Bewegungsmelder im Schlafzimmer ausgang einzusetzen.
Bzw. Ein anderen Bewegungsmelder im Eingangsbereich, der mir beim Nachhause kommen sagt „Hallo, es ist …Uhr, Sie haben …neue E-Mails…“.
Wird aber noch etwas dauern. (Ist ja alles nicht ganz so billig.)
Gruß
Xanon

Hi,

ok das hört sich doch schon mal gut an.
Wie machst du das, mit den Lautsprechern im Flur ? Hast du ein langes Kabel gelegt vom IPS Server, bzw. wie kann man es machen das wenn ich dann auf dem IPS Server Musik höre, nicht auch noch die Musik im Flur zu hören ist :slight_smile:

Da verstehe ich noch nicht ganz die Zusammenhänge.

Grüße,
Visionsurfer

Wenn du verschiedene Lautsprecher ansteuern willst kannst du mehrere Soundkarte verwenden. Billige USB-Soundsticks bekommst du schon für ca. 10 EUR oder weniger.

Gruss,
Olli

Hallo
@visionsurfer
Ich habe ein offenes Wohnzimmer, daher kann ich, wenn ich nachhause komme trotzdem alles hören, wenn im Wohnzimmer (bei richtiger Lautstärke) alles verstehen.
Hatte mir aber auch schonmal gedanken gemacht, wie es in anderen Räumen aussieht.
Aber die Antwort dazu hat ja OLLI schon gegeben.
Ich habe an der Haustür einen 2/4 Taster angebracht.
Über eine Taste startet er nun den Willkommens-Skript, inkl. Email Benachrichtigung.
Mein Problem ist, das er scheinbar nicht immer die FHZ erreicht. Und das obwohl sich der in einer Ecke im Wohnzimmer befindet. (ca. 12 Meter entfernt)
Wie sieht es mit eurem Empfang aus?
Hat jemand eine Idee, was man machen kann, ohne sich gleich einen Repeater kaufen zu müßen? (Lösungsforschläge)?
Gruß
Xanon

Was ihr zu hause macht bleibt jedem selbst überlassen. Aber soche Äuserungen könnte man, wenn man denn so kleinlich ist durchaus als „Anstiftung“ auffassen, was hich wirklich nicht gut heissen kann.

Wenn ihr also der Meinung seid Raubkopien benutzen zu müssen ist das eure eigene Entscheidung und euer Risiko. Aber bitte nicht „öffentlich“ und nicht hier…

Danke…

@Tonic1024
Ich will das ganze hier nicht unnötig aufrollen, aber Rechtfertigen möchte ich mich doch!
Mein Freund hat sich ein system eibauen lassen und das ganze auch gekauft. Es gab in diesem Kauf 2 Lizensen. Also für 2 Rechner.
Eine habe Ich bekommen.
Also nichts ILLEGAL. ICh setzte die Software vollkommen LEGAL ein.
Nur zur Info!!!

Hallo,

so ist das aber nicht richtig. Du muesstest den Nachweis fuehren, dass Du eine Lizenz rechtmaessig erworben hast. Das kannst Du nicht, da der Lieferant im Auftrag des Herstellers Dir keine Lizenz geliefert hat, Du also auch keine Rechnung als Beweis vorlegen kannst. Wenn Dein Freund zwei Lizenzen erhalten hat, so sind diese ausschliesslich fuer ihn nutzbar, nicht fuer Dich. Es gibt viele Systeme, wo man zwei Lizenzen ausgibt, um dem Kunden eine alternative Nutzung auf einem weiteren Rechner zu ermoeglichen. Aber eben nicht, um damit Dritte arbeiten zu lassen.

Gruss Torro