🇹🇭Thai ASR 🆕

ASR API Document for Thai language. There are 2 version, Default and iApp ASR PRO, which provides more accurate result. Try Now!

Endpoint

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


Headers

  • apikey (required): Your API key to authenticate the request.

  • Additional headers are generated dynamically by the FormData object in the request.


Request Body

Name
Type
Description

file*

File (.mp3, .wav)

The audio or video file to be processed.

use_asr_pro

Boolean

Indicates which version of the ASR engine to use.

chunk_size

Integer

Size of audio chunk to transcript. It will effect to length of transciption segments.

  • file (required): The audio or video file to be processed. The file should be uploaded in binary form using a file stream (Only .mp3, .wav , .acc , .m4a No More than 5 minutes Contact Sales for further information ).

  • use_asr_pro (Optional): Indicates which version of the ASR engine to use.

    • 0: Use the default iApp ASR Version (faster ⚡️).

    • 1: Use the iApp ASR PRO Version (more accurate and context-aware ☀️).

  • chunk_size (required): Size of audio chunk to transcript. It will effect to length of transciption segments. It means if you set a high chunk size, it will reduce the number of segments. We recommend for optimal chunk size is 7.


Response from iApp ASR

Upon success, the API will return a JSON object containing the transcription of the provided audio or wav file.


Example Code Using NodeJS-Axios and Python-Requests

  • iApp ASR (Default Version)

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', '20');

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);
});

Example JSON Response from iApp ASR (Default Version)

{
    "output": [
        {
            "text": "ถ้านักเรียนกดลงแล้ง เจอ ยีน่า โล้ตัน สกิน นี้ นักเรียนจะมองเกมยังไงคะ",
            "speaker": "SPEAKER_00",
            "start": 0.009,
            "end": 5.162,
            "segment": 0
        },
        {
            "text": "จากประสบการณ์หนูที่เจอๆ มา น่าจะตึงค่ะครู ดูทรงหน้าเป็นมินยีน่าค่ะครู",
            "speaker": "SPEAKER_00",
            "start": 5.162,
            "end": 10.026,
            "segment": 1
        },
        {
            "text": "แล้วถ้านักเรียนจืนาโค้ดป่าลูตันสกินนี้ล่ะคะ",
            "speaker": "SPEAKER_00",
            "start": 10.026,
            "end": 13.712,
            "segment": 2
        },
        {
            "text": "พอมองทีมตัวเองน่าจะเหลือป้อมเดียวค่ะ สไลด์มาปาดทีแคลรี่น่าจะไปฟอกเขาอินค่ะ",
            "speaker": "SPEAKER_00",
            "start": 13.712,
            "end": 18.422,
            "segment": 3
        },
        {
            "text": "แล้วถ้าเหม็ดตานั้นเป็นร้อนเลี่ยวโรดตันสกีนเอสตีมล่ะคะ ดูสูงน่าจะเข้ามาล้ำเล่นในป้อมอะค่ะ ไม่น่าจะกลัวป้อม",
            "speaker": "SPEAKER_00",
            "start": 18.422,
            "end": 25.196,
            "segment": 4
        },
        {
            "text": "กดเจอฟอร์เลนด์คนนี้ ให้หนูขึ้นซูพิมไปเจอเขาก่อน",
            "speaker": "SPEAKER_00",
            "start": 25.196,
            "end": 28.251,
            "segment": 5
        }
    ],
    "audio_duration_in_seconds": 28.245,
    "uploaded_filename": "rov_for_asr.mp4",
    "processing_time_in_seconds": 1.7936813831329346,
    "use_asr_pro": false,
    "asr_pro_is_used": false
}

  • iApp ASR PRO (PRO Version)

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', '1'); // Set to '0' for iApp ASR Default

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);
});

Example JSON Response from iApp ASR PRO (PRO Version)

{
    "output": [
        {
            "text": "ถ้านักเรียนกดลงแรงค์เจอ ยีน่า โล่ตัน สกิน นี้นักเรียนจะมองเกมยังไงคะ",
            "speaker": "SPEAKER_00",
            "start": 0.009,
            "end": 5.162,
            "segment": 0
        },
        {
            "text": "จากประสบการณ์หนูที่เจอๆ มาน่าจะตึงค่ะครู อุ๊ย ดูทรงน่าจะเป็นเมนยีน่าค่ะครู",
            "speaker": "SPEAKER_00",
            "start": 5.162,
            "end": 10.026,
            "segment": 1
        },
        {
            "text": "แล้วถ้านักเรียนเจอนาโครป่าโล่ตันสกินนี้ล่ะคะ",
            "speaker": "SPEAKER_00",
            "start": 10.026,
            "end": 13.712,
            "segment": 2
        },
        {
            "text": "หันหน้ามามองทีมตัวเองน่าจะเหลือป้อมเดียวอะค่ะ หือ สไลด์มาปาดทีแคร์รี่น่าจะไปฟอกหูอินค่ะ",
            "speaker": "SPEAKER_00",
            "start": 13.712,
            "end": 18.422,
            "segment": 3
        },
        {
            "text": "แล้วถ้าเมจตานั้นเป็น Lauriel โล่ตันสกิน esteem ล่ะคะ โห ดูทรงน่าจะเข้ามาล้ำเล่นในป้อมอะค่ะ ไม่น่าจะกลัวป้อม",
            "speaker": "SPEAKER_00",
            "start": 18.422,
            "end": 25.196,
            "segment": 4
        },
        {
            "text": "ถ้านักเรียนกดเจอ Florentino คนนี้ ให้หนูขึ้นซุปพิมไปเจอเขาก่อน",
            "speaker": "SPEAKER_00",
            "start": 25.196,
            "end": 28.251,
            "segment": 5
        }
    ],
    "audio_duration_in_seconds": 28.245,
    "uploaded_filename": "rov_for_asr.mp4",
    "processing_time_in_seconds": 11.47070574760437,
    "use_asr_pro": true,
    "asr_pro_is_used": true
}

Last updated