08-09-2025 , 16-09-2025
Die API ist erst verfügbar, nachdem Sie Ihr Konto aufgeladen haben.
JSON API-Stimmen https://speechgen.io/index.php?r=api/voices.
Über die API stehen 2 Text-Voiceover-Optionen zur Verfügung:
1. Option – schnelle Sprachausgabe kurzer Texte.
2. Option – Festlegen einer Sprachausgabeaufgabe.
Erfahren Sie, wie Sie die Erstellung von Sprachinhalten optimieren können, indem Sie SpeechGen.io mit dem Automatisierungsservice MAKE integrieren. Dieser Leitfaden behandelt die Automatisierung von Text-to-Speech-Prozessen und macht die Generierung von Sprachinhalten für verschiedene Anwendungen einfacher und effizienter.
URL für Variante 1: https://speechgen.io/index.php?r=api/text
Diese Option hat ein maximales Limit von 2000 Zeichen. Und auch maximal 2 Sprachwechsel. Wenn die Limits überschritten werden, erhalten Sie einen Fehler (Status = -1).
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'voice'=>'John',
'text'=>"Text for text to Speech",
'format'=>'mp3',
'speed'=>1.1,
'pitch'=>0.8,
'emotion'=>'good',
'pause_sentence'=>300,
'pause_paragraph'=>400,
'bitrate'=>48000,
];
'token' - 'SekretKeyInYourProfile'
'email' - 'yourMail@gmail.com'
'voice' - 'Stimme'
'text' - 'Text für Text-to-Speech'
'format' - Format der Ergebnisdatei, Standard = mp3, mögliche Werte ( 'mp3', 'wav', 'ogg')
'speed' - Wiedergabegeschwindigkeit, Standard 1, (Bereich von 0,1 bis 2,0)
'pitch'- Tonhöhe der Stimme, Standard 0, (Bereich von -20 bis 20)
'emotion' - Emotion der Stimme, Standard 'good', mögliche Werte ( 'good', 'evil', 'neutral').
'pause_sentence' - Die Länge der Pause zwischen Sätzen in Millisekunden.
'pause_paragraph' - Die Länge der Pause zwischen Absätzen in Millisekunden.
'bitrate'=>48000 - Bitrate von 8000 bis 192000 Hz.
Emotionen sind nicht für alle Stimmen verfügbar. Schauen Sie hier nach.
{
"id":"4153594",
"status":"0",
"file":"result.mp3",
"file_cors":"result_cors.mp3",
"parts":"5",
"parts_done":"2",
"duration":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.06"
}
"id" - eindeutige Stimm-ID
"status" - aktueller Sprachausgabestatus. Verfügbar aus 3 Werten:
0 - Prozess
1 - erfolgreich abgeschlossen
-1 - Fehler
"file" - Pfad zur Audiodatei, verfügbar, wenn Status = 1
"file_cors" - Pfad zur Audiodatei CORS
"error" - Fehlermeldung, falls Status = -1
"parts" - Anzahl der Sprachausgaben
"parts_done" - Anzahl der abgeschlossenen Teile
"duration" - Dauer der Audiodatei in Sekunden, verfügbar, wenn Status = 1
"format" - Format der Audiodatei
"balans" - Limit-Guthaben
"cost" - Kosten der Sprachausgabe. (wird erhöht, wenn Sprachausgabeteile synchronisiert werden)
$data = [
'token' => '123456',
'email' => 'mail@mail.com',
'voice' => 'John',
'text' => "Text",
'format' => 'mp3',
'speed' => 1.1,
'pitch' => 0,
'emotion' => 'good',
];
$url = "https://speechgen.io/index.php?r=api/text";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
var_dump($response);
$response = json_decode($response, true);
if (curl_errno($ch)) {
var_dump("Connection error with text recognition server, " . curl_error($ch));
} else {
var_dump($response);
if ($response["status"] == 1) {
//Copy
echo " ok " . $response["file"];
copy($response["file"], 'Filename.' . $response["format"]);
} else {
//Error, no voiceover possible
echo $response["error"];
}
}
curl_close($ch);
Schritt 1: Der Text wird an die API gesendet und eine eindeutige Sprach-ID (id) erhalten.
Schritt 2: Fordern Sie das Ergebnis der Synchronisation an, indem Sie den Synchronisationsidentifikator (id) senden.
Diese Methode hat keine Einschränkungen und ermöglicht die Synchronisation von Texten mit bis zu 1.000.000 Zeichen. Die Synchronisation erfolgt nach Priorität (Wer zuerst kommt, mahlt zuerst) und kann je nach Textlänge 1 bis mehrere Minuten dauern.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'voice'=>'John',
'text'=>"Text",
'format'=>'mp3',
'speed'=>1.1,
'pitch'=>0.8,
'emotion'=>'good',
'pause_sentence'=>300,
'pause_paragraph'=>400,
'bitrate'=>48000,
];
'token' - 'SekretKeyInYourProfile'
'email' - 'yourMail@gmail.com'
'voice' - 'Stimme'
'text' - 'Text'
'format' - Format der Ergebnisdatei, Standard = mp3, mögliche Werte ( 'mp3', 'wav', 'ogg')
'speed' - Geschwindigkeit, Standard 1, (Bereich von 0,1 bis 2,0)
'pitch'- Tonhöhe der Stimme, Standard 0, (Bereich von -20 bis 20)
'emotion' - emotionale Färbung, Standard 'good', mögliche Werte ( 'good', 'evil', 'neutral').
'pause_sentence' - Die Länge der Pause zwischen Sätzen in Millisekunden.
'pause_paragraph' - Die Länge der Pause zwischen Absätzen in Millisekunden.
'bitrate'=>48000 - Bitrate von 8000 bis 192000 Hz.
Nicht für alle Stimmen verfügbar, hier nachschauen.
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - eindeutige Stimm-ID
"status" - aktueller Sprachausgabestatus. Verfügbar aus 2 Werten:
1 - Aufgabe erfolgreich hinzugefügt
-1 - Fehler
"error" - Fehlermeldung, falls Status = -1
"parts" - Anzahl der Sprachausgaben
"parts_done" - Anzahl der abgeschlossenen Teile
"format" - Format der Audiodatei
"balans" - das Guthaben der Kontolimits
"cost" - Kosten der Sprachausgabe. (wird erhöht, wenn Sprachausgabeteile synchronisiert werden)
Schritt 2. Nach dem Erstellen einer Aufgabe und dem Erhalt einer Kennung (id) muss eine Anfrage an https://speechgen.io/index.php?r=api/result gesendet werden, um das Ergebnis zu ermitteln.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'id'=>4153594,
];
'token' - SekretKeyInYourProfile
'email' - yourMail@gmail.com
'id' - Eindeutige Stimm-ID aus Schritt 1
{
"id":"4153594",
"status":"0",
"file":"result.mp3",
"cuts":["result_1.mp3","result_2.mp3",...],
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - eindeutige Stimm-ID
"status" - aktueller Sprachausgabestatus. Verfügbar aus 3 Werten:
0 - in Bearbeitung
1 - erfolgreich abgeschlossen
-1 - Fehler
"file" - Pfad zur Audiodatei, verfügbar, wenn Status = 1
"error" - Fehlermeldung, falls Status = -1
"parts" - Anzahl der Sprachausgaben
"parts_done" - Anzahl der abgeschlossenen Teile
"duration" - Dauer der Audiodatei in Sekunden, verfügbar, wenn Status = 1
"format" - Format der Audiodatei
"balans" - das Guthaben der Kontolimits
"cost" - Kosten der Sprachausgabe. (wird erhöht, wenn Sprachausgabeteile synchronisiert werden)
"cuts" - Array von Fragmenten, wenn der Tag "cut" im Text verwendet wird
//STEP 1
$data = [
'token' => '123456',
'email' => 'mail@mail.com',
'voice' => 'John',
'text' => "Text",
'format' => 'mp3',
'speed' => 1.1,
'pitch' => 0,
'emotion' => 'good',
];
$url = "https://speechgen.io/index.php?r=api/longtext";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
var_dump($response);
$response = json_decode($response, true);
$resultId = 0;
if (curl_errno($ch)) {
var_dump("Error in connecting to the text recognition server, " . curl_error($ch));
} else {
var_dump($response);
if ($response["status"] == 1) {
//Copy
echo " ok " . $response["file"];
copy($response["file"], 'FileName.' . $response["format"]);
} elseif ($response["status"] == 0) {
//Remember the voice ID, and ask for the result later
$resultId = $response["id"];
} else {
//Error, no voiceover possible
echo $response["error"];
}
}
curl_close($ch);
//STEP 2
// Every minute we make a query-check of the result
if($resultId){
$data = [
'token'=>'123456',
'email'=>'mail@mail.com',
'id'=>$resultId,
];
$url = "https://speechgen.io/index.php?r=api/result";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$response = curl_exec($ch);
var_dump($response);
$response = json_decode($response,true);
if (curl_errno($ch)) {
var_dump("Error in connecting to the text recognition server, ".curl_error($ch));
}else{
var_dump($response);
if($response["status"] == 1){
//Copy
echo " ok ".$response["file"];
copy($response["file"], 'FileMane.' . $response["format"]);
}elseif($response["status"] == 0){
//Not ready yet, we will ask for the result later
echo "In process...";
}else{
//Error, no voiceover possible
echo $response["error"];
}
}
curl_close($ch);
}