Skip to main content

toneperfect 0.1.1 copy "toneperfect: ^0.1.1" to clipboard
toneperfect: ^0.1.1 copied to clipboard

Client for the TonePerfect pronunciation assessment API. Sentence, word and sound scores for 10 languages, with Mandarin initial, final and tone per syllable.

toneperfect (Dart / Flutter) #

Client for the TonePerfect pronunciation assessment API: send a recording and its reference text, get 0–100 scores for the sentence, every word and every sound — including a separate initial, final and tone score for every Mandarin syllable — in one JSON response. Ten languages (zh-CN, en-US, fr-FR, es-419, de-DE, it-IT, pt-BR, ru-RU, ko-KR, ja-JP).

Depends only on package:http; works on the Dart VM, Flutter and the web.

dart pub add toneperfect

Quickstart #

import 'dart:io';
import 'package:toneperfect/toneperfect.dart';

Future<void> main() async {
  final client = TonePerfect(apiKey: 'tp_live_...');

  // No key needed: which languages are served, and their limits.
  final caps = await client.capabilities();
  print(caps['languages']);

  try {
    final result = await client.assess(File('hello.wav').readAsBytesSync(),
        text: '你好', language: 'zh-CN');
    print('${result.assessable} ${result.overall} ${result.billing}');
    for (final word in result.words) {
      print('${word['word']} ${word['score']}');
    }
  } on PaymentRequiredError catch (e) {
    // 402: free credits used up / no plan. Nothing was charged.
    print('${e.code}: ${e.message}');
  } on TonePerfectError catch (e) {
    print('${e.status} ${e.code}: ${e.message} (retry same key: ${e.retryable})');
  } finally {
    client.close();
  }
}

Get a key: create an account → dashboard → API keys. New accounts get 50 free credits, no card needed; then plans from $10/month (pricing). One credit per started 15 seconds of audio; failed and unassessable requests cost nothing. Keep the key on your server — a Flutter app should call your own backend, which calls this API.

What is wrapped #

Method Endpoint
capabilities() GET /v1/capabilities (no key)
assess(bytes, text:, language:, pinyin:, task:, idempotencyKey:, filename:) POST /v1/assess — multipart audio, text, language, optional pinyin (ni3 hao3) and task (general, connected_speech, isolated_word); headers Authorization: Bearer + Idempotency-Key

Assessment exposes data (the untouched JSON), assessable, reason, scores, overall, words, billing, modelVersion, id and replayed. Never show an unassessable result as a zero.

Errors are typed: AuthenticationError (401), PaymentRequiredError (402: subscription_required, insufficient_credits, payment_balance_due), RateLimitError (429), ValidationError (other 4xx), ServerError (5xx) and APIConnectionError (timeout / network). All extend TonePerfectError with status, code, message, requestId, retryable (retry later with the same Idempotency-Key) and needsNewKey.

Limits #

Up to 30 s and 10 MB of audio (WAV, MP3, M4A, OGG, WebM), scripted speech only, two concurrent requests per account. Grades are display scores calibrated per language, not accuracy percentages; every language pack is labelled experimental in /v1/capabilities. See the methodology.

Docs: https://api.toneperfect.app/docs · License: MIT

0
likes
160
points
254
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Client for the TonePerfect pronunciation assessment API. Sentence, word and sound scores for 10 languages, with Mandarin initial, final and tone per syllable.

Homepage

Topics

#pronunciation #speech #language-learning #api #sdk

License

MIT (license)

Dependencies

http

More

Packages that depend on toneperfect