07-09-2025 , 16-09-2025
API จะใช้งานได้หลังจากที่คุณเติมเงินในบัญชีของคุณแล้วเท่านั้น
เสียง JSON API https://speechgen.io/index.php?r=api/voices.
มีตัวเลือกการแปลงข้อความเป็นเสียง 2 แบบผ่าน API:
ตัวเลือกที่ 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' - 'SekretKeyInYourProfile'
'email' - 'yourMail@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" - รหัสเสียงที่ไม่ซ้ำกัน
"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)
ขั้นตอนที่ 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' - 'SekretKeyInYourProfile'
'email' - 'yourMail@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" - รหัสเสียงที่ไม่ซ้ำกัน
"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' - SekretKeyInYourProfile
'email' - yourMail@gmail.com
'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" - รหัสเสียงที่ไม่ซ้ำกัน
"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);
}