Nach Jahren fällt mir auf dass Steffi bei Minustemperaturen kein Komma ansagt. Da ich die float2speech Function nie richtig verstanden habe und der Fehler wohl dort liegt hier mal mein ganzes Skript.
$Temp1=GetValueFloat(10840 /*[AUSSEN\WETTERSTATION\Garten (KS300-WDE1)\Temperatur]*/);
$Temp1="-12.35"; //test
$id=26285 /*[Media Player USB Speaker]*/; // ID des Mediaplayers
function float2speech( $v, $r=1){
$s = strval(round($v, $r));
if( preg_match( '#(.*)\.(.*)#', $s, $m))
$s = $m[1].','.preg_replace('#(.)#', '\\1 ', $m[2]);
return( $s );
}
if((time() > strtotime("04:20")) && (time() < strtotime("06:20")))
{
WAC_ClearPlaylist($id);
WAC_SetVolume($id, 50); //Musik leiser
//>>>Script DatumZeitansage einfügen
function includeScript($scriptID)
{
$s = IPS_GetScript($scriptID);
include($s['ScriptFile']);
}
//includeScript (12238 /*[Kategorielos\Sprachausgabe\DatumZeitansage]*/);
//<<<
if ($Temp1 < 0)
{
//TTS_Speak(19854 /*[Text To Speech USB Speaker]*/, "die aktuelle Aussentemperatur beträgt minus".float2speech( $Temp1, 1)." °",false);
TTS_GenerateFile(19854 /*[Text To Speech USB Speaker]*/, "die aktuelle Aussentemperatur beträgt minus".float2speech( $Temp1, 1)." °", "C:/IP-Symcon/AussenTemp.WAV", 19);
WAC_AddFile ($id,"C:/IP-Symcon/AussenTemp.WAV");
}
else
{
//TTS_Speak(19854 /*[Text To Speech USB Speaker]*/, "die aktuelle Aussentemperatur beträgt".float2speech( $Temp1, 1)." °",false);
TTS_GenerateFile(19854 /*[Text To Speech USB Speaker]*/, "die aktuelle Aussentemperatur beträgt".float2speech( $Temp1, 1)." °", "C:/IP-Symcon/AussenTemp.WAV", 19);
WAC_AddFile ($id,"C:/IP-Symcon/AussenTemp.WAV");
}
WAC_Play(26285 /*[Media Player USB Speaker]*/);
}
Das Thema hatten wir schon mal aber es liegt im Archive und dort kann man nicht mehr antworten, Vielleicht kann jemand die float2speech Function erklären.
Hat niemand eine Idee was man in der float2speech Function ändern muss damit Steffi bei Minustemperaturen auch ein Komma ansagt? Durch probieren komme ich leider nicht weiter.
komisch… ich habe es gerade bei mir getestet, Hans (von Ivona) sagt komma werte an…
teste das ganze mal mit einem "echo $Temp1; "
und schau ob da komma steht… ansonsten bin ich auch ratlos…
btw. in deinem „Test“ hast du kein Float sondern einen String
Mit Echo habe ich natürlich auch getestet. Aber es bleibt dabei ein
12,35 wird von Steffi korrekt als „zwölf komma vier“, ein -12,35 aber als"zwölf vier" ausgesprochen.
Aber was meinst du mit ?
btw. in deinem „Test“ hast du kein Float sondern einen String
PS: Mit String meinst du die „12.35“ Ändert aber auch nichts