

sub BOSEST_speak($$$$$) {
my ($hash, $text, $volume, $lang, $stopAfterSpeak) = @_;
$lang = AttrVal($hash->{NAME}, "ttsLanguage", "en") if($lang eq "");
$volume = AttrVal($hash->{NAME}, "ttsVolume", ReadingsVal($hash->{NAME}, "volume", 20)) if($volume eq "");
if(length($text) < 100) {
my $uri_text = uri_escape($text);
my $translateUrl = "http://translate.google.com/translate_tts?ie=UTF-8&tl=$lang&client=tw-ob&q=$uri_text";
$translateUrl =~ s/\&/\&\;/g;
if(substr($volume, 0, 1) eq "+" or
substr($volume, 0, 1) eq "-") {
$volume = ReadingsVal($hash->{NAME}, "volume", 0) + $volume;
}
my $postXml = '<play_info><app_key>Ml7YGAI9JWjFhU7D348e86JPXtisddBa</app_key><url>'.$translateUrl.'</url><service>'.$text.'</service><volume>'.$volume.'</volume></play_info>';
if(BOSEST_HTTPPOST($hash, '/speaker', $postXml)) {
}
if(defined($stopAfterSpeak) && $stopAfterSpeak eq "1") {
$hash->{helper}{stateCheck}{enabled} = 1;
#after play the speaker changes contentItemItemName
$hash->{helper}{stateCheck}{actionContentItemItemName} = "";
$hash->{helper}{stateCheck}{function} = \&BOSEST_off;
}
return undef;
}
my $ttsDir = AttrVal($hash->{NAME}, "ttsDirectory", "");
my $sox = qx(which sox);
chomp $sox;
if(!-x $sox) {
BOSEST_playGoogleTTS($hash, $ttsDir, $BOSEST_READ_CMDREF_TEXT, $volume, $BOSEST_READ_CMDREF_LANG, $stopAfterSpeak);
return undef;
}
#download file and play
BOSEST_playGoogleTTS($hash, $ttsDir, $text, $volume, $lang, $stopAfterSpeak);
return undef;
}