Skip to main content

🇹🇭 ฐานแบบจำลองการแปลงเสียงพูดภาษาไทยเป็นข้อความ (ASR - Base Model)

🇹🇭 ระบบแปลงเสียงพูดภาษาไทยเป็นข้อความ (Base Model)

Version Status

ยินดีต้อนรับสู่ Thai ASR Base - บริการระบบรู้จำเสียงพูดภาษาไทยมาตรฐานของเรา เวอร์ชันนี้ให้ความเร็วในการประมวลผลที่รวดเร็วพร้อมกับรักษาความแม่นยำที่ดีสำหรับการใช้งานทั่วไป

iApp Text to Speech API

เริ่มต้นใช้งาน

  1. ข้อกำหนดเบื้องต้น

    • API key จาก ไอแอพพ์เทคโนโลยี
    • ไฟล์เสียงในรูปแบบที่รองรับ
    • รูปแบบที่รองรับ: MP3, WAV, AAC, M4A
    • ความยาวไฟล์สูงสุด: ไม่เกิน 30 นาที
    • ขนาดไฟล์สูงสุด: 1GB
  2. เริ่มต้นอย่างรวดเร็ว

    • การประมวลผลที่รวดเร็วด้วยเวลาตอบสนอง 0.3 วินาที
    • ความแม่นยำสูง (ความแม่นยำ WER 85.48%)
    • รองรับภาษาไทย
  3. คุณสมบัติหลัก

    • การดึงข้อความจากไฟล์เสียง
    • การแยกเสียงพูดของผู้พูด
    • เวลาที่ใช้ในระดับคำ
    • ความเร็วในการประมวลผลที่รวดเร็ว
    • รูปแบบการตอบสนอง JSON ที่ยืดหยุ่น
  4. ความปลอดภัยและการปฏิบัติตามกฎระเบียบ

    • ปฏิบัติตาม GDPR และ PDPA
    • ไม่มีการเก็บรักษาข้อมูลหลังจากการประมวลผล
วิธีการรับ API Key?

กรุณาเยี่ยมชม iApp AI Portal เพื่อดู API key ที่มีอยู่ของคุณหรือขอ API key ใหม่

ข้อมูลอ้างอิง API

จุดสิ้นสุด

POST https://api.iapp.co.th/asr/v3

ส่วนหัว

  • apikey (จำเป็น): API key ของคุณสำหรับการตรวจสอบสิทธิ์
  • ส่วนหัวเพิ่มเติมสร้างโดย FormData

พารามิเตอร์คำขอ

พารามิเตอร์ชนิดคำอธิบาย
file*ไฟล์ (.mp3, .wav, .aac, .m4a)ไฟล์เสียงที่จะถอดความ (ไม่เกิน 30 นาที)
chunk_sizeจำนวนเต็มขนาดชิ้นส่วนเสียง (แนะนำ: 7)

ตัวอย่างโค้ด

Python

    import requests

url = "https://api.iapp.co.th/asr/v3"

payload = {'use_asr_pro': '0', 'chunk_size': '7'}
files=[
('file',('{YOUR_UPLOADED_FILE}',open('{YOUR_UPLOADED_FILE_PATH}','rb'),'application/octet-stream'))
]
headers = {
'apikey': '{YOUR_API_KEY}'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

Javascript

const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
let data = new FormData();
data.append('file', fs.createReadStream('YOUR_UPLOADED_FILE'));
data.append('use_asr_pro', '0'); // Set to '1' for iApp ASR PRO
data.append('chunk_size', '7');

let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.iapp.co.th/asr/v3',
headers: {
'apikey': '{YOUR_API_KEY}',
...data.getHeaders()
},
data : data
};

axios.request(config)
.then((response) => {
console.log(JSON.stringify(response.data));
})
.catch((error) => {
console.log(error);
});

PHP

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/asr/v3',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('{YOUR_UPLOADED_FILE}'),
'use_asr_pro' => '0',
'chunk_size' => '7'),
CURLOPT_HTTPHEADER => array(
'apikey: {YOUR_API_KEY}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Swift

let parameters = [
[
"key": "file",
"src": "{YOUR_UPLOADED_FILE}",
"type": "file"
],
[
"key": "use_asr_pro",
"value": "0",
"type": "text"
],
[
"key": "chunk_size",
"value": "7",
"type": "text"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body


var request = URLRequest(url: URL(string: "https://api.iapp.co.th/asr/v3")!,timeoutInterval: Double.infinity)
request.addValue("{YOUR_API_KEY}", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}

task.resume()

Kotlin

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR_UPLOADED_FILE}",
File("{YOUR_UPLOADED_FILE_PATH}").asRequestBody("application/octet-stream".toMediaType()))
.addFormDataPart("use_asr_pro","0")
.addFormDataPart("chunk_size","7")
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/asr/v3")
.post(body)
.addHeader("apikey", "{YOUR_API_KEY}")
.build()
val response = client.newCall(request).execute()

Java

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","{YOUR_UPLOADED_FILE}",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("{YOUR_UPLOADED_FILE_PATH}")))
.addFormDataPart("use_asr_pro","0")
.addFormDataPart("chunk_size","7")
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/asr/v3")
.method("POST", body)
.addHeader("apikey", "{YOUR_API_KEY}")
.build();
Response response = client.newCall(request).execute();

Dart

var headers = {
'apikey': '{YOUR_API_KEY}'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/asr/v3'));
request.fields.addAll({
'use_asr_pro': '0',
'chunk_size': '7'
});
request.files.add(await http.MultipartFile.fromPath('file', '{YOUR_UPLOADED_FILE}'));
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}

ความแม่นยำและประสิทธิภาพ

ความแม่นยำโดยรวม

ผลการทดสอบจากชุดข้อมูลทดสอบภาษาไทยจากชุดข้อมูล Mozilla Common Voice เราประเมินประสิทธิภาพของ iApp ASR ในชุดข้อมูลทดสอบสองเวอร์ชันที่แตกต่างกัน

  • เงื่อนไขการทดสอบ

    1. ชุดข้อมูลที่ไม่เคยเห็นมาก่อน
    2. ภาษาไทยเท่านั้น
    3. ความหลากหลายของผู้พูด: ชาย หญิง เด็ก
  • ชุดข้อมูลทดสอบ Mozilla Common Voice 16.1 ภาษาไทย (เวอร์ชัน 1)

    เยี่ยมชมชุดข้อมูลบน Hugging Face

    ผลลัพธ์:

    • ขนาดชุดข้อมูลทดสอบ: 11,038 ตัวอย่างการทดสอบ
    • อัตราความผิดพลาดของคำเฉลี่ย: 1.11%
    • อัตราความผิดพลาดของคำเฉลี่ย (ไม่มีช่องว่าง): 0.66%
  • ชุดข้อมูลทดสอบ Mozilla Common Voice 17.0 ภาษาไทย (เวอร์ชัน 2)

    เยี่ยมชมชุดข้อมูลบน Hugging Face

    ผลลัพธ์:

    • ขนาดชุดข้อมูลทดสอบ: 11,042 ตัวอย่าง
    • อัตราความผิดพลาดของคำ (WER): 14.52%
    • อัตราความผิดพลาดของอักขระ (CER): 5.87%
    • ความแม่นยำตาม WER: 85.48%
    • ความแม่นยำตาม CER: 94.13%

ความเร็วในการประมวลผล

  • เวลาตอบสนองเฉลี่ย: 0.3 วินาที
  • เร็วกว่าผู้ให้บริการรายอื่นถึง 15 เท่า

ผลการทดสอบโดยละเอียด (ใน Google Sheets):

ผลการทดสอบ iApp ASR Base