Localees-419
Scored dimensionsPronunciation · Completeness
LevelsSentence · word · phoneme
InputAudio ≤ 30 s + reference text

Spanish is often described as "easy to pronounce", yet English speakers reliably reduce its vowels, aspirate p t k, and replace the trilled rr with a tap or an English r. Each of those appears as a low-scoring row under the word, with the expected and estimated heard sound side by side.

Dimensions

The Spanish pack returns pronunciation and completeness at sentence level, word scores, and phoneme evidence. Fluency and rhythm are not scored for Spanish today.

Learner errors this pack is built to show

  • Trill rr produced as a tap, an English r or a French r.
  • Aspirated p / t / k at the start of words.
  • Reduced vowels — casa ending in a schwa instead of a full a.
  • b / v and d / ð allophones in the wrong position.
  • ñ produced as n + y, and ll / y variation, which is scored leniently because natives vary.

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 uses a Latin American reference set (es-419). Its native calibration set is still small, so learner score bands are not yet validated; the pack is labelled experimental and reports the model used with every response.

Example request

Reference text: Quiero un perro pequeño. Send the recording, the text and the locale; nothing else is required.

cURL
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=Quiero un perro pequeño" \
  -F "language=es-419"

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:

JSON (abbreviated)
{
  "language": "es",
  "locale": "es-419",
  "task": "scripted_speech",
  "status": "completed",
  "assessable": true,
  "model_version": "multilingual-native-v1-es-…",
  "scores": {
    "overall": 85,
    "pronunciation": 85,
    "completeness": 100
  },
  "words": [
    {
      "word": "perro",
      "expected_ipa": "pero",
      "score": 66,
      "start_ms": 1020,
      "end_ms": 1400,
      "decision": "review",
      "phones": [
        {
          "phone": "p",
          "expected": "p",
          "heard": "p",
          "score": 94,
          "diagnosis_status": "experimental"
        },
        {
          "phone": "e",
          "expected": "e",
          "heard": "e",
          "score": 91,
          "diagnosis_status": "experimental"
        },
        {
          "phone": "r",
          "expected": "r",
          "heard": "ɾ",
          "score": 58,
          "diagnosis_status": "experimental"
        },
        {
          "phone": "o",
          "expected": "o",
          "heard": "o",
          "score": 93,
          "diagnosis_status": "experimental"
        }
      ]
    }
  ],
  "billing": {
    "credits": 1,
    "balance_credits": 2499
  }
}

Reference text goes in as text: The Spanish sentence the learner was asked to read, up to 40 words. See the response reference for every field.