08-09-2025 , 16-09-2025
L'API est disponible uniquement après avoir approvisionné votre compte.
API JSON des voix https://speechgen.io/index.php?r=api/voices.
Il existe 2 options de voix off de texte disponibles via l'API :
Option 1 : voix off rapide de textes courts.
Option 2 : définition d'une tâche de voix off.
Découvrez comment simplifier la création de contenu vocal en intégrant SpeechGen.io avec le service d'automatisation MAKE. Ce guide couvre l'automatisation des processus de synthèse vocale, rendant la génération de contenu vocal plus simple et plus efficace pour diverses applications.
URL pour la variante 1 : https://speechgen.io/index.php?r=api/text
Cette option a une limite maximale de 2000 caractères. Et aussi un maximum de 2 changements de voix. Si les limites sont dépassées, vous obtiendrez une erreur (statut = -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' - 'CléSecrèteDansVotreProfil'
'email' - 'votreMail@gmail.com'
'voice' - 'Voix'
'text' - 'Texte pour la synthèse vocale'
'format' - format du fichier résultant, par défaut = mp3, valeurs possibles ('mp3', 'wav', 'ogg')
'speed' - vitesse de lecture, par défaut 1, (plage de 0.1 à 2.0)
'pitch' - hauteur de la voix, par défaut 0, (plage de -20 à 20)
'emotion' - émotion de la voix, par défaut 'good', valeurs possibles ('good', 'evil', 'neutral').
'pause_sentence' - La taille de la pause entre les phrases en millisecondes.
'pause_paragraph' - La taille de la pause entre les paragraphes en millisecondes.
'bitrate'=>48000 - Débit binaire de 8000 à 192000 Hz.
L'émotion n'est pas disponible pour toutes les voix, regardez ici.
{
"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" - identifiant unique de la voix
"status" - statut actuel de la voix off. Disponible à partir de 3 valeurs :
0 - en cours
1 - terminé avec succès
-1 - erreur
"file" - chemin du fichier audio, disponible si statut= 1
"file_cors" - chemin du fichier audio CORS
"error" - texte de l'erreur, en cas de, si statut = -1
"parts" - nombre de voix off
"parts_done" - nombre de parties terminées
"duration" - durée du fichier audio en secondes, disponible si statut = 1
"format" - format du fichier audio
"balans" - solde de la limite
"cost" - coûts de la voix off. (augmente à mesure que les parties vocales sont doublées)
$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);
Étape 1 : Le texte est envoyé à l'API et un identifiant vocal unique (id) est obtenu.
Étape 2 : Demandez le résultat du doublage en envoyant l'identifiant du doublage (id).
Cette méthode n'a pas de limitations et permet le doublage de texte jusqu'à 1 000 000 de caractères. Le doublage s'effectue par ordre de priorité (premier arrivé, premier servi) et peut prendre de 1 à plusieurs minutes, en fonction de la longueur du texte.
$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' - 'CléSecrèteDansVotreProfil'
'email' - 'votreMail@gmail.com'
'voice' - 'Voix'
'text' - 'Texte'
'format' - format du fichier résultant, par défaut = mp3, valeurs possibles ('mp3', 'wav', 'ogg')
'speed' - vitesse, par défaut 1, (plage de 0.1 à 2.0)
'pitch' - hauteur de la voix, par défaut 0, (plage de -20 à 20)
'emotion' - coloration émotionnelle, par défaut 'good', valeurs possibles ('good', 'evil', 'neutral').
'pause_sentence' - La taille de la pause entre les phrases en millisecondes.
'pause_paragraph' - La taille de la pause entre les paragraphes en millisecondes.
'bitrate'=>48000 - Débit binaire de 8000 à 192000 Hz.
Non disponible pour toutes les voix, regardez ici.
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - identifiant unique de la voix
"status" - statut actuel de la voix off. Disponible à partir de 2 valeurs :
1 - tâche ajoutée avec succès
-1 - erreur
"error" - texte de l'erreur, en cas de, si statut = -1
"parts" - nombre de voix off
"parts_done" - nombre de parties terminées
"format" - format du fichier audio
"balans" - solde des limites du compte
"cost" - coûts de la voix off. (augmente à mesure que les parties vocales sont doublées)
Étape 2. Après avoir créé une tâche et obtenu un identifiant (id), une requête doit être envoyée à https://speechgen.io/index.php?r=api/result, pour connaître le résultat.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'id'=>4153594,
];
'token' - CléSecrèteDansVotreProfil
'email' - votreMail@gmail.com
'id' - Identifiant vocal unique obtenu à l'étape 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" - identifiant unique de la voix
"status" - statut actuel de la voix off. Disponible à partir de 3 valeurs :
0 - en cours
1 - terminé avec succès
-1 - erreur
"file" - chemin du fichier audio, disponible si statut = 1
"error" - texte de l'erreur, en cas de, si statut = -1
"parts" - nombre de voix off
"parts_done" - nombre de parties terminées
"duration" - durée du fichier audio en secondes, disponible si statut = 1
"format" - format du fichier audio
"balans" - solde des limites du compte
"cost" - coûts de la voix off. (augmente à mesure que les parties vocales sont doublées)
"cuts" - Tableau de fragments, si la balise "cut" est utilisée dans le texte
//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);
}