08-09-2025 , 16-09-2025
API-ul este disponibil doar după ce v-ați alimentat contul.
Vocile API JSON https://speechgen.io/index.php?r=api/voices.
Există 2 opțiuni de voice-over text disponibile prin API:
Opțiunea 1 - voice-over rapid pentru texte scurte.
Opțiunea 2 - setarea unei sarcini de voice-over.
Descoperiți cum să eficientizați crearea de conținut vocal prin integrarea SpeechGen.io cu serviciul de automatizare MAKE. Acest ghid acoperă automatizarea proceselor text-to-speech, făcând mai simplă și mai eficientă generarea de conținut vocal pentru diverse aplicații.
URL pentru varianta 1: https://speechgen.io/index.php?r=api/text
Această opțiune are o limită maximă de 2000 de caractere. De asemenea, o limită maximă de 2 schimbări de voce. Dacă limitele sunt depășite, veți primi o eroare (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' - 'CheiaSecretăDinProfilulDumneavoastră'
'email' - 'adresaMea@gmail.com'
'voice' - 'Voce'
'text' - 'Text pentru Text în Vorbire'
'format' - formatul fișierului rezultat, implicit = mp3, valori posibile ( 'mp3', 'wav', 'ogg')
'speed' - viteza de redare, implicit 1, (interval de la 0.1 la 2.0)
'pitch'- tonalitatea vocii, implicit 0, (interval de la -20 la 20)
'emotion' - emoția vocii, implicit 'good', valori posibile ( 'good', 'evil', 'neutral').
'pause_sentence' - Mărimea pauzei dintre propoziții în milisecunde.
'pause_paragraph' - Mărimea pauzei dintre paragrafe în milisecunde.
'bitrate'=>48000 - Bitrate de la 8000 la 192000 Hz.
Emoția nu este disponibilă pentru toate vocile, verificați aici.
{
"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" - ID unic al vocii
"status" - starea curentă a voice-over-ului. Disponibil din 3 valori:
0 - în proces
1 - finalizat cu succes
-1 - eroare
"file" - calea fișierului audio, disponibil dacă status= 1
"file_cors" - calea fișierului audio CORS
"error" - textul erorii, în caz de, dacă status = -1
"parts" - numărul de voice-over-uri
"parts_done" - numărul de părți finalizate
"duration" - durata fișierului audio în secunde, disponibil dacă status = 1
"format" - formatul fișierului audio
"balans" - limita de credit
"cost" - costurile voice-over-ului. (se mărește pe măsură ce părțile vocale sunt dublate)
$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);
Pasul 1: Textul este trimis către API și se obține un ID unic al vocii (id).
Pasul 2: Solicitați rezultatul dublării trimițând identificatorul de dublare (id).
Această metodă nu are limitări și permite dublarea textelor de până la 1.000.000 de caractere. Dublarea se face în ordinea priorității (primul venit, primul servit) și poate dura de la 1 la câteva minute, în funcție de lungimea textului.
$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' - 'CheiaSecretăDinProfilulDumneavoastră'
'email' - 'adresaMea@gmail.com'
'voice' - 'Voce'
'text' - 'Text'
'format' - formatul fișierului rezultat, implicit = mp3, valori posibile( 'mp3', 'wav', 'ogg')
'speed' - viteză, implicit 1, (interval de la 0.1 la 2.0)
'pitch'- tonalitatea vocii, implicit 0, (interval de la -20 la 20)
'emotion' - coloratura emoțională, implicit 'good', valori posibile ( 'good', 'evil', 'neutral').
'pause_sentence' - Mărimea pauzei dintre propoziții în milisecunde.
'pause_paragraph' - Mărimea pauzei dintre paragrafe în milisecunde.
'bitrate'=>48000 - Bitrate de la 8000 la 192000 Hz.
Nu este disponibil pentru toate vocile, verificați aici.
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - ID unic al vocii
"status" - starea curentă a voice-over-ului. Disponibil din 2 valori:
1 - sarcina a fost adăugată cu succes
-1 - eroare
"error" - textul erorii, în caz de, dacă status = -1
"parts" - numărul de voice-over-uri
"parts_done" - numărul de părți finalizate
"format" - formatul fișierului audio
"balans" - creditul contului
"cost" - costurile voice-over-ului. (se mărește pe măsură ce părțile vocale sunt dublate)
Pasul 2. După crearea unei sarcini și obținerea unui identificator (id), trebuie trimisă o cerere către https://speechgen.io/index.php?r=api/result, pentru a afla rezultatul.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'id'=>4153594,
];
'token' - CheiaSecretăDinProfilulDumneavoastră
'email' - adresaMea@gmail.com
'id' - ID unic al vocii obținut la pasul 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" - ID unic al vocii
"status" - starea curentă a voice-over-ului. Disponibil din 3 valori:
0 - în desfășurare
1 - finalizat cu succes
-1 - eroare
"file" - calea fișierului audio, disponibil dacă status = 1
"error" - textul erorii, în caz de, dacă status = -1
"parts" - numărul de voice-over-uri
"parts_done" - numărul de părți finalizate
"duration" - durata fișierului audio în secunde, disponibil dacă status = 1
"format" - formatul fișierului audio
"balans" - limita de credit a contului
"cost" - costurile voice-over-ului. (se mărește pe măsură ce părțile vocale sunt dublate)
"cuts" - Array de fragmente, dacă tag-ul "cut" este utilizat în text
//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);
}