Work / mobile

Voicifire

Application React Native qui écoute de courts clips de parole et vous dit ce qui ne va vraiment pas dans votre élocution. Rythme, clarté, densité de mots de remplissage, ton.

MobileAIAudioSpeech
Role
Créateur & Ingénieur Principal
Date
2025-02-01
Read time
3 min read
Stack
4 techs

J'ai commencé Voicifire parce que je préparais une conférence et que je me suis rendu compte d'une chose : je n'avais aucune idée de ma vraie manière de parler. M'enregistrer aidait, mais me réécouter était lent et j'étais un mauvais juge de mon propre rythme. Je terminais une section en la trouvant correcte ; un ami écoutait et me disait que je l'avais expédiée.

Le principe de l'application est simple : un utilisateur enregistre un clip court, l'application en extrait des traits prosodiques utiles, et une couche de coaching fait remonter trois ou quatre choses concrètes à changer. Pas « votre ton pourrait s'améliorer ». Précisément : « votre rythme est passé de 165 mots/min à 220 entre le deuxième et le troisième paragraphe ; l'auditeur a le sentiment que vous précipitez ».

Ce qu'il y a vraiment dans le pipeline

Une UI React Native pour l'enregistrement, la relecture et la revue de session. Côté enregistrement, le pré-traitement on-device gère le bruit de fond et la coupe des silences, parce qu'uploader deux minutes d'audio brut depuis un téléphone en 4G est une mauvaise expérience.

La couche d'inférence extrait des traits prosodiques : rythme en mots par minute sur des fenêtres glissantes, plage de hauteur, densité de mots de remplissage (comptés par un petit modèle fine-tuné), et quelques proxies de clarté dérivés de l'entropie spectrale. Un moteur de coaching mappe les écarts de ces traits sur des prompts courts et précis. L'utilisateur voit trois ou quatre puces par session, pas un mur de métriques.

L'historique compte plus que les scores par session. Les gens plafonnent. La vue de progression montre les tendances entre sessions, pour qu'on voie si la densité de fillers baisse vraiment ou si on a juste eu une bonne journée.

Ce qui était difficile

La latence. La première version faisait l'inférence côté serveur et l'aller-retour paraissait lent. On a déplacé l'essentiel de l'extraction de features sur l'appareil, gardé la classification plus lourde dans le cloud, et on a ramené l'écran de revue à environ 800 ms après l'arrêt de l'enregistrement. Pas instantané, mais bien sous le seuil de patience de l'utilisateur.

Le modèle de mots de remplissage a été la surprise. Le speech-to-text générique sous-compte les « euh » et « hum » parce qu'ils ne sont pas lexicalement informatifs. Il fallait un petit modèle entraîné spécifiquement pour les attraper, et même là, il faut le calibrer par accent. La densité de fillers d'un francophone n'a pas la même tête que celle d'un Nord-Américain. Le modèle actuel gère les deux raisonnablement ; il n'est pas parfait.

Ce qui reste ouvert

Les prompts de coaching sont encore basés sur des règles. Ils fonctionnent, mais une couche de coaching apprise (quels prompts produisent le plus d'amélioration utilisateur ?) est la prochaine chose à construire. La donnée est là. La boucle de feedback n'est juste pas encore serrée.

Stack
React NativeAudio MLTypeScriptAI