08-09-2025 , 16-09-2025
La API solo está disponible después de haber financiado su cuenta.
Voces de la API JSON https://speechgen.io/index.php?r=api/voices.
Hay 2 opciones de voz para texto disponibles a través de la API:
Opción 1: voz rápida de textos cortos.
Opción 2: configuración de una tarea de voz.
Descubra cómo optimizar la creación de contenido de voz integrando SpeechGen.io con el servicio de automatización MAKE. Esta guía cubre la automatización de procesos de texto a voz, haciendo que la generación de contenido de voz para diversas aplicaciones sea más simple y eficiente.
URL para la variante 1: https://speechgen.io/index.php?r=api/text
Esta opción tiene un límite máximo de 2000 caracteres. Y también un máximo de 2 cambios de voz. Si se superan los límites, recibirá un error (estado = -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' - 'Voz'
'text' - 'Texto para Texto a Voz'
'format' - formato del archivo resultante, por defecto = mp3, valores posibles ( 'mp3', 'wav', 'ogg')
'speed' - velocidad de reproducción, por defecto 1, (rango de 0.1 a 2.0)
'pitch'- tono de voz, por defecto 0, (rango de -20 a 20)
'emotion' - emoción de la voz, por defecto 'good', valores posibles ( 'good', 'evil', 'neutral').
'pause_sentence' - El tamaño de la pausa entre frases en milisegundos.
'pause_paragraph' - El tamaño de la pausa entre párrafos en milisegundos.
'bitrate'=>48000 - Tasa de bits de 8000 a 192000 Hz.
La emoción no está disponible para todas las voces, consúltelo aquí.
{
"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 de voz único
"status" - estado actual de la voz. Disponible en 3 valores:
0 - proceso
1 - completado con éxito
-1 - error
"file" - ruta del archivo de audio, disponible si status= 1
"file_cors" - ruta del archivo de audio CORS
"error" - texto del error, en caso de, si status = -1
"parts" - número de voces
"parts_done" - número de piezas completadas
"duration" - duración del archivo de audio en segundos, disponible si status = 1
"format" - formato del archivo de audio
"balans" - saldo límite
"cost" - costos de voz. (aumenta a medida que se doblan las partes de voz)
$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);
Paso 1: El texto se envía a la API y se obtiene un ID de voz único (id).
Paso 2: Solicite el resultado de la voz enviando el identificador de voz (id).
Este método no tiene limitaciones y permite la voz de textos de hasta 1.000.000 de caracteres. La voz se realiza por orden de prioridad (el primero en llegar es el primero en ser atendido) y puede tardar de 1 a varios minutos, dependiendo de la longitud del texto.
$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' - 'Voz'
'text' - 'Texto'
'format' - formato del archivo resultante, por defecto = mp3, valores posibles( 'mp3', 'wav', 'ogg')
'speed' - velocidad, por defecto 1, (rango de 0.1 a 2.0)
'pitch'- tono de voz, por defecto 0, (rango de -20 a 20)
'emotion' - coloración emocional, por defecto 'good', valores posibles ( 'good', 'evil', 'neutral').
'pause_sentence' - El tamaño de la pausa entre frases en milisegundos.
'pause_paragraph' - El tamaño de la pausa entre párrafos en milisegundos.
'bitrate'=>48000 - Tasa de bits de 8000 a 192000 Hz.
No disponible para todas las voces, consúltelo aquí.
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - ID de voz único
"status" - estado actual de la voz. Disponible en 2 valores:
1 - tarea añadida con éxito
-1 - error
"error" - texto del error, en caso de, si status = -1
"parts" - número de voces
"parts_done" - número de piezas completadas
"format" - formato del archivo de audio
"balans" - el saldo de los límites de la cuenta
"cost" - costos de voz. (aumenta a medida que se doblan las partes de voz)
Paso 2. Después de crear una tarea y obtener un identificador (id), se debe enviar una solicitud a https://speechgen.io/index.php?r=api/result, para conocer el resultado.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'id'=>4153594,
];
'token' - SekretKeyInYourProfile
'email' - yourMail@gmail.com
'id' - ID de voz único obtenido en el paso 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 de voz único
"status" - estado actual de la voz. Disponible en 3 valores:
0 - en proceso
1 - completado con éxito
-1 - error
"file" - ruta del archivo de audio, disponible si status = 1
"error" - texto del error, en caso de, si status = -1
"parts" - número de voces
"parts_done" - número de piezas completadas
"duration" - duración del archivo de audio en segundos, disponible si status = 1
"format" - formato del archivo de audio
"balans" - el saldo de los límites de la cuenta
"cost" - costos de voz. (aumenta a medida que se doblan las partes de voz)
"cuts" - Matriz de fragmentos, si se utiliza la etiqueta "cut" en el texto
//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);
}