UtteraUttera

Prononcer

Une page séparée du Studio, sur app.uttera.ai/fr/pronounce, pour quiconque apprend une langue. Pas de formats, pas de catalogue de voix par nom, pas d'estimateur de coût : quelqu'un qui apprend l'allemand ne veut pas choisir entre opus et flac.

Uttera vient de to utter : prononcer, dire à voix haute. C'est cette partie du nom.

Elle résout un problème que les applications d'apprentissage ne touchent pas : elles ne vous laissent entendre que leur propre contenu. Vous pouvez répéter leur leçon, mais vous ne pouvez pas leur demander comment sonne la phrase que vous devez dire demain. Ici, vous écrivez cette phrase.

Les trois étapes

ÉtapeCe qui se passe
1. Écrivez-la dans votre langueLa page est dans votre langue et vous écrivez dans la vôtre. Vous choisissez celle dans laquelle vous voulez apprendre à la dire. Jusqu'à 300 caractères : une phrase, pas un texte.
2. Voici comment vous la ditesLa phrase apparaît dans la langue que vous apprenez avec sa transcription phonétique. C'est là que vous vous arrêtez et lisez. L'audio est généré séparément, quand vous le voulez et à la vitesse que vous choisissez : lire la phrase est gratuit, la générer ne l'est pas, et payer l'audio de quelque chose que vous n'avez pas encore lu n'a pas de sens.
3. Maintenant, dites-la vous-mêmeVous vous enregistrez — microphone du navigateur ou fichier — et nous vous rendons ce que nous avons compris, en marquant mot par mot ce qui est sorti et ce qui n'est pas sorti.
Ce que vous donne la troisième étape est un miroir, pas une note. Si vous avez écrit “rojo” et que la transcription dit “rojo”, vous l'avez dit de façon reconnaissable. Si elle dit “rollo”, vous savez maintenant quel son vous échappe. Il n'y a pas de score, et c'est délibéré : pour apprendre, un miroir honnête vaut mieux qu'un chiffre.

Ce que ça coûte

Il n'y a pas d'estimation préalable, à dessein : quelqu'un qui s'exerce n'évalue pas un service, et un chiffre avant chaque phrase serait du bruit. Après chaque opération, nous disons ce qu'elle a réellement coûté. Un cycle complet — traduire, écouter et se vérifier — tourne autour de 0,17 crédit pour une phrase ordinaire.

Les limites, dites d'emblée

“Pourquoi ne me comprend-il pas ?” : l'analyse par IA

Les trois étapes vous donnent un miroir : quels mots sont sortis et lesquels non. Quand cela ne suffit pas — vous savez que quelque chose cloche mais pas quoi — un bouton séparé compare son par son ce que vous avez dit à ce qui devrait être, et l'explique.

Il n'utilise pas la reconnaissance vocale ordinaire, et la raison compte : celle-ci est faite pour vous comprendre, non pour vous mesurer. Elle corrige votre prononciation vers le mot qu'elle pense que vous vouliez dire, ce qui est exactement l'erreur que nous voulons voir ici. L'analyse utilise un reconnaisseur de phonèmes, qui écrit ce qu'il entend même quand ce n'est pas un mot, et compare cette chaîne avec celle qui aurait dû sonner.

Ce que vous récupérez : le pourcentage de sons qui sont sortis corrects, la liste de ceux qui ne le sont pas — vous avez fait [s] là où il devrait être [θ], et dans quels mots —, l'explication écrite, et les deux transcriptions phonétiques pour ceux qui savent les lire.

Cela coûte nettement plus que le reste, c'est pourquoi vous le demandez au lieu de l'obtenir automatiquement. Le miroir de mots coûte des centimes de crédit ; ceci tourne autour de 3, parce que votre enregistrement doit être phonémisé et l'explication rédigée avec un modèle de langage. Vous êtes prévenu avant qu'il ne s'exécute, et vous pouvez refuser. La facturation exacte apparaît après, comme pour tout le reste.

L'idée est que vous vous exerciez de nombreuses fois pour presque rien et demandiez l'analyse quand vous voulez savoir ce que vous faites mal, non à chaque répétition.

Si l'enregistrement ne ressemble pas à la phrase, il n'est pas analysé. Cela arrive plus que vous ne le croiriez : le mauvais microphone captant la télévision, ou le mixage du système. Dans ce cas, nous vous le disons et l'analyse n'est pas facturée, plutôt que d'expliquer son par son un décalage qui ne signifie rien.
Ce que ce n'est PAS.

Ce n'est ni une note ni un examen : c'est une comparaison entre deux chaînes de sons. Et l'explication est rédigée par un modèle de langage à partir de cette comparaison — il ne décide pas de ce qui est faux, cela est calculé auparavant — alors lisez-la pour ce qu'elle est : une aide à comprendre les données, pas un verdict.

Il ne remplace pas non plus un professeur. Pour le son d'une phrase ordinaire, c'est largement suffisant ; pour polir une voyelle d'examen, un professeur reste un professeur.

Ce que vous téléversez est transcrit puis supprimé : s'enregistrer en train de s'exercer est exactement le genre d'audio qui ne devrait pas rester dans l'archive de qui que ce soit — Confidentialité.

Via l'API

POST /v1/pronunciation — multipart, comme transcrire. Renvoie du JSON.

ChampTypeCe que c'est
filefichierRequis. L'apprenant lisant la phrase. Tout format courant ; jusqu'à 1 Mo, ce qui est amplement suffisant pour quelques secondes de parole.
texttexteRequis. La phrase qu'il était censé dire. C'est la référence à laquelle l'audio est comparé, non une transcription.
languagetextePar défaut es. L'un de : es, es-419, en, en-gb, fr, it, pt, pt-br, de, nl, ru, pl, el, tr, ar, ja, zh, hi, ko, sv, da, nb, fi. Toute autre valeur renvoie 422 avec la liste.
explaintexte"true" par défaut. Avec "false", vous obtenez le diagnostic phonétique sans l'explication écrite — et cela coûte bien moins, parce que l'explication est ce qui appelle le modèle de langage.
curl -X POST https://api.uttera.ai/v1/pronunciation \
  -H "Authorization: Bearer $UTTERA_API_KEY" \
  -F "file=@sentence.mp3" \
  -F "text=El perro de San Roque no tiene rabo." \
  -F "language=es"

La réponse, exactement telle qu'elle sort :

{
  "text": "El perro de San Roque no tiene rabo.",
  "language": "es",
  "duration_s": 2.625,
  "target_ipa": "e l p e r o ð e s a n r o k e n o t j e n e r a β o",
  "heard_ipa":  "e l p e r o ð e s a n r o k e n o t i n e r a b o",
  "accuracy": 0.9231,
  "errors": [
    {"type": "missing", "expected": "j", "heard": null,
     "times": 1, "words": ["tiene"]},
    {"type": "substitution", "expected": "e", "heard": "i",
     "times": 1, "words": ["tiene"]}
  ],
  "recognised": true,
  "suppressed": 1,
  "explanation": "En la palabra \"tiene\"…",
  "timing_ms": {"phonetics": 5567.0, "llm": 18069.4, "total": 23640.1}
}
ChampCe que c'est
target_ipa / heard_ipaLes sons qui auraient dû être là et ceux qui l'étaient, dans l'alphabet phonétique international. Les comparer est toute l'analyse.
accuracyPhones concordants sur phones attendus, de 0 à 1. Ce n'est pas une note : c'est la proportion de ce qui aurait dû sonner qui a sonné.
errorsLes fautes regroupées par son, avec les mots où elles apparaissent. type vaut missing, extra ou substitution.
recognisedfalse quand ce qui a été enregistré n'est pas la phrase — mauvais microphone, un autre enregistrement, une autre langue. Alors errors revient vide et il n'y a pas d'explication : accuser quelqu'un de fautes fines alors qu'il a dit tout autre chose est pire que de ne rien dire.
suppressedConfusions écartées parce qu'elles sont un artefact de l'analyseur et non la faute de l'apprenant. Elles sont mesurées en synthétisant la phrase, correctement dite, avec notre propre voix.
explanationL'explication dans la langue analysée, ou null si vous avez demandé explain=false ou si la phrase n'a pas été reconnue.

Le coût suit le travail réel, non un tarif fixe : l'en-tête X-Work-Ms indique combien de travail a été fourni, et GET /v1/usage/last ce que cela a coûté. Mesuré sur l'exemple ci-dessus —2,6 s d'audio, avec une explication— 60,9 crédits ; sans l'explication, l'essentiel disparaît, parce que c'est le modèle de langage qui coûte.