Capturează
Enregistre les flux configurés dans les limites des droits d’utilisation.
Analyse audio & média Instrument specializat
Un outil pour la capture, la transcription et l’organisation des publicités radio. Il regroupe les segments répétitifs et permet de les revoir avec la source audio.
Monitor Radio
Enregistre les flux configurés dans les limites des droits d’utilisation.
Transforme l’audio en texte et propose le regroupement des fragments similaires.
L’équipe peut réécouter les fragments et exporter l’information pertinente.
Exploration des messages et des répétitions sur une période suivie.
Retrouver les fragments sans réécouter l’ensemble du matériel.
Transcriptions et regroupements pouvant être corrigés par une personne.
La détection et la transcription automatiques peuvent se tromper. La disponibilité des captures et la couverture sont vérifiées pour chaque source.
Monitor Radio en détail
Monitor Radio répond à cinq questions sur une publicité entendue à la radio : de quelle station elle est venue, à quelle heure exacte elle a commencé, combien de temps elle a duré, ce qui y a été dit et où se trouve la preuve audio pour vérification. L’interface principale est un journal opérationnel des publicités, pas un écran de transcription.
La chaîne est locale et sans clés obligatoires : `ffmpeg` capture le flux, Whisper transcrit, un détecteur avec scoring transparent marque les segments qui ressemblent à de la publicité, et les publicités répétitives sont regroupées par empreinte de texte. Tout entre dans un SQLite auditable, dont on peut extraire des CSV et le fichier audio de chaque publicité.
Ce qu’il faut dire avant toute démonstration : la détection ne capte pas tout. La mesure propre sur la base de données réelle donne un recall estimé de 30–50% des publicités qui étaient réellement à l’antenne, et les causes sont connues et listées. Quiconque vend la surveillance radio en disant « nous captons tout » soit n’a pas mesuré, soit ne vous le dit pas.
Jusqu’à 10 enregistrements capturés en parallèle avec `ffmpeg`, en segments de 30 secondes, chacun validé comme un WAV correct avant d’entrer dans la file. La file vit dans la base de données, avec un prêt de 300 secondes, un signal de vie et un maximum de 3 tentatives par job — si le processus tombe, les jobs sont récupérés au lieu d’être perdus. Il existe aussi un mode continu, sans trous, qui découpe le flux directement depuis `ffmpeg` et le reprend par la surveillance du dossier.
Deux moteurs interchangeables : Whisper via sa propre passerelle (par défaut dans la configuration) ou `faster-whisper` local, sur CPU avec quantification int8, modèle `large-v3-turbo`, avec filtre VAD et recherche en faisceau de 5. La langue est détectée automatiquement, ce qui compte sur le marché moldave où la même station alterne le roumain et le russe dans la même heure.
Chaque segment reçoit un score entre 0 et 1, calculé à partir de signaux explicites : mots-clés commerciaux en roumain et en russe, présence d’un numéro de téléphone, d’un site web, d’un prix ou d’un appel à l’action, avec une pénalisation quand le texte ressemble à une information. Un segment d’une durée entre 5 et 90 secondes reçoit un petit bonus. Le seuil par défaut est de 0,30, avec extension aux segments voisins au-dessus de 0,20, afin qu’une publicité coupée en deux morceaux ne soit pas perdue. Les raisons du score sont conservées à côté du score.
La même publicité diffusée des dizaines de fois est regroupée par empreinte textuelle : la transcription est normalisée, découpée en fenêtres chevauchantes de 5 mots, les 20 premières triées sont conservées et un bref résumé cryptographique est produit. S’y ajoute une empreinte audio via `chromaprint`, qui regroupe la même publicité diffusée sur différentes stations, là où les transcriptions diffèrent.
86 marques commerciales de Moldavie dans le catalogue initial — retail, banques, télécoms, pharmacies, automobile, restaurants — plus découverte automatique de nouvelles marques à partir des transcriptions, avec ajout, suppression, import et export via API.
Chaque publicité peut être marquée comme confirmée, rejetée ou incertaine directement depuis l’interface, avec filtre et résumé sur ces états. L’export CSV respecte le filtre actuel, et l’audio de chaque publicité peut être réécouté dans le navigateur sur son intervalle exact.
Trois déclencheurs d’alerte sur Telegram : station en panne, retard au-delà du seuil et apparition d’une marque suivie. En plus, métriques Prometheus, vérification de santé approfondie et un endpoint de disponibilité.
Données et fonctionnement
De l'exploration à l'implémentation
Les stations à suivre sont choisies, chaque flux est vérifié avec le sondage inclus (`probe-streams`) et l’intervalle horaire surveillé est défini. Une station qui ne répond pas reste désactivée dans la configuration jusqu’à ce qu’elle soit vérifiée, pas ajoutée dans l’espoir qu’elle fonctionne.
Qui détient le droit d’enregistrer l’émission et combien de temps elle peut être conservée. C’est l’étape que l’on saute le plus souvent et la seule qui ne peut pas être réparée techniquement après coup.
En dessous de 4 stations, cela fonctionne sur CPU. À partir de 4, la transcription devient le goulot d’étranglement : soit GPU, soit 2–4 workers, soit des segments plus longs. La pression inverse est conçue pour ralentir la capture, pas pour perdre l’audio — mais un backlog de 30 minutes signifie des alertes avec 30 minutes de retard.
Le seuil par défaut est de 0,30. En dessous, cela signifie plus de publicités détectées et plus de faux positifs à cocher ; au-dessus, l’inverse. La calibration se fait sur les publicités confirmées et rejetées manuellement durant la première semaine, pas à partir de l’intuition.
Ce qui doit en sortir : apparitions par marque, par émission, par intervalle, avec lien vers l’audio. L’export CSV et le rapport quotidien sont le point de départ ; la forme finale se décide après avoir vu quelles questions l’équipe pose effectivement.
Non, et le chiffre est mesuré sur des données réelles : rappel estimé à 30–50% au seuil utilisé dans l’audit. Ce qu’il manque est prévisible — les publicités qui ne sont que la marque et un slogan sans téléphone, site ou prix ; les jingles chantés, que Whisper transcrit comme du bruit ; les parrainages d’émission ; les publicités de moins de 5 secondes. Ce qu’il capture bien, ce sont les publicités qui disent quelque chose de vérifiable, c’est-à-dire la majorité de celles avec une offre.
Nous n’avons pas encore de chiffre de précision au sens strict, et il est plus honnête de le dire que d’en inventer un. Ce que nous avons, c’est une distribution de scores mesurée sur une base réelle de 5018 captures et 7428 segments, avec 111 publicités identifiées, plus une vérification manuelle sur des échantillons. Il en est ressorti une constatation utile : 193 segments se situaient entre 0,30 et 0,40 et étaient en majorité de vraies publicités manquées — raison pour laquelle le seuil a été abaissé à 0,30. Un chiffre réel de précision et de rappel exige 60+ minutes d’audio étiqueté manuellement pour chaque station ; c’est un travail séparé, avec coût et durée.
Non. Une capture audio prouve que le message a été diffusé, à quelle heure et combien de temps il a duré. L’audience est une mesure complètement différente, réalisée par des instituts de mesure avec panel — elle ne se déduit pas du fait qu’un microphone numérique ait entendu quelque chose. Ce que nous fournissons, c’est le nombre de diffusions, l’heure, la station et la preuve audio.
C’est la question à laquelle le projet n’a pas encore de réponse écrite — dans le dépôt, il n’existe aucun document sur les droits, et c’est un manque, pas une omission de communication. Les flux surveillés sont publics à l’écoute, mais enregistrer et conserver une émission pour l’analyse n’est pas la même chose qu’écouter. La base légale pour la capture et la rétention se détermine pour chaque station avant l’installation, avec le juriste du bénéficiaire. Ce que nous pouvons faire techniquement, c’est réduire l’exposition : l’audio est supprimé automatiquement après 48 heures, tandis que le texte et les métadonnées restent.
Oui. La langue est détectée automatiquement, et le détecteur dispose d’ensembles de mots-clés séparés pour le roumain et le russe, avec des tests propres pour chacun. Le cas qui dégrade encore le résultat : si la langue est forcée en roumain dans la configuration, une publicité en russe est transcrite de manière déformée et le score passe sous le seuil. La détection automatique est le réglage correct sur les stations mixtes.
La capture en supporte 10 en parallèle ; la transcription est la limite. Sur un Mac, sur CPU, avec un worker, on traite environ la moitié du temps réel — c’est-à-dire que 4 stations produisent plus vite que nous ne parvenons à transcrire, et la file augmente. Le système ne perd pas l’audio dans ce cas (il ralentit la capture de manière contrôlée), mais les résultats prennent du retard. Pour 10 stations en quasi temps réel, il faut un GPU ou des segments plus longs.
Oui, et c’est conçu exactement pour cela : chaque publicité a un fichier audio associé, lisible dans le navigateur sur son intervalle exact, ainsi que la transcription et les segments voisins. Une analyse de surveillance qui ne peut pas être vérifiée à la source ne vaut rien dans une discussion avec un client ou avec une station.
Pas en continu. C’est une plateforme locale, complète et testée — 81 tests automatiques passent — mais l’audit lui-même dit sans ménagement que le moniteur ne tourne nulle part 24/7. Il existe un fichier de démarrage automatique pour macOS et une configuration Docker avec un profil GPU ; ce qui manque, c’est le serveur sur lequel l’héberger et le test d’acceptation sur 10 stations pendant 2 heures, pour lequel le harness est déjà écrit.
Exemple illustratif
Un scénario d’utilisation, sans données client ni résultats commerciaux attribués.
Un annonceur veut savoir combien de fois sa publicité a été diffusée sur quatre stations, à quels jours et à quelles heures, avec la preuve audio.
Les quatre flux sont capturés en segments de 30 secondes, validés comme WAV corrects et placés dans une file durable. Whisper transcrit chaque segment avec la langue détectée automatiquement. Le détecteur score chaque segment sur les signaux commerciaux et marque ceux qui dépassent 0,30, en étendant vers les segments voisins au-delà de 0,20 pour qu’une publicité coupée en deux reste entière. Les segments marqués sont regroupés par empreinte de texte — fenêtres de 5 mots, les 20 premiers triés — et, lorsque le texte diffère entre les stations, par empreinte audio.
Un cluster avec toutes les occurrences de la même publicité, chacune avec la station, la date, l’heure exacte de début, la durée, la transcription et le fichier audio lisible. Un CSV avec le même contenu, filtré par intervalle et par station. Le chiffre des diffusions est un seuil minimum, pas un total : au recall mesuré, une partie des diffusions n’est pas captée, surtout si la publicité est chantée ou ne contient pas de téléphone, de site ou de prix.
Ce este necesar:Un server care rulează continuu în intervalul monitorizat — pe un laptop pornit câteva ore pe zi rezultatul e incomplet și înșelător. Peste 4 posturi, GPU. Și temeiul legal pentru captura și retenția fiecărui post, stabilit înainte de start.
Possibilités de collaboration
Projets de transcription et de génération vocale sur des matériaux pour lesquels il existe des droits d’utilisation et une finalité documentée.
Nous définissons un pilote autour d’un processus réel : utilisateurs, données, intégrations, coûts et critères d’acceptation. L’extension suit après l’évaluation du résultat.
Nous établissons les exigences d’accessibilité, d’hébergement, de protection des données et d’interopérabilité. Toute connexion avec des services AGE ou STISC nécessite la validation de l’éligibilité, de l’accès et des approbations.
Ce sont des scénarios d’adaptation, non des déclarations sur des contrats ou partenariats existants. Les fonctions proposées sont confirmées dans le périmètre de travail du projet.
Discuter d'un piloteCronberry réunit sources autorisées, conversations et relations dans un espace de recherche et de coordination.
Développement & démonstrationsGrai est notre direction de recherche pour la synthèse vocale et les modèles adaptés aux langues d'ici.
Cercetare & dezvoltareUn studio pour générer, écouter et télécharger des matériaux vocaux avec des modèles text-to-speech.
Instrument specializatRacontez-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.