Système de Transcription de Réunions Multimodale basé sur DamoFD-0.5G et Reconnaissance Vocale

Le Défi de la Diarisation dans les Visioconférences

Lors des réunions à distance, la superposition des voix et les bruits de fond rendent extrêmement difficile l'attribution correcte des transcriptions aux intervenants. Les systèmes traditionnels traitent l'audio et la vidéo de manière isolée, ce qui empêche d'identifier visuellement la personne qui prend la parole. Pour résoudre ce problème, l'intégration de la détection faciale et de la reconnaissance vocale offre une approche multimodale efficace.

Intégration du Modèle Léger DamoFD-0.5G

Pour doter le système d'une "vision" performante sans surcharger les ressources de calcul, le modèle DamoFD-0.5G est idéal. Conçu pour fonctionner avec une contrainte de 0,5 GigaFLOPs, il atteint une précision supérieure à 71 % sur le jeu de données difficile de WiderFace. Outre la détection des visages, il extrait cinq points clés (yeux, nez, coins de la bouche), ce qui est crucial pour estimer l'orientation de la tête et l'attention du locuteur.

L'inférence peut être déployée rapidement via la bibliothèque ModelScope. Voici comment initialiser le pipeline et extraire les caractéristiques faciales :

import cv2
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

# Initialisation du pipeline de détection avec le modèle léger DamoFD
detecteur_visages = pipeline(
    task=Tasks.face_detection, 
    model='damo/cv_ddsar_face-detection_iclr23-damofd'
)

url_image_test = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/face_detection2.jpeg'

# Exécution de l'inférence
sortie_inference = detecteur_visages(url_image_test)

# Extraction et affichage des résultats
boites_englobantes = sortie_inference.get('boxes', [])
niveaux_confiance = sortie_inference.get('scores', [])

print(f"Nombre de visages détectés : {len(boites_englobantes)}")
for index, (coordonnees, fiabilite) in enumerate(zip(boites_englobantes, niveaux_confiance)):
    print(f"Visage {index + 1} : Position {coordonnees}, Score {fiabilite:.4f}")

Architecture du Système Multimodal

Traitement du Flux Vidéo et Suivi Temporel

Le module visuel analyse chaque frame du flux vidéo en temps réel. Pour maintenir l'identité des intervenants d'une frame à l'autre, un algorithme de suivi basé sur l'Intersection sur Union (IoU) est appliqué. Si les boîtes englobantes de deux frames consécutives se chevauchent suffisamment, elles partagent le même identifiant unique.

def calculer_iou(rect1, rect2):
    # Calcul de l'Intersection sur Union pour les boîtes englobantes
    x1 = max(rect1[0], rect2[0])
    y1 = max(rect1[1], rect2[1])
    x2 = min(rect1[2], rect2[2])
    y2 = min(rect1[3], rect2[3])
    
    intersection = max(0, x2 - x1) * max(0, y2 - y1)
    if intersection == 0:
        return 0.0
        
    aire1 = (rect1[2] - rect1[0]) * (rect1[3] - rect1[1])
    aire2 = (rect2[2] - rect2[0]) * (rect2[3] - rect2[1])
    union = aire1 + aire2 - intersection
    
    return intersection / union

def associer_identites_visages(visages_precedents, visages_actuels, seuil_iou=0.5):
    correspondances = []
    for id_actuel, bbox_actuelle in enumerate(visages_actuels):
        meilleur_score = 0.0
        id_precedent_optimal = -1
        
        for id_prec, bbox_precedente in enumerate(visages_precedents):
            score_iou = calculer_iou(bbox_actuelle, bbox_precedente)
            if score_iou > meilleur_score and score_iou > seuil_iou:
                meilleur_score = score_iou
                id_precedent_optimal = id_prec
                
        if id_precedent_optimal != -1:
            correspondances.append((id_precedent_optimal, id_actuel))
            
    return correspondances

Synchronisation Audio-Vocale et Génération de Sous-titres

En parallèle, un module de Détection d'Activité Vocale (VAD) isole les segments de parole du bruit ambiant. En croisant les données temporelles de la VAD avec les coordonnées spatiales et l'orientatino des visages détectés par DamoFD, le système détermine quel identifiant visuel correspond au locuteur actif. Le flux audio est ensuite envoyé à un moteur de transcription automatique.

Le résultat final est une transcription structurée, annotée avec des horodatages et les identifiants des participants, facilitant grandement la génération de comptes-rendus automatisés :

[10:05:23] [Identifiant_A]: L'optimisation de l'expérience utilisateur doit être notre priorité.
[10:07:15] [Identifiant_B]: Je propose d'envoyer l'ébauche technique après la séance.

Extensions et Cas d'Usage Avancés

Cette fusion de données visuelles et auditives dépasse le cadre des réunions d'entreprise. Dans l'éducation en ligne, elle permet d'analyser l'engagement des étudiants. Pour le contrôle qualité des centres d'appels, elle aide à segmenter les interactions entre agents et clients. Les défis persistants, tels que les conditions de faible luminosité ou les voix simultanées, peuvent être atténués en intégrant des réseaux de neurones plus robustes et des algorithmes de séparation de sources audio avancés.

Étiquettes: DamoFD ModelScope Speaker-Diarization Multimodal-Fusion Computer-Vision

Publié le 4 juillet à 23h10