Einfache TTS PHP-Class über Google Translate

Keiner eine Idee?

Ich hatte das mal mit nem Squeezeserver und auf ipad die iPeng App gelöst.

Auf meinem Tablet ist Windows 7 installiert.
Kann ich da einen Mediaplayer installieren und die Sonds darüber ausgeben lassen oder geht das nur auf dem Server?

Hallo,

ich benutze schon seit längerem erfolgreich die Sprachausgabe über Google translate. Doch plötzlich geht das nicht mehr. Ich erhalte folgende Fehlermeldung:

Warning: file_get_contents(http://translate.google.de/translate_tts?tl=de&q=Danke)::slight_smile: failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable

Folgende skriptzeile ist das:

            $this->mp3data = file_get_contents("http://translate.google.de/translate_tts?tl=de&q={$textneu1url}");

In der Fehlermeldung erscheint bei dem & Zeichen ein „amp;“ darf das sein? Denn wenn ich im Browser den Link ohne das „amp;“ eingebe kommt die Ausgabe auch, sonst geht’s nicht.

  1. Mögliches Problem, könnte auch so eine Captcha eingabe sein von Google, diese mußte ich einmalig am PC eingeben. Dann aber nicht mehr. Kann das am IPS Server eine Rolle spielen?

Wer hat damit aktuell Erfahrungen, wie man am besten Sprachtexte ausgibt.

Vielen Dank für eure Hilfe

Der Aufruf hat sich geändert wenn man das Capcha umgehen will. Da muss am Ende noch zusätzlich was angegeben werden. Hab es grade nicht greifbar.

Moin,

Habe leider das selbe Problem, bin aber bisher noch nicht dazugekommen mich damit zu beschäftigen. Vielleicht wird es ja was am Wochenende!

Viele Grüße
Ralf

Wenn ich zu hause bin kopiere ich die Zeile hier hoch.

So, hier wie versprochen die Anpassung der Zeile, welche den Text übergibt:


$this->mp3data = file_get_contents("http://translate.google.de/translate_tts?tl=de&q={$text}&client=t");

Hallo,

vielen Dank für die Hilfe, das klappt wunderbar. Ab jetzt wird wieder gesprochen.

Grüße Helmut

Moin,

auch von mir besten Dank! :slight_smile:

Viele Grüße
Ralf

Hallo Leute,

Ich habs jetzt auch mal ausprobiert und das Skript entsprechend angepasst:

<?php
// FileName: tts.php
/*
 *  A PHP Class that converts Text into Speech using Google's Text to Speech API
 *
 * Author:
 * Abu Ashraf Masnun
 * http://masnun.com
 *
 */

class TextToSpeech {
    public $mp3data;
    function __construct($text="") {
        $text = trim($text);
        if(!empty($text)) {
            $text = urlencode($text);
#            $this->mp3data = file_get_contents("http://translate.google.de/translate_tts?q={$text}");
            $this->mp3data = file_get_contents("http://translate.google.de/translate_tts?tl=de&q={$text}&client=t");
        }
    }

    function setText($text) {
        $text = trim($text);
        if(!empty($text)) {
            $text = urlencode($text);
#            $this->mp3data = file_get_contents("http://translate.google.de/translate_tts?q={$text}");
				$this->mp3data = file_get_contents("http://translate.google.de/translate_tts?tl=de&q={$text}&client=t");
            return $mp3data;
        } else { return false; }
    }

    function saveToFile($filename) {
        $filename = trim($filename);
        if(!empty($filename)) {
            return file_put_contents($filename,$this->mp3data);
        } else { return false; }
    }

}




#require "tts.php";

$path = IPS_GetKernelDir()."/media/";

$tts = new TextToSpeech("Hallo Welt!");
$tts->saveToFile($path."test_tts.mp3");


?>

Bekomme aber immer wieder:

Warning:  file_get_contents(http://translate.google.de/translate_tts?tl=de&q=Hallo+Welt%21&client=t): failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable
 in C:\IP-Symcon\scripts\29961.ips.php on line 19

Habt ihr ne Idee? :confused:

Ist zwar nicht direkt eine Antwort auf deine Frage. Aber ein anderer PHP-Code löst dein Win 8.1 Problem nicht :wink: Bei SonosBY oder IPSSonos wird nichts anderes gemacht als hier. Funktioniert als das eine bei dir nicht unter Win 8.1, dann funktioniert das andere auch nicht. Also ist die Lösung nicht viele verschiedene Skripte zu testen, sondern der Ursache auf die Schliche zu kommen oder auf ein anderes Win umzustellen.

Grüße,
Chris

Hi Chris,

Genau das ist ja meine Absicht … Der Ursache auf die Schliche zu kommen :smiley:
Das Thema „Win8.1 Problem mit TTS Instanz von IPS“ habe ich erkannt und beiseite gelegt :wink:
Hier geht es ja darum herauszufinden warum obiges Skript keine MP3 Datei erzeugt.
Wenn man diesen URL

[http://translate.google.de/translate_tts?tl=de&q={Hallo Welt}&client=t](http://translate.google.de/translate_tts?tl=de&q={Hallo Welt}&client=t)

in einem Browser aufruft, bekommt man den Text „Hallo Welt“ von Google übersetzt. Das hat mit Win8.1 gar nichts mehr zu tun. Funktioniert im Browser von Win7 wie auch im Browser von Win8.1 :smiley:
Ich habe gesehen, dass SonosBY und IPSSonos es genauso machen. Mich würde nur interessieren ob es sich bei Usern der Skripte in diesem Forum auch so verhält, dass keine MP3 angelegt wird.

Wenn ich mich genau erinnere verwendest du Win7 und die TTS Instanz von IPS. Interessant wäre, wenn du auch nen Aufruf über die GoogleAPI machst. Einen Test wärs doch Wert, hmm?:slight_smile:

Moin,
Habe das selbe Problem wie du. Interessanterweise funktioniert es ab und zu mal… Hatte aber bisher leider keine Zeit mich damit zu beschäftigen…
Hat zuvor bei mir immer einwandfrei funktioniert…

Viele Grüße Ralf

Also mein Tablet läuft unter Windows 7 und mein Server ist ein 2012R2 und damit funktioniert die ganze Sache problemlos. Hast Du ggf. ne Firewall an, die da was verhindert auf dem IPS Server?

Bei mir spricht Google

Nur hat er übelste Probleme mit üöä usw.

Einfach nur das Wort Tür
http://translate.google.de/translate_tts?tl=de&q={tür}&client=t

Klappt das bei euch?

Bei mir sagt Tante Google eindeutig „Tür“ und das auch schon immer.

Bei mir sag sie „a ein Viertel r“
Getestet mit verschiedenen Browsern und Endgeräten. Auch auf dem iPad wenn man den Link direkt auf macht…

An sich machen Umlaute keine Probleme. Falls doch, dann einfach mal URL ENCODE verwenden. War das nicht auch schon mal irgendwo eingebaut? So ist das, wenn jeder sein eigenes Süppchen kocht :-/

Grüße,
Chris

Hab noch Eine Funktion eingebaut. Die äüö in ae ue oe wandelt. Dann geht’s.

// Funktionen
function umlautepas($string){
$upas = Array(„ä“ => „ae“, „ü“ => „ue“, „ö“ => „oe“, „Ä“ => „Ae“, „Ü“ => „Ue“, „Ö“ => „Oe“);
return strtr($string, $upas);
}