The classic Korean learner error is the three-way stop contrast: plain ㄱ, aspirated ㅋ and tense ㄲ. The Korean pack scores aspiration on k, p and t: a 커피 said without the puff of air on ㅋ shows as an expected kʰ heard as a plain k. The rest of the sentence is scored sound by sound, with word scores and timestamps.
Dimensions
Pronunciation and completeness at sentence level, word scores (one per space-separated word) and phoneme evidence. Fluency and rhythm are not scored for Korean today. Correction decisions are made per word.
Learner errors this pack is built to show
- Aspirated ㅋ ㅍ ㅌ produced as plain stops (커피, 포도, 토요일).
- Vowel confusions — ㅓ / ㅗ (어 / 오) and ㅡ / ㅜ.
- Final consonants released or dropped, which also lowers completeness.
- An English r or l where ㄹ is a tap or a lateral.
Phoneme rows are evidence, not validated corrections: they show a learner where a word went wrong, while the word-level decision is what your app should act on.
Coverage notes
The pack is new (October 2026) and labelled experimental, built on native read speech like the Spanish, German, Italian and Portuguese packs, with calibration still being tuned. Two simplifications matter for Korean courses: aspiration is scored on k, p and t only, and the aspirated affricate ㅊ, aspirated s and the tense consonants (ㄲ ㄸ ㅃ ㅆ ㅉ) are mapped to their plain counterparts, so the plain / tense contrast is not scored. Pitch and intonation are not scored. A recording of a different sentence scores near zero.
Example request
Reference text: 커피 한 잔 주세요. Send the recording, the text and the locale; nothing else is required.
curl https://api.toneperfect.app/v1/assess \
-H "Authorization: Bearer $TONEPERFECT_API_KEY" \
-H "Idempotency-Key: lesson-42-attempt-1" \
-F "audio=@take.wav" \
-F "text=커피 한 잔 주세요" \
-F "language=ko-KR"What comes back
The same structure as every other language: sentence-level scores, a words[] array with timestamps and, under each word, phones[] with expected and heard values. Abbreviated to the one flagged word:
{
"language": "ko",
"locale": "ko-KR",
"task": "scripted_speech",
"status": "completed",
"assessable": true,
"model_version": "multilingual-native-v1-ko-…",
"scores": {
"overall": 85,
"pronunciation": 84,
"completeness": 100
},
"words": [
{
"word": "커피",
"expected_ipa": "kʰʌpʰi",
"score": 70,
"start_ms": 180,
"end_ms": 560,
"decision": "review",
"phones": [
{
"phone": "kʰ",
"expected": "kʰ",
"heard": "k",
"score": 56,
"diagnosis_status": "experimental"
},
{
"phone": "ʌ",
"expected": "ʌ",
"heard": "ʌ",
"score": 90,
"diagnosis_status": "experimental"
},
{
"phone": "pʰ",
"expected": "pʰ",
"heard": "pʰ",
"score": 87,
"diagnosis_status": "experimental"
},
{
"phone": "i",
"expected": "i",
"heard": "i",
"score": 94,
"diagnosis_status": "experimental"
}
]
}
],
"billing": {
"credits": 1,
"balance_credits": 2499
}
}Reference text goes in as text: The Korean sentence the learner was asked to read, in Hangul with normal spacing, up to 40 words. See the response reference for every field.