AI-powered speech tools: pronunciation assessment, speech-to-text, and text-to-speech by Brainiall.
Server provides 4 well-named, action-verb tools (assess_, transcribe_, synthesize_, list_) with clear docstrings and complete input schemas. All parameters have type annotations and descriptions. However, output schemas are not documented, responses are returned as raw dicts without field documentation, forcing LLMs to infer structure. Parameter descriptions lack constraint details (e.g., audio format specifics, speed range 0.5-2.0 is mentioned but not validated). No error handling guidance or recovery paths documented. Tool descriptions are adequate (100-200 chars) but could better explain when to use each tool vs. alternatives.
Assess how accurately a speaker pronounced the given text. Returns an overall pronunciation score (0-100), per-word scores, and phoneme-level feedback including accuracy, fluency, and completeness.
List all available text-to-speech voices. Returns voice IDs, names, supported languages, and sample previews.
Convert text to natural-sounding speech audio. Returns base64-encoded audio in MP3 format. Use list_voices to see available voice options.
Transcribe speech audio into text. Supports multiple languages with automatic language detection. Returns the transcription text and detected language.
Output schemas not documented. Tools return raw dicts (response.json()) with no field documentation. LLMs cannot plan downstream calls or extract specific fields without trial-and-error.
Parameter constraints not validated or documented in descriptions. speed parameter accepts 0.5-2.0 but no validation; audio_base64 format not validated; language codes not enumerated.
No error handling guidance. API calls use raise_for_status() but no try-catch or recovery hints. LLMs receive raw HTTP errors with no actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Tool descriptions lack dependency hints. assess_pronunciation requires audio_base64 but does not explain how to obtain it (e.g., 'First call transcribe_speech or use list_voices to understand output format').
No pagination or result limits documented. list_voices returns all voices without limit; large result sets could exhaust context window.