WebFront Sprachausgabe via WFC_AudioNotification ...

Ich hab gestern mal versucht mittels ‚BuildIn‘ Funktionalitäten von IP-Symcon (TTS_GenerateFile & WFC_AudioNotification) Sprachnachrichten an das WebFront zu ‚pushen‘.
Ich muss sagen, das funktioniert ganz gut.

  1. ‚Text To Speech‘ Instanz hinzufügen
    TextToSpeechInstanzAuswaehlen.png

  2. ‚Text to Speech‘ Instanz konfigurieren
    TextToSpeechInstanz.png

Sollte keine Deutsche Sprache verfügbar sein, muss diese Installiert werden.
siehe z.B. http://www.wintotal-forum.de/f42/windows7-sprachausgabe-deutsch-97633/
Steffi gibt es hier. Unter Windows 7 32-Bit funktioniert ‚Steffi‘ problemlos. Für 64-Bit Windows Versionen müsst ihr Goolge bemühen …

  1. Untenstehendes Skript in eine Skriptdatei stecken
    3.1. Im Skript die ObjectID der ‚Text to Speech‘ Instanz ($varIdTextToSpeechInstanz) anpassen
    3.2. Im Skript die ObjectID des ‚Web Konfigurator‘ ($WebFrontConfigurator ) anpassen

sieht dann so aus:
SprachausgabeViaWFC_AudioNotification.png

und dann sollte es schon klappen …


<?
//Ansagetext zusammensetzen ...
$ansageText = "";
$value = 2.3;			//GetValueFloat(25336);
$valueTxt = number_format( $value, 1, ',', '.');
$ansageText .= "Die aktuelle Außentemperatur auf der Nordseite ist " . $valueTxt  . " Grad Celsius. ";

$value = 3.4;			//GetValueFloat(30940);
$valueTxt = number_format( $value, 1, ',', '.');
$ansageText .= "Die Außentemperatur im Garten ist " . $valueTxt  . " Grad Celsius. ";

$value = 21.8;					//GetValueFloat(36379);
$valueTxt = number_format( $value, 1, ',', '.');
$ansageText .= "Die Wohnzimmertemperatur ist " . $valueTxt  . " Grad Celsius. ";

//Sprachdatei mittels TTS_GenerateFile erzeugen (wav Datei wird erzeugt)
$mediaFile = "media/WebFrontSprachausgabe.wav";
$mediaFilePath = IPS_GetKernelDir() . $mediaFile;
$format = 23;   
$objIdTextToSpeechInstanz =  54122  /*Text To Speech]*/;
TTS_GenerateFile($objIdTextToSpeechInstanz ,$ansageText,$mediaFilePath,$format);

//Sprachdatei in Media Library aufnehmen
$mediaId = @IPS_GetMediaIDByFile($mediaFile);
if($mediaId == 0) {
   $mediaId = IPS_CreateMedia(2);
}
IPS_SetMediaFile($mediaId, $mediaFilePath, true);

//Sprachdatei von der Media Library per WFC_AudioNotification an das WebFront schicken
$WebFrontConfigurator = 30984;
if(isset($_IPS['CONFIGURATOR']))	{ $WebFrontConfigurator = $_IPS['CONFIGURATOR']; }
$result = WFC_AudioNotification($WebFrontConfigurator, $ansageText, $mediaId);
if(!$result) {
   IPS_LogMessage("AudioNotification","AudioNotification konnte nicht ausgeführt werden");
}

?>


Details:
$format -> Der Format Parameter bestimmt die Qualität der Wav Datei und somit beeinflusst er direkt die Größe der Datei
siehe Details unter http://www.ip-symcon.de/service/dokumentation/modulreferenz/text-to-speech/tts-generatefile/

Vielen Dank für die ausführliche Anleitung! :slight_smile:

paresy