08-09-2025 , 16-09-2025
API е достъпна само след като сте захранили акаунта си.
JSON API гласове https://speechgen.io/index.php?r=api/voices.
Чрез API са налични 2 опции за озвучаване на текст:
1 опция - бързо озвучаване на кратки текстове.
2 опция - задаване на задача за озвучаване.
Открийте как да оптимизирате създаването на гласово съдържание чрез интегриране на SpeechGen.io с автоматизираната услуга MAKE. Това ръководство обхваща автоматизацията на процесите за преобразуване на текст в реч, което прави генерирането на гласово съдържание за различни приложения по-лесно и по-ефективно.
URL за вариант 1: https://speechgen.io/index.php?r=api/text
Тази опция има максимален лимит от 2000 знака. Също така максимум 2 промени на гласа. Ако лимитите бъдат превишени, ще получите грешка (статус = -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' - 'ВашиятСекретенКлючВПрофила'
'email' - 'вашиятИмейл@gmail.com'
'voice' - 'Глас'
'text' - 'Текст за преобразуване в реч'
'format' - формат на крайния файл, по подразбиране = mp3, възможни стойности ( 'mp3', 'wav', 'ogg')
'speed' - скорост на възпроизвеждане, по подразбиране 1, (диапазон от 0.1 до 2.0)
'pitch'- височина на гласа, по подразбиране 0, (диапазон от -20 до 20)
'emotion' - емоция на гласа, по подразбиране 'good', възможни стойности ( 'good', 'evil', 'neutral').
'pause_sentence' - размер на паузата между изреченията в милисекунди.
'pause_paragraph' - размер на паузата между параграфите в милисекунди.
'bitrate'=>48000 - Битрейт от 8000 до 192000 Hz.
Емоцията не е налична за всички гласове, вижте тук.
{
"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 на гласа
"status" - текущ статус на озвучаването. Налични от 3 стойности:
0 - процес
1 - завършен успешно
-1 - грешка
"file" - път до аудио файла, наличен ако статус= 1
"file_cors" - път до аудио файла CORS
"error" - текст на грешката, в случай че статус = -1
"parts" - брой озвучени части
"parts_done" - брой завършени части
"duration" - продължителност на аудио файла в секунди, наличен ако статус = 1
"format" - формат на аудио файла
"balans" - баланс на лимита
"cost" - разходи за озвучаване. (увеличава се с озвучаването на части от гласа)
$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);
Стъпка 1: Текстът се изпраща към API и се получава уникален ID на гласа (id).
Стъпка 2: Заявка за резултата от озвучаването чрез изпращане на идентификатора на озвучаването (id).
Този метод няма ограничения и позволява озвучаване на текст до 1 000 000 знака. Озвучаването се извършва по ред на приоритет (първи по време, първи обслужен) и може да отнеме от 1 до няколко минути, в зависимост от дължината на текста.
$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' - 'ВашиятСекретенКлючВПрофила'
'email' - 'вашиятИмейл@gmail.com'
'voice' - 'Глас'
'text' - 'Текст'
'format' - формат на крайния файл, по подразбиране = mp3, възможни стойности( 'mp3', 'wav', 'ogg')
'speed' - скорост, по подразбиране 1, (диапазон от 0.1 до 2.0)
'pitch'- височина на гласа, по подразбиране 0, (диапазон от -20 до 20)
'emotion' - емоционална окраска, по подразбиране 'good', възможни стойности ( 'good', 'evil', 'neutral').
'pause_sentence' - размер на паузата между изреченията в милисекунди.
'pause_paragraph' - размер на паузата между параграфите в милисекунди.
'bitrate'=>48000 - Битрейт от 8000 до 192000 Hz.
Не е налично за всички гласове, вижте тук.
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - уникален ID на гласа
"status" - текущ статус на озвучаването. Налични от 2 стойности:
1 - задачата е добавена успешно
-1 - грешка
"error" - текст на грешката, в случай че статус = -1
"parts" - брой озвучени части
"parts_done" - брой завършени части
"format" - формат на аудио файла
"balans" - баланс на лимита на акаунта
"cost" - разходи за озвучаване. (увеличава се с озвучаването на части от гласа)
Стъпка 2. След създаване на задача и получаване на идентификатор (id), трябва да се изпрати заявка към https://speechgen.io/index.php?r=api/result, за да се провери резултатът.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'id'=>4153594,
];
'token' - ВашиятСекретенКлючВПрофила
'email' - вашиятИмейл@gmail.com
'id' - Уникален ID на гласа, получен в стъпка 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 на гласа
"status" - текущ статус на озвучаването. Налични от 3 стойности:
0 - в процес
1 - завършен успешно
-1 - грешка
"file" - път до аудио файла, наличен ако статус = 1
"error" - текст на грешката, в случай че статус = -1
"parts" - брой озвучени части
"parts_done" - брой завършени части
"duration" - продължителност на аудио файла в секунди, наличен ако статус = 1
"format" - формат на аудио файла
"balans" - баланс на лимита на акаунта
"cost" - разходи за озвучаване. (увеличава се с озвучаването на части от гласа)
"cuts" - Масив от фрагменти, ако е използван тагът "cut" в текста
//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);
}