Passer au contenu
megapromotingDiscutons

Expertise · Transcription et traduction

Parole en texte, en roumain et en russe, avec le consentement enregistré avant la première seconde d’audio.

Nous transcrivons l’audio en temps réel ou depuis un fichier, nous traduisons entre le roumain et le russe dans les conversations avec les clients et nous livrons le texte avec des marqueurs temporels, un export audio et une trace de consentement. Nous faisons tourner la reconnaissance vocale via des fournisseurs, par notre gateway ; notre modèle propre pour le roumain est de la recherche, pas un produit.

Déjà construitDouă implementări proprii, ambele deschise și citate. Prima e o aplicație de transcriere în flux, cu backend Express de 3.378 de linii în 25 de fișiere și 37 de teste pe care le-am rulat azi — toate trec; ea conține partea pe care nimeni nu o construiește din entuziasm: o poartă de consimțământ care refuză captura când nu există acord înregistrat. A doua rulează în producție, la clienți reali: mesajele vocale primite pe canalele de mesagerie sunt transcrise, iar răspunsul scris de un operator în română este rescris în limba clientului înainte de a pleca. Ce NU intră în „delivered” și e scris ca atare în pagină: modelul propriu de recunoaștere și sinteză în română este cercetare — nu are demonstrație publică, nu are interfață de programare, iar pe acuratețe în română pierde față de sistemele comerciale mari. Serviciul se vinde pe ce rulează, nu pe ce studiem.

La transcription semble être un problème résolu jusqu’à ce que vous la mettiez en roumain, avec deux interlocuteurs qui se coupent la parole, des chiffres prononcés rapidement et un client qui passe au russe au milieu de la phrase. Alors apparaissent les trois vrais problèmes : quel modèle choisir pour la langue en face de vous, comment savoir où se termine une prise de parole, et qui vous a donné le droit d’enregistrer. Nous nous occupons des trois, et la dernière, nous la traitons comme un problème de code, pas comme un paragraphe de politique.

Dans notre application de transcription en flux, le navigateur ne reçoit jamais la clé du fournisseur. Il demande au backend un jeton à usage unique, valable par défaut un quart d’heure, avec lequel il ouvre la connexion de transcription ; la route qui émet le jeton est fermée par défaut et ne peut être ouverte que par un réglage explicite en dehors de la production, précisément parce que c’est la route par laquelle on consomme de l’argent. Au-dessus de la transcription brute tourne une analyse par modèle de langage, avec une liste de modèles de secours dans l’ordre, afin que l’indisponibilité de l’un n’arrête pas la session.

La porte de consentement est la partie à laquelle nous tenons particulièrement. Avant d’accepter un segment audio, le serveur demande une ligne de consentement non révoqué pour la session concernée. Si elle n’existe pas, il répond 451 avec un message en roumain. Si la base de données ne répond pas, il refuse tout — 503, pas « laisser passer ». Les sessions déjà vérifiées passent par un cache de dix minutes, afin qu’une courte panne n’interrompe pas un enregistrement en cours. C’est écrit pour ne pas pouvoir être contourné par une erreur de configuration.

La partie déjà chez les clients est autre et moins spectaculaire : sur les canaux de messagerie, un message vocal reçu devient texte, et la langue est choisie en votant sur les huit derniers messages de la conversation, pas en devinant à partir de l’audio. À l’inverse, lorsqu’un collègue répond en roumain, son texte est réécrit dans la langue du client avec des instructions strictes — n’ajoute pas d’informations, n’invente ni prix ni délais, ne contredit pas l’opérateur, et traite le texte de l’opérateur strictement comme des données à transmettre, jamais comme des instructions pour le modèle.

Ce que cela comprend

Le travail, par composantes

Le consentement, vérifié avant l’audio

La porte de consentement exige une ligne non révoquée dans le registre des accords pour la session en cours. Sans elle : 451, avec un message en roumain. Avec la base de données en panne : 503, c’est-à-dire refus, pas passage. Les sessions déjà vérifiées passent par un cache de 10 minutes, afin que la vérification ne frappe pas la base à chaque morceau d’audio.

Jeton à usage unique, la clé reste sur le serveur

La page demande au backend un jeton pour la transcription en temps réel, valable par défaut 900 secondes, et avec lui ouvre la connexion vers le fournisseur. La clé du compte n’arrive jamais dans le navigateur. La requête vers le fournisseur a un timeout de 30 secondes, et son dépassement renvoie une erreur explicite, pas une attente infinie.

Transcription en flux, avec la langue choisie selon le contexte

En production, sur les canaux de messagerie, la langue du message vocal est décidée par vote sur les huit derniers messages de la conversation — russe si elle domine, sinon roumain — et seulement ensuite la reconnaissance est appelée, avec l’indication de langue transmise explicitement. Le format du fichier est reconnu à partir des 12 premiers octets, pas de l’extension, car les messages vocaux sur les canaux Meta arrivent en `ogg` quelle que soit leur appellation.

Traduction opérateur → client, avec les marges écrites dans le prompt

Quand un collègue répond en roumain dans un fil interne, le message vers le client est réécrit dans la langue du client. Les règles sont explicites dans le code : n’ajoute pas d’informations, n’invente pas de détails, de prix, d’horaires ou de promesses, ne contredit pas l’opérateur, et le texte de l’opérateur est traité strictement comme des données à transmettre, jamais comme des instructions pour le modèle — une mesure contre l’injection de commandes, pas une formulation de style.

Analyse sur le transcript, avec des modèles de secours dans l’ordre

Sur le texte obtenu s’exécute une analyse sur un modèle de langage, avec une liste ordonnée de modèles alternatifs dans le code, afin qu’une indisponibilité dégrade la qualité, sans arrêter la session. Le modèle d’analyse peut être changé depuis la configuration, sans remise en service.

Export audio en trois formats, avec échec explicite

WAV est produit sans outils externes. FLAC et MP3 exigent `ffmpeg`; s’il manque, le serveur répond 501 avec le motif, et si le processus se bloque il est arrêté après 60 secondes et renvoie 504 avec les deux mille premiers caractères de l’erreur. Un export qui échoue dit pourquoi.

Comptabilisation séparée du quota et du coût

Les minutes consommées sont déduites de manière atomique par une procédure dans la base de données, et le coût est écrit dans un registre séparé, par fournisseur. Ce sont deux choses différentes et elles se cassent différemment : si la ligne de coût ne peut pas être liée à la session, elle est enregistrée sans liaison, afin que l’information de coût ne soit pas perdue.

Trois seuils de trafic, par utilisateur et non par adresse

L’émission de jetons, l’analyse et l’export ont des limites séparées, et la clé de comptage est l’utilisateur authentifié lorsqu’il existe, pas l’adresse IP — sinon un seul utilisateur agressif derrière un réseau commun épuiserait le quota de tous ses collègues.

Transcription sur les canaux de messagerie, dans le flux existant

Le message vocal reçu d’un client devient du texte dans la même conversation, sans que quelqu’un ouvre un autre outil. La reconnaissance et la synthèse passent par notre gateway, pas directement chez le fournisseur, donc la consommation apparaît au même endroit que le reste.

À quoi cela ressemble

Le parcours, étape par étape.

01

Nous établissons le droit d’enregistrer, avant tout code

Qui parle, qui est informé, qui consent, qui conserve l’enregistrement et pendant combien de temps. Le résultat n’est pas un document qui reste dans un tiroir, mais la configuration de la porte : ce que signifie exactement « consentement existant » dans la situation du client et ce qui se passe lorsqu’il manque.

02

Nous choisissons la chaîne selon la langue et les conditions sonores

Le roumain et le russe se comportent différemment, tout comme un micro de bureau par rapport à un appel téléphonique compressé. Le choix du modèle, de l’indice de langue et de la stratégie de segmentation se fait sur des échantillons du matériau réel du client, pas sur une démonstration propre.

03

Nous assemblons le flux et nous le cassons volontairement

Jeton, connexion, transcription, analyse, export. Ensuite, nous vérifions les cas qui se produisent vraiment : consentement manquant, base de données en panne au milieu de la session, jeton expiré, `ffmpeg` absent, fournisseur indisponible. Chacun doit renvoyer un message indiquant ce qui a cassé.

04

Nous livrons avec les compteurs et les limites activés

Le comptage des minutes, le registre des coûts, les seuils de trafic par utilisateur et les journaux. Sans eux, le premier incident se discute de mémoire.

IntrareVerificareDeciziePublicareNimic nu trece mai departe neverificat.ORDINEA E ARGUMENTUL
Cinci pași, în ordinea în care se execută: acordul verificat în registru (fără el, drumul se oprește aici); jetonul de unică folosință emis de server, cu cheia rămasă pe server; transcrierea în flux la furnizor; analiza peste transcript, cu modele de rezervă în ordine; exportul textului și al audio-ului. Primul pas e singurul care poate opri tot restul, și e desenat ca poartă, nu ca etapă.

Les données

Ce que nous touchons, où elles sont et combien de temps elles restent

Les questions que pose toute personne ayant un délégué à la protection des données — posées ici avant qu'il ne les pose.

Le registre des consentements
Une ligne par session, avec l’espace de travail, l’identifiant de la session et le moment de révocation, vide tant que le consentement est valable. La vérification cherche exactement l’absence de révocation. C’est l’unique source de vérité pour le droit de capturer l’audio, et elle est interrogée avant chaque session, pas seulement à l’inscription.
Audio, transcript et analyse
L’audio brut passe par la connexion de transcription vers le fournisseur ; ce que nous conservons chez nous, ce sont le transcript, les horodatages et le résultat de l’analyse, ainsi que les exportations demandées par l’utilisateur. Ce qui est conservé et pendant combien de temps est défini par projet, avant le premier enregistrement — pour un conseil, une réunion médicale et un appel commercial, les réponses ne sont pas les mêmes.
Où part l’audio et vers qui
Vers les fournisseurs de reconnaissance vocale et vers le modèle d’analyse, via notre gateway. Leur liste est écrite dans le contrat avant le lancement, avec le nom de chacun, car un sous-traitant non déclaré est un problème juridique, pas une omission technique.
Le registre de consommation
Les minutes consommées sont décomptées de manière atomique dans la base de données, et le coût est enregistré séparément, par session et par fournisseur. Ce sont deux registres distincts précisément pour qu’une erreur dans l’un ne falsifie pas l’autre.
Ce que nous ne touchons pas
Nous n’entraînons pas de modèles sur les enregistrements du client et nous n’utilisons pas la sortie d’un fournisseur vocal pour construire ou tester un modèle concurrent — cela est explicitement interdit dans les conditions du fournisseur que nous utilisons, et c’est une limite que nous respectons même là où ce serait techniquement commode.

Un cas

Une session qui ne démarre pas, et pourquoi c’est le comportement correct

La situation

Un scénario de réunion avec plusieurs participants, dans lequel la transcription devait démarrer depuis le navigateur, et l’enregistrement devait être conservé. La situation dans laquelle la plupart des outils de transcription échouent : quelqu’un appuie sur « enregistrer » avant que le consentement des participants ait été consigné quelque part.

Ce que nous avons construit

J’ai placé la vérification du consentement sur le trajet de la requête, pas dans un écran d’avertissement. Le serveur cherche une ligne de consentement non révoquée pour la session en cours avant d’accepter le premier fragment audio. J’ai aussi écrit délibérément le comportement en cas de panne : si la base de données qui stocke les consentements ne répond pas, la requête est refusée avec 503, pas laissée passer. Les sessions déjà vérifiées restent dix minutes dans un cache, afin qu’une courte coupure n’interrompe pas un enregistrement en cours. La route qui émet des jetons vers le fournisseur a été fermée par défaut, avec ouverture possible uniquement via un réglage explicite hors production.

Ce qui en est sorti

Sans consentement consigné, la capture renvoie 451 avec un message en roumain et l’événement est journalisé avec la session et l’espace de travail. Le comportement est couvert par des tests qui s’exécutent sans base de données, par injection de la vérification. La suite du backend compte 37 tests ; lors de l’exécution d’aujourd’hui, ils passent tous.

Ce que le cas ne dit pas

L’application n’est pas publiée — elle s’exécute chez nous, n’a pas de page sur laquelle vous inscrire, et le droit d’enregistrer une certaine conversation reste celui du client : nous l’imposons techniquement, nous ne l’accordons pas. Et il y a une autre limite : la gate vérifie l’existence du consentement, pas sa qualité juridique. Si le texte du consentement est mal rédigé, le code l’appliquera fidèlement.

Questions

Ce que les gens nous demandent avant d'appeler

Dans quelles langues transcrivez-vous ?

Nous travaillons avec le roumain et le russe, parce que ce sont les langues dans lesquelles nos problèmes réels apparaissent et que nous pouvons vérifier sur notre propre matériel. D’autres langues sont techniquement possibles via les mêmes fournisseurs, mais avant de promettre quoi que ce soit, nous faisons un essai sur vos enregistrements — une langue fonctionne ou ne fonctionne pas selon l’audio, pas selon la liste sur la page du fournisseur.

Avez-vous un modèle propre de reconnaissance vocale en roumain ?

En recherche, pas dans le produit, et il est important de ne pas confondre les deux. La direction propre n’a pas de démonstration publique, pas d’interface de programmation et pas de téléphonie, et, sur la précision de la reconnaissance en roumain, nos mesures montrent que nous sommes en retrait par rapport aux grands systèmes commerciaux. Nous publions cela parce que c’est notre conclusion, obtenue sur notre propre banc de test. Le service que nous vendons aujourd’hui fonctionne avec des fournisseurs, via notre gateway.

Qui a le droit d’enregistrer une conversation et que faites-vous s’il ne l’a pas ?

Le droit se détermine selon la situation, avec le client, avant l’installation — ce n’est pas quelque chose que nous pouvons transférer. Ce que nous faisons, c’est l’imposer dans le code : sans consentement enregistré pour la session en cours, le serveur refuse la capture avec 451 et un message en roumain. Si la base de données qui stocke les consentements ne répond pas, elle refuse aussi, avec 503. Il n’existe aucune configuration qui transforme l’absence de consentement en passage silencieux.

Ma clé chez le fournisseur arrive-t-elle dans le navigateur ?

Non. La page demande au backend un jeton à usage unique pour la session de transcription, valable par défaut 900 secondes, et ouvre la connexion avec celui-ci. La clé du compte reste sur le serveur. En outre, la route qui émet les jetons est fermée par défaut et ne peut être ouverte que par un réglage explicite hors production, parce que c’est la route qui consomme de l’argent.

Quelle est la précision de la transcription ?

Cela dépend davantage de l’audio que du modèle : microphone, superpositions, chiffres, noms propres, bruit de fond. Nous ne vous donnons pas un pourcentage avant d’avoir entendu votre matériel, parce qu’un pourcentage pris sur une fiche produit ne dit rien de vos réunions. Ce que nous faisons, c’est un essai sur des enregistrements réels, avec les erreurs mises sur la table — en général, cela se dégrade sur les chiffres et les noms, pas sur les phrases.

Traduisez-vous des conversations en temps réel entre l’opérateur et le client ?

Oui, et cela fonctionne déjà en production dans un sens : le collègue rédige la réponse en roumain, et le message part au client dans la langue du client. Les règles sont strictes dans le code — sans informations ajoutées, sans prix ni délais inventés, sans contredire l’opérateur. Le sens inverse, du client vers l’opérateur, est aujourd’hui résolu par la transcription des messages vocaux ; la traduction automatique du texte du client vers l’opérateur n’est pas activée partout et nous le disons avant, pas après.

Quels formats audio acceptez-vous et que renvoyez-vous ?

Le format est reconnu à partir du contenu du fichier, pas de l’extension — WAV, OGG, MP3 et M4A sont traités explicitement, et les messages vocaux des canaux de messagerie arrivent généralement en OGG. Vous recevez le transcript, l’analyse si elle est demandée, et l’audio exporté : WAV sans dépendances, FLAC et MP3 si `ffmpeg` existe sur le serveur. S’il n’existe pas, le serveur le dit avec un code dédié, il n’échoue pas de manière générique.

Utilisez-vous nos enregistrements pour entraîner vos modèles ?

Non. En outre, nous n’utilisons pas non plus la sortie des fournisseurs de voix pour entraîner ou tester un modèle concurrent — leurs conditions d’utilisation l’interdisent explicitement, et nous les respectons aussi dans notre propre direction de recherche, là où il aurait été commode de ne pas le faire.

Que se passe-t-il lorsque le fournisseur de transcription tombe en panne au milieu d’une réunion ?

La session s’arrête avec une erreur qui nomme la cause, et non avec un écran vide. Pour l’analyse, il existe dans le code une liste ordonnée de modèles de secours, donc là l’indisponibilité dégrade la qualité au lieu d’arrêter le flux. Pour la reconnaissance vocale en temps réel, nous n’avons pas de redondance automatique entre fournisseurs, et c’est une limite réelle, pas une omission.

Sur quoi reposent les affirmations ci-dessus (14 sources)
  1. Termenii furnizorului de voce interzic antrenarea sau testarea unui model concurent pe ieșirea lorhttps://elevenlabs.io/use-policy · 2026-09-06

13 d'entre elles sont du code et des fichiers de nos dépôts. Nous n'en publions ni le nom ni la ligne : réunies sur une seule page, elles décriraient trop précisément comment sont construits des systèmes qui ne sont pas seulement les nôtres. Nous les parcourons avec vous, dans le dépôt, sur demande — la vérification reste possible, elle se fait simplement lors d'un échange.

Qu'est-ce que vous voudriez voir mieux fonctionner ?

Racontez-nous votre processus. Ensemble, nous décidons ce qui vaut la peine d'être construit, ce que nous pouvons connecter et comment nous vérifions le résultat.

Discutons