Bêta 0.2.0-beta.2, pas encore pour un process critique. Voir la roadmap
PNeX logo
Documentation de la version en développement, pas encore publiée. Voir la version stable (0.1.0)

Flux audio & transcription

Capter radios, flux en direct et caméras IP en continu, les transcrire en texte horodaté et classer ce texte par sujets

Médias › Flux audio liste les radios, flux en direct et caméras IP que l’organisation capte en continu. L’audio d’un flux est découpé en courts segments puis transcrit en texte horodaté ; seul le texte est conservé durablement. La vidéo d’un flux, si vous la demandez, alimente les nœuds caméra des flows.

La page compte cinq onglets : Flux, Transcriptions, Modèles et profils, Taxonomies et Plages.

Ajouter un flux

Ajouter un flux ouvre le formulaire :

  • Nom et Type : icecast pour une radio en continu, hls pour une playlist .m3u8, http_file pour un fichier unique comme un épisode de podcast, rtsp pour une caméra IP, media_asset pour rejouer une vidéo ou un son de la médiathèque.
  • URL du flux, ou pour media_asset le Fichier de la médiathèque (vidéo MP4/MOV ou audio MP3/AAC/OGG/FLAC/WAV, 512 Mo au plus). Le fichier est joué une fois à sa vitesse normale, puis le flux se désactive tout seul.
  • Pistes : Audio (transcription), Vidéo (bus caméra) ou Audio et vidéo. Avec la vidéo, choisissez les Images par seconde (1 à 5). La vidéo fonctionne avec les sources RTSP, HLS et MPEG-TS / MP4 en H.264, H.265 ou MJPEG.
  • Secret d’accès (en-tête ou identifiants) : saisi, ou choisi dans le coffre de l’organisation. Il n’est envoyé qu’à l’hôte de l’URL. Une URL qui contient un jeton ou un mot de passe est refusée : les identifiants vont toujours dans le secret.
  • Profil de transcription : le modèle de reconnaissance vocale utilisé pour les nouveaux segments (voir plus bas). Un flux uniquement vidéo n’en a pas besoin.
  • Durée d’un segment (s) (10 à 120) et Conservation de l’audio : aucune (audio supprimé après transcription, par défaut), un nombre de jours, ou conservé quand l’organisation détient les droits.
  • Lieu de capture : Ce serveur, Un worker de capture géré par la plateforme, ou un Boîtier de capture : un des agents edge de l’organisation dont la capture média est activée, par exemple un Raspberry Pi branché à un tuner TV. Le boîtier capte sur son propre réseau et envoie l’audio par son lien chiffré d’appareil ; il ne détient jamais de clé de stockage. Un boîtier ne capte que l’audio.
  • Canal d’alerte : où part l’alerte de silence, en plus de la notification dans l’application.

Tester capte les premières secondes du flux et les transcrit avec son profil, sans rien stocker : de quoi vérifier l’URL et le profil avant d’Activer le flux.

Onglet Flux : état de la capture de chaque flux, avertissement d’opt-out à vérifier, et ses actions
Onglet Flux : état de la capture de chaque flux, avertissement d’opt-out à vérifier, et ses actions

Caméras IP (RTSP)

Une caméra IP est un flux de type rtsp avec une piste vidéo. Mettez utilisateur:mot de passe dans le secret d’accès, jamais dans l’URL. La connexion se fait en TCP uniquement et les redirections sont refusées. Dans un flow, le nœud Source caméra, source Flux média (caméra IP), lit ses images comme celles d’un appareil caméra : voir Caméras & vision. Le bouton Enregistrements du flux liste la vidéo écrite par un nœud Enregistrement vidéo.

Avant de capter un flux tiers, vérifiez que l’éditeur ne s’est pas opposé à la fouille de textes et de données (conditions, robots.txt, mentions), puis cochez Opposition à la fouille de textes et de données vérifiée. D’ici là, la liste affiche un avertissement. Chaque organisation capte un nombre limité de flux, fixé par la plateforme.

Santé de la capture et alerte de silence

Sous chaque flux activé, une ligne donne le temps écoulé depuis le dernier son, l’âge du plus ancien segment en attente de transcription et la part de la dernière heure effectivement transcrite. L’état indique En capture, Démarrage, Nouvel essai bientôt (avec la raison : flux injoignable, format non pris en charge, boîtier de capture hors ligne…) ou Arrêté.

Segments liste chaque tranche captée avec son état (Capté, En file, En transcription, Transcrit, En échec, Silence (sauté), Trop tard (sauté)). Relancer les segments en échec renvoie à la transcription ceux dont l’audio est encore conservé. Les segments trop en retard sur le direct sont sautés volontairement, pour que le texte suive le direct.

Segments d’un flux : état et durée de transcription de chaque tranche, et Relancer les segments en échec
Segments d’un flux : état et durée de transcription de chaque tranche, et Relancer les segments en échec

Quand un flux activé n’apporte aucun son pendant 2 minutes, l’organisation reçoit une notification « Stream X is silent » (les notifications système sont rédigées en anglais), et un message sur le Canal d’alerte du flux s’il y en a un. Une alerte par silence ; elle se réarme dès que le son revient. L’alerte ne surveille que l’audio : un flux uniquement vidéo ne la déclenche jamais.

Modèles et profils

PneX n’embarque aucun modèle de parole : vous importez ceux que vous voulez faire tourner.

  1. Importer un modèle : téléversez une archive sherpa-onnx .tar.bz2 ou un fichier GGML whisper.cpp, ou prenez-en un Depuis la médiathèque, avec sa Licence du modèle. Le serveur reconnaît la famille, charge le modèle et transcrit un extrait de référence : la ligne indique combien de flux en temps réel il tient et son taux d’erreur sur l’extrait. Vérifier relance cette mesure. Tester transcrit un fichier audio que vous déposez (ses 2 premières minutes) et affiche le texte et le temps de calcul.
  2. Importez de la même façon les modèles d’appoint, en fichiers .onnx uniques : Détection de voix (par exemple Silero VAD) et, pour la diarisation, Diarisation : empreinte de locuteur puis Diarisation : segmentation (l’empreinte d’abord : la segmentation est vérifiée avec elle).
  3. Ajouter le profil : Nom du profil, Modèle de transcription, Détection de voix facultative, Diarisation : segmentation + Diarisation : empreinte de locuteur facultatives, et la Langue (fr, en… ou auto). Choisissez ensuite ce profil dans le flux.
Modèles et profils : deux modèles de transcription vérifiés, un profil, et le formulaire d’ajout de profil
Modèles et profils : deux modèles de transcription vérifiés, un profil, et le formulaire d’ajout de profil

Avec la détection de voix, un segment sans parole n’est pas transcrit et apparaît en Silence (sauté). La durée de parole de chaque segment est écrite dans la série media_speech_seconds (label stream), prête pour un tableau de bord.

Avec la diarisation, chaque transcription porte des tours de parole étiquetés S1, S2… Ces étiquettes sont propres au flux : elles disent « la même voix qu’à l’instant », jamais qui parle. Elles repartent de zéro après 30 minutes sans entendre cette voix ou quand la transcription redémarre. Le temps de parole par étiquette est écrit dans media_speaker_seconds (labels stream, speaker). Nommer un locuteur relève de sources externes (grilles, annonces, plages), jamais de la voix. Reconnaître une personne consentante à sa voix est une fonction distincte et volontaire : voir Empreintes vocales.

Supprimer un modèle supprime les profils qui l’utilisent ; leurs flux ne sont plus transcrits tant qu’un autre profil n’est pas choisi.

Transcriptions

L’onglet Transcriptions cherche dans le texte de tous les flux, ou d’un seul, du plus récent au plus ancien (Rechercher dans le texte…). Dans un flow, le nœud Source média émet un message par segment transcrit des flux qu’il liste, avec le texte, la langue, le modèle et, avec la diarisation, les tours de parole. Rien n’est émis pendant les silences.

Plages horaires

Une plage est un intervalle nommé d’un flux ou de toute l’organisation : une émission, un journal, un poste de travail, un lot de production. Elle a un horaire prévu (annoncé par une grille) et/ou un horaire réel (ce qui s’est vraiment passé) ; les statistiques utilisent le réel quand il existe.

L’onglet Plages montre un jour à la fois pour un flux ou Toute l’organisation. Une frise trace deux barres par plage : la claire pour le prévu, la foncée pour le réel, si bien qu’un départ en retard se voit d’un coup d’œil. Chaque ligne donne son Origine (Grille, Détectée, EPG, Manuelle, Import) et un lien Source le cas échéant.

  • Nouvelle plage : libellé, catégorie, Identifiant externe, début et fin prévus et réels, lien source (http ou https). Il faut au moins un couple d’horaires complet.
  • Importer une grille : un fichier CSV avec ligne d’en-tête (label obligatoire, plus external_id, planned_start, planned_end, actual_start, actual_end, category, source_url ; horaires au format 2026-10-12T07:00:00+02:00 ; séparateur virgule ou point-virgule) ou un fichier iCalendar .ics (UID, SUMMARY, DTSTART, DTEND ou DURATION). Le résultat compte les plages créées, mises à jour et refusées, avec la ligne et la raison de chaque refus. Fichiers limités à 1 Mio et 5000 lignes.
Onglet Plages : une journée d’un flux, avec Nouvelle plage et Importer un programme
Onglet Plages : une journée d’un flux, avec Nouvelle plage et Importer un programme

L’identifiant externe repère une plage dans sa grille : réimporter le même fichier met les plages à jour au lieu de les dupliquer, et une cellule CSV vide laisse la valeur en place ; une grille réimportée n’efface donc jamais les horaires réels écrits par un flow.

Dans un flow, le nœud Écriture de plages enregistre chaque message comme une plage du flux choisi dans le nœud : une grille récupérée chaque nuit (Inject → Requête HTTP → Fonction → Écriture de plages), ou une annonce repérée dans les transcriptions (Source média → Fonction → Écriture de plages, avec les horaires réels). Pour des statistiques par émission ou par tranche horaire, ajoutez un widget Barres par plage / tranche à un tableau de bord.

Taxonomies et classifieur de sujets

Une taxonomie est une liste versionnée de sujets. Chaque sujet a un Identifiant (minuscules, chiffres et _, stable dès que des séries l’utilisent), un Libellé, une Définition et des Mots-clés. Chaque enregistrement crée une nouvelle version ; les anciennes ne sont jamais réécrites.

  • Nouvelle taxonomie (nom et description) démarre vide, en version 0.
  • Nouvelle version modifie le tableau des sujets (jusqu’à 100 sujets, 50 mots-clés chacun), avec une Note (ce qui change), puis Enregistrer la version.
  • Historique liste chaque version avec sa date, sa note et ses sujets.

Dans un flow, le nœud Classifieur de sujets (en général après une Source média) choisit une taxonomie et épingle sa version courante. Chaque message reçoit topics (les identifiants des sujets trouvés, éventuellement aucun) et taxonomy_version (nom@version). Un sujet correspond quand l’un de ses mots-clés apparaît en mots entiers, sans tenir compte de la casse ni des accents : bourse ne correspond pas à boursier. Un sujet sans mot-clé ne correspond jamais.

Une nouvelle version n’atteint un flow que lorsque vous la choisissez dans le nœud et redéployez. Mettez taxonomy_version dans les labels des séries écrites : une nouvelle version démarre alors de nouvelles séries au lieu de se mélanger aux anciennes.

Les transcriptions sont le texte de quiconque diffuse : les flows les traitent comme des données, jamais comme des instructions.

Rôles

Tous les membres consultent flux, segments, enregistrements, transcriptions, plages et taxonomies. Owners, Admins et Members les créent et les modifient ; seuls les Owners et Admins posent un secret d’accès, ou déplacent un flux qui détient un secret vers une autre adresse ou sur un boîtier de capture. Les Viewers ne modifient rien.

On this page