08-09-2025 , 16-09-2025
API:et är endast tillgängligt efter att du har fyllt på ditt konto.
JSON API-röster https://speechgen.io/index.php?r=api/voices.
Det finns 2 alternativ för textröstning tillgängliga via API:et:
Alternativ 1 - snabb röstning av korta texter.
Alternativ 2 - inställning av en röstningsuppgift.
Upptäck hur du kan effektivisera skapandet av röstinnehåll genom att integrera SpeechGen.io med automations-tjänsten MAKE. Den här guiden täcker automatisering av text-till-tal-processer, vilket gör det enklare och mer effektivt att generera röstinnehåll för olika applikationer.
URL för variant 1: https://speechgen.io/index.php?r=api/text
Det här alternativet har en maximal gräns på 2000 tecken. Och även ett maximum av 2 röstbyten. Om gränserna överskrids får du ett fel (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' - 'SekretNyckelIProfilen'
'email' - 'dinMail@gmail.com'
'voice' - 'Röst'
'text' - 'Text för text till tal'
'format' - format på resultatfilen, standard = mp3, möjliga värden ( 'mp3', 'wav', 'ogg')
'speed' - uppspelningshastighet, standard 1, (intervall från 0.1 till 2.0)
'pitch'- röstens tonhöjd, standard 0, (intervall från -20 till 20)
'emotion' - röstens känsla, standard 'good', möjliga värden ( 'good', 'evil', 'neutral').
'pause_sentence' - storleken på pausen mellan meningar i millisekunder.
'pause_paragraph' - storleken på pausen mellan stycken i millisekunder.
'bitrate'=>48000 - Bitrate från 8000 till 192000 Hz.
Känslor är inte tillgängliga för alla röster, se här.
{
"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" - unikt röst-ID
"status" - aktuell status för röstning. Tillgänglig från 3 värden:
0 - process
1 - slutförd framgångsrikt
-1 - fel
"file" - sökväg till ljudfil, tillgänglig om status= 1
"file_cors" - sökväg till ljudfil CORS
"error" - feltext, vid fel, om status = -1
"parts" - antal röstningar
"parts_done" - antal slutförda delar
"duration" - ljudfilens varaktighet i sekunder, tillgänglig om status = 1
"format" - ljudfilens format
"balans" - gräns för saldo
"cost" - kostnader för röstning. (ökar när röst-delarna dubbas)
$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);
Steg 1: Text skickas till API:et och ett unikt röst-ID erhålls (id).
Steg 2: Begär resultatet av dubbningen genom att skicka dubbnings-ID:t (id).
Denna metod har inga begränsningar och tillåter textdubbing av upp till 1 000 000 tecken. Dubbningen sker i prioritetsordning (först till kvarn) och kan ta från 1 till flera minuter, beroende på textens längd.
$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' - 'SekretNyckelIProfilen'
'email' - 'dinMail@gmail.com'
'voice' - 'Röst'
'text' - 'Text'
'format' - format på resultatfilen, standard = mp3, möjliga värden( 'mp3', 'wav', 'ogg')
'speed' - hastighet, standard 1, (intervall från 0.1 till 2.0)
'pitch'- röstens tonhöjd, standard 0, (intervall från -20 till 20)
'emotion' - känslomässig färgning, standard 'good', möjliga värden ( 'good', 'evil', 'neutral').
'pause_sentence' - storleken på pausen mellan meningar i millisekunder.
'pause_paragraph' - storleken på pausen mellan stycken i millisekunder.
'bitrate'=>48000 - Bitrate från 8000 till 192000 Hz.
Inte tillgängligt för alla röster, se här.
{
"id":"4153594",
"status":"0",
"parts":"5",
"parts_done":"0",
"format":"mp3",
"error":"",
"balans":"3331.2720000314",
"cost":"0.00"
}
"id" - unikt röst-ID
"status" - aktuell status för röstning. Tillgänglig från 2 värden:
1 - uppgift tillagd framgångsrikt
-1 - fel
"error" - feltext, vid fel, om status = -1
"parts" - antal röstningar
"parts_done" - antal slutförda delar
"format" - ljudfilens format
"balans" - saldot för kontogränser
"cost" - kostnader för röstning. (ökar när röst-delarna dubbas)
Steg 2. Efter att ha skapat en uppgift och erhållit ett ID (id), måste en begäran skickas till https://speechgen.io/index.php?r=api/result, för att ta reda på resultatet.
$data = [
'token'=>'SekretKeyInYourProfile',
'email'=>'yourMail@gmail.com',
'id'=>4153594,
];
'token' - SekretNyckelIProfilen
'email' - dinMail@gmail.com
'id' - Unikt röst-ID erhållet i steg 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" - unikt röst-ID
"status" - aktuell status för röstning. Tillgänglig från 3 värden:
0 - pågår
1 - slutförd framgångsrikt
-1 - fel
"file" - sökväg till ljudfil, tillgänglig om status = 1
"error" - feltext, vid fel, om status = -1
"parts" - antal röstningar
"parts_done" - antal slutförda delar
"duration" - ljudfilens varaktighet i sekunder, tillgänglig om status = 1
"format" - ljudfilens format
"balans" - saldot för kontogränser
"cost" - kostnader för röstning. (ökar när röst-delarna dubbas)
"cuts" - Array av fragment, om taggen "cut" används i texten
//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);
}