Skip to main content

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

1 ICต่อ 60 วินาที
v3.0 Active POST /v3/store/speech/speech-to-text/base

Welcome to Thai ASR Base - our standard Thai Automatic Speech Recognition service. This version offers fast processing speed while maintaining good accuracy for general use cases.

iApp Text to Speech API

ลองใช้ Demo

Example File (Click to try)

Selected: 2ppl.wav

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

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

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

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

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

    • เป็นไปตาม GDPR และ PDPA
    • ไม่มีการเก็บข้อมูลหลังการประมวลผล
จะได้รับคีย์ API ได้อย่างไร?

กรุณาไปที่หน้า การจัดการคีย์ API เพื่อดูคีย์ API ที่มีอยู่ของคุณ หรือขอคีย์ใหม่

API Endpoints

EndpointMethodคำอธิบายราคา
/v3/store/speech/speech-to-text/base
Legacy: /asr/v3
POSTแปลงเสียงพูดภาษาไทยเป็นข้อความ (โมเดลพื้นฐาน)1 IC ต่อ 60 วินาที

API Reference

Endpoint

POST https://api.iapp.co.th/v3/store/speech/speech-to-text/base

Headers

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

Request Parameters

ParameterTypeคำอธิบาย
file*File (.mp3, .wav, .aac, .m4a)ไฟล์เสียงที่จะแปลง (ไม่เกิน 30 นาที)
chunk_sizeIntegerขนาด Chunk ของเสียง (แนะนำ: 7)

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

Curl

curl -X POST https://api.iapp.co.th/v3/store/speech/speech-to-text/base \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"

Python

import requests

url = "https://api.iapp.co.th/v3/store/speech/speech-to-text/base"

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") // ตั้งค่าเป็น '1' สำหรับ iApp ASR PRO
data.append("chunk_size", "7")

let config = {
method: "post",
maxBodyLength: Infinity,
url: "https://api.iapp.co.th/v3/store/speech/speech-to-text/base",
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/v3/store/speech/speech-to-text/base',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLHTTP_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/v3/store/speech/speech-to-text/base")!,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/v3/store/speech/speech-to-text/base")
.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/v3/store/speech/speech-to-text/base")
.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/v3/store/speech/speech-to-text/base'));
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

ราคา

ชื่อบริการ AI APIEndpointIC ต่อ วินาทีOn-Premise
Thai Speech To Text (ASR) iapp-asr-v3-en [โมเดลพื้นฐาน]1 IC/60 วินาทีติดต่อ
iapp-asr-v3-th-en [โมเดลพื้นฐาน]1 IC/60 วินาที