Score Speech
The Score Speech API scores spontaneous, open-ended speech. Unlike Score Text — which scores a known, read-aloud script — Score Speech has no reference text: it transcribes what the speaker actually said and scores it for pronunciation, fluency, grammar, vocabulary, and coherence on the IELTS, PTE, Speechace, TOEIC, and CEFR scales. It can also check whether the answer is relevant to a prompt, and detect the language the speaker used.
For read-aloud scripted text use Score Text; for a single word, letter, or non-word use Score Word.
Scoring modes
Language scoring
(default — always on)
The transcript, plus pronunciation, fluency, grammar, vocabulary, and coherence subscores on all five scales.
Detailed feedback
include_ielts_feedback=1
grammar, vocab, and coherence nodes with sub-metrics, errors, and feedback messages.
Relevance
relevance_context="<prompt>"
speech_score.relevance.class — TRUE or FALSE.
Language detection
detect_dialect=1 (warn) or enforce_dialect=1 (error)
detected_dialect.lang_id, or a hard error when the spoken language differs from the scoring dialect.
Request Format
The endpoint you use depends on the region of your subscription. For example, for US West the endpoint is https://api.speechace.co.
POST https://api.speechace.co/api/scoring/speech/v9/json
Query Parameters
Request Body
user_audio_file
File
file with user audio (wav, mp3, m4a, webm, ogg, aiff)
question_info
String
Optional flag: A unique identifier (generated by your application) for the activity or question this user audio is answering.
include_ielts_feedback
String
1
Optional: Includes detailed feedback metrics for Grammar, Vocab, Coherence.
relevance_context
String
Optional: Question Prompt text provided to the user. When this parameter is passed, the relevance of the user audio transcript is evaluated given the relevance_context and a resulting relevance class is returned in .speech_score.relevance.class
pronunciation_score_mode
String
Optional field: Possible values -
default: will only penalize pronunciation errors which affect word intelligibility.strict: will penalize prononciation errors even those which do not affect intelligibility resulting in generally lower pronunciation scores.
detect_dialect
String
Optional field: Possible values - 0 | 1
1: will apply language detection and warn if the majority of the response language is different from the intended scoring dialect.
enforce_dialect
String
Optional field: Possible values - 0 | 1
1: will apply language detection and error if the majority of the response language is different from the intended scoring dialect.
Setting enforce_dialect=1 automatically sets detect_dialect=1.
Request Examples
A. Language scoring
user_audio_file=answer.wav
include_ielts_feedback="1"
Score a spontaneous answer for pronunciation, fluency, grammar, vocabulary, and coherence with detailed feedback.
B. Relevance
user_audio_file=answer.wav
relevance_context="Describe how travel has changed over time and why."
Also check the answer is on-topic for the question or prompt.
C. Language detection
user_audio_file=answer.wav
detect_dialect="1" (or enforce_dialect="1")
Flag — or reject — an answer spoken in a different language than the scoring dialect.
Response Examples
Response fields
Overall language scores
The API transcribes the audio and rates it on five rubrics, each with an overall score and subscores for pronunciation, fluency, grammar, vocabulary, and coherence:
speechace_score— 0 to 100ielts_score— 0 to 9.0pte_score— 10 to 90cefr_score— A0 to C2toeic_score— 0 to 200
See the scoring rubrics guide to interpret them. Pronunciation and fluency fields are the same as in Score Text.
Grammar feedback
Returned in the grammar node when include_ielts_feedback=1. Each sub-metric has a score (1–10), a level (low / mid / high), and — when the score is low — a message explaining how to improve.
grammar.overall_metrics.length
The sufficiency of the response length in words to demonstrate the necessary grammatical range.
grammar.overall_metrics.lexical_diversity
The degree of variation in syntactic structures such as diversity in verbs, adjectives and adverbial modifiers.
grammar.overall_metrics.grammatical_accuracy
The degree of grammatical inaccuracies in the response. A list of grammatical errors with suggested replacements is returned in the grammar.errors node when this index is low.
grammar.overall_metrics.grammatical_range
The degree of grammatical range demonstrated in the response. This score is further broken down into 4 additional sub-indices:
noun_phrase_variation
noun_phrase_complexity
verb_construction_variation
adverb_modifier_variation
grammar.overall_metrics.grammatical_range.noun_phrase_variation
The degree of variation in structure of noun phrases such as the number and types of modifiers used in the response.
grammar.overall_metrics.grammatical_range.noun_phrase_complexity
The degree of complexity of noun phrases such as the richness of adjectives, relative clauses, prepositional phrases, nonfinite elements, determiners, and demonstratives used in the response.
grammar.overall.metrics.grammatical_range.verb_construction_variation
The degree of variation in verbal structures such as the number and types of verb structural elements used in the response.
grammar.overall.metrics.grammatical_range.adverb_modifier_variation
The degree of variation in types of adverbs or adverb phrases to modify clauses, verbs, and adjectives used in the response.
The grammar.errors node lists individual grammatical errors:
category
The type of error such as; STYLE, GRAMMAR, COLLOCATION, CONFUSED_WORDS
message
A descriptive message of the error. The message may refer to words within the evaluated text and include suggested replacements within the ... markup tags.
span
The [begin, end] indices of the matched text in characters.
matched_text
The matched text where the error was found.
replacements
An array of zero or more suggested replacements where applicable.
Vocabulary feedback
Returned in the vocab node when include_ielts_feedback=1.
vocab.overall_metrics.lexical_diversity
The degree of word diversity in the response.
vocab.overall_metrics.word_sophistication
The degree of use of advanced, less common vocabulary in the response.
vocab.overall_metrics.word_specificity
The degree of use of specific (less general) verbs, nouns, and adjectives which are specific to the meaning being conveyed.
vocab.overall_metrics.academic_language_use
The degree of use of academic language in the response.
vocab.overall_metrics.collocation_commonality
The degree of use of advanced word combinations.
vocab.overall_metrics.idiomaticity
The degree of use of idiomatic language.
Coherence feedback
Returned in the coherence node when include_ielts_feedback=1.
coherence.overall_metrics.lexical_density
The degree of use of content words within the response.
coherence.overall_metrics.basic_connectives
The degree and variety of basic connectives within the response. A list of most overused basic connectives is included.
coherence.overall_metrics.causal_connectives
The degree and variety of causal connectives within the response. A list of most overused causal connectives is included.
coherence.overall_metrics.negative_connectives
The degree and variety of negative connectives within the response. A list of most used negative connectives is included.
coherence.overall_metrics.pronoun_density
The degree of use of pronouns within the response.
coherence.overall_metrics.adverb_diversity
The degree and variety of adverbs within the response. A list of most overused adverbs is included.
coherence.overall_metrics.verb_diversity
The degree and variety of verbs within the response. A list of most overused verbs is included.
Relevance
Pass relevance_context with the question or topic and the API judges whether the transcript is on-topic, returning the result in speech_score.relevance.class:
TRUE— the response is relevant to the context.FALSE— the response is not relevant; an error message is also returned.Too similar — if the response merely repeats the prompt, an error indicates it is too similar to the
relevance_context.
transcript
The speech-to-text transcript of what the user has said.
speechace_score
An overall score on a scale of 0 to 100, in addition to subscores for: Fluency, Pronunciation, Grammar, Vocabulary, Coherence.
ielts_score
An overall score on an IELTS scale of 0 to 9.0, in addition to subscores for: Fluency, Pronunciation, Grammar, Vocabulary, Coherence.
pte_score
An overall score on a PTE scale of 10 to 90, in addition to subscores for: Fluency, Pronunciation, Grammar, Vocabulary, Coherence.
cefr_score
An overall score on CEFR scale of A0 to C2, in addition to subscores for: Fluency, Pronunciation, Grammar, Vocabulary, Coherence.
toeic_score
An overall score on an TOEIC scale of 0 to 200, in addition to subscores for: Fluency, Pronunciation, Grammar, Vocabulary, Coherence.
relevance.class
TRUE or FALSE indicating whether the response was relevant given the relevance_context passed as input to the API.
Language detection
Language detection compares the spoken language against the scoring dialect:
detect_dialect=1— lenient. The score is unaffected; the detected language is returned underdetected_dialect.lang_id(as in the C. Language detection example above).enforce_dialect=1— strict. If the detected language differs from thedialect, the API returns a hard error so you can zero the score. Settingenforce_dialect=1impliesdetect_dialect=1.
Enforced-mismatch error:
Last updated