Avis sur les Cookies
Nous utilisons des cookies pour analyser notre trafic et améliorer votre expérience. Vous pouvez accepter ou refuser les cookies analytiques.
En tant que freelance, les meilleures idées viennent en voiture ou sur le chantier, précisément quand taper du texte est impossible. C’est pourquoi BillableMe a reçu des notes vocales : vous dictez une tâche, un rappel ou une note, et une demi-minute plus tard le texte apparaît, consultable. Voici comment je m’y suis pris.
L’application enregistre avec le package record en AAC (m4a), demande l’autorisation du microphone et vous laisse choisir directement une catégorie, un drapeau et un titre. Le fichier part vers l’API NestJS en upload multipart. Dès cet instant, la note apparaît dans la liste avec le statut « en traitement ».
L’API stocke le fichier audio sur un volume partagé, crée un enregistrement dans PostgreSQL et place un job dans une file Bull sur Redis. L’appel HTTP se termine ainsi en une fraction de seconde. Un worker reprend le job, appelle le service de transcription et réessaie jusqu’à trois fois avec des délais croissants en cas d’erreur. Le statut passe de pending à processing, puis à completed ou failed.
La transcription elle-même se fait dans un petit service FastAPI qui exécute OpenAI Whisper. J’ai choisi le modèle base : 74 Mo, environ 30 secondes par minute d’audio sur CPU, et largement suffisant pour des notes dictées en néerlandais et en anglais. La taille du modèle est une variable d’environnement, ce qui permet de passer à small ou medium si le matériel le permet. ffmpeg est inclus dans le conteneur pour décoder le m4a.
Dès que le texte est en base de données, l’application l’affiche sous la note. Vous pouvez écouter l’enregistrement à une vitesse de 0,75 à 1,5, modifier la note, filtrer par catégorie ou par période et rechercher dans les transcriptions.
small est trois fois plus lent que base sur CPU ; pour de courtes notes dictées, base était amplement suffisant.Vous souhaitez une fonction IA similaire dans votre propre application ? Contactez-moi.