เสียงพูดภาษาอังกฤษเป็นข้อความ (ASR) PRO
2 ICต่อ 60 วินาที
ทดลองใช้ Demo
ทดลองใช้ AI Demo
เข้าสู่ระบบหรือสร้างบัญชีฟรีเพื่อใช้งาน AI Demo และสำรวจ API ที่ทรงพลังของเรา
รับ 50 เครดิตฟรี (IC) เมื่อสมัครสมาชิก!
โปรโมชันหมดเขต 31 ธันวาคม 2568
เริ่มต้นใช้งาน
ข้อกำหนดเบื้องต้น
- API key จาก บริษัท ไอแอพพ์เทคโนโลยี
- ไฟล์เสียงในรูปแบบที่รองรับ
- ความยาวไฟล์สูงสุด: ไม่เกิน 1 ชั่วโมง
คุณสมบัติหลัก
- การดึงข้อความจากไฟล์เสียง
- การจำแนกผู้พูด (Speaker Diarization) สำหรับการสนทนาที่มีผู้พูดหลายคน
- รองรับรูปแบบไฟล์เสียงที่หลากหลาย
- การถอดเสียงที่มีความแม่นยำสูงพร้อมความเข้าใจบริบท
ความปลอดภัยและการปฏิบัติตามข้อกำหนด
- การยืนยันตัวตนด้วย API key
- เป็นไปตามข้อกำหนด GDPR และ PDPA
API Endpoints
| Endpoint | Method | คำอธิบาย | ราคา |
|---|---|---|---|
/v3/store/speech/speech-to-text/pro/enLegacy: /asr/v3/en/pro | POST | แปลงเสียงพูดภาษาอังกฤษเป็นข้อความ (โมเดล Pro พร้อม LLM) | 2 IC ต่อ 60 วินาที |
การใช้งาน API
รูปแบบไฟล์ที่รองรับ
API รองรับรูปแบบไฟล์เสียงและวิดีโอต่อไปนี้:
- เสียง:
.mp3,.wav,.m4a,.aac,.aif,.cda,.flac,.mid,.ogg,.wma
Endpoint: POST /v3/store/speech/speech-to-text/pro/en
Header:
Content-Type: multipart/form-dataapikey: API key ของคุณสำหรับการยืนยันตัวตน
Form Parameters:
| Parameter | Type | จำเป็น | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
file | File | ใช่ | - | ไฟล์เสียงที่จะทำการถอดเสียง |
prompt | String | ไม่ | "base" | เทมเพลต Prompt ที่จะใช้ |
chunk_size | Integer | ไม่ | 20 | ขนาดเป็นวินาทีสำหรับการประมวลผลส่วนของเสียง |
use_asr_pro | Boolean | ไม่ | true | ใช้โมเดล ASR Pro |
ตัวอย่างคำขอ:
curl -X POST "https://api.iapp.co.th/v3/store/speech/speech-to-text/pro/en" \
-H "Content-Type: multipart/form-data" \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/your/audio.mp3" \
-F "prompt=base" \
-F "chunk_size=20" \
-F "use_asr_pro=true"
ตัวอย่างการตอบกลับ:
{
"output": [
{
"text": "ข้อความที่ถอดเสียงจากส่วนที่หนึ่ง",
"start": 0.0,
"end": 5.28,
"speaker": "SPEAKER_00",
"segment": 0
},
{
"text": "ข้อความที่ถอดเสียงจากส่วนที่สอง",
"start": 5.28,
"end": 10.56,
"speaker": "SPEAKER_01",
"segment": 1
}
],
"audio_duration_in_seconds": 60.5,
"uploaded_file_name": "example.mp3",
"processing_time_in_seconds": 12.34,
"use_asr_pro": true,
"asr_pro_is_used": true,
"iapp": {
"seconds": 60.5
}
}
รหัสสถานะการตอบกลับ
200 OK: คำขอสำเร็จ400 Bad Request: คำขอไม่ถูกต้อง (เช่น ไม่มีการอัปโหลดไฟล์, รูปแบบไฟล์ไม่รองรับ)404 Not Found: ไม่พบ Task ID500 Internal Server Error: การประมวลผลล้มเหลว, ข้อผิดพลาดของเซิร์ฟเวอร์
หมายเหตุ
- รองรับการจำแนกผู้พูด โดยแต่ละส่วนจะมีทั้ง ID ผู้พูดและข้อมูลเวลา
ตัวอย่างโค้ด
Curl
curl -X POST https://api.iapp.co.th/v3/store/speech/speech-to-text/pro/en \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/audio.mp3"
ตัวอย่าง Python
import requests
def transcribe_audio(file_path, api_key):
url = "https://api.iapp.co.th/v3/store/speech/speech-to-text/pro/en"
headers = {"apikey": api_key}
files = {"file": open(file_path, "rb")}
data = {
"prompt": "base",
"chunk_size": 20,
"use_asr_pro": true
}
response = requests.post(url, headers=headers, files=files, data=data)
if response.status_code == 200:
return response.json()
else:
return f"Error: {response.status_code}, {response.text}"
ตัวอย่าง JavaScript
async function transcribeAudio(filePath, apiKey) {
const url = "https://api.iapp.co.th/v3/store/speech/speech-to-text/pro/en"
const formData = new FormData()
formData.append("file", await fetch(filePath).then((r) => r.blob()))
formData.append("prompt", "base")
formData.append("chunk_size", "20")
formData.append("use_asr_pro", "true")
const response = await fetch(url, {
method: "POST",
headers: {
apikey: apiKey,
},
body: formData,
})
if (response.ok) {
return await response.json()
} else {
throw new Error(`Error: ${response.status}, ${await response.text()}`)
}
}
ตัวอย่าง PHP
function transcribe_audio($file_path, $api_key) {
$url = "https://api.iapp.co.th/v3/store/speech/speech-to-text/pro/en";
$curl = curl_init();
$post_data = [
'file' => new CURLFile($file_path),
'prompt' => 'base',
'chunk_size' => '20',
'use_asr_pro' => 'true'
];
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $post_data,
CURLOPT_HTTPHEADER => [
"apikey: $api_key"
]
]);
$response = curl_exec($curl);
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status_code === 200) {
return json_decode($response, true);
} else {
return "Error: $status_code, $response";
}
}
// Usage
$result = transcribe_audio("path/to/audio.mp3", "YOUR_API_KEY");
print_r($result);
ตัวอย่าง Swift
import Foundation
func transcribeAudio(filePath: String, apiKey: String, completion: @escaping (Result<[String: Any], Error>) -> Void) {
let url = URL(string: "https://api.iapp.co.th/v3/store/speech/speech-to-text/pro/en")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue(apiKey, forHTTPHeaderField: "apikey")
let boundary = UUID().uuidString
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let fileURL = URL(fileURLWithPath: filePath)
guard let fileData = try? Data(contentsOf: fileURL) else {
completion(.failure(NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "ไม่สามารถโหลดไฟล์ได้"])))
return
}
var body = Data()
let filename = fileURL.lastPathComponent
// Add file
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"\(filename)\"\r\n".data(using: .utf8)!)
body.append("Content-Type: audio/mpeg\r\n\r\n".data(using: .utf8)!)
body.append(fileData)
body.append("\r\n".data(using: .utf8)!)
// Add prompt
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"prompt\"\r\n\r\n".data(using: .utf8)!)
body.append("base".data(using: .utf8)!)
body.append("\r\n".data(using: .utf8)!)
// Add chunk_size
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"chunk_size\"\r\n\r\n".data(using: .utf8)!)
body.append("20".data(using: .utf8)!)
body.append("\r\n".data(using: .utf8)!)
body.append("--\(boundary)--\r\n".data(using: .utf8)!)
request.httpBody = body
URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
completion(.failure(error))
return
}
guard let data = data else {
completion(.failure(NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "ไม่ได้รับข้อมูล"])))
return
}
do {
if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] {
completion(.success(json))
} else {
completion(.failure(NSError(domain: "", code: 0, userInfo: [NSLocalizedDescriptionKey: "รูปแบบ JSON ไม่ถูกต้อง"])))
}
} catch {
completion(.failure(error))
}
}.resume()
}
// Usage
transcribeAudio(filePath: "path/to/audio.mp3", apiKey: "YOUR_API_KEY") { result in
switch result {
case .success(let json):
print(json)
case .failure(let error):
print("Error: \(error)")
}
}