langModel

identifySpeakers

##set_langmodel

Description

L'action `identifySpeakers` du jeu d'actions `langModel` permet d'identifier les différents locuteurs (diarisation) présents dans un fichier audio. C'est l'outil idéal pour savoir 'qui parle et quand' dans vos enregistrements, avec une touche de magie (et beaucoup de mathématiques). Pratique pour analyser des réunions ou des appels clients ! Vous pouvez consulter la documentation officielle sur les %%table pour plus de détails.

Syntaxe Officielle
proc cas;
langModel.identifySpeakers /
table={name="nom_table_entree"}
model={model={name="nom_modele"}, weights={name="poids_modele"}, attributes={name="attributs_modele"}, gpu={devices={0}}}
casOut={name="nom_table_sortie", replace=True}
minSpeakers=1
maxSpeakers=5
scope="ROW"
seed=12345;
run;
quit;

Paramètres Clés

Nom du paramètre Description
casOut Spécifie la table de sortie CAS qui contiendra les identifiants des locuteurs détectés.
maxSpeakers Spécifie le nombre maximum de locuteurs à identifier dans l'audio (Défaut: 200, Limite: 1-200).
minSpeakers Spécifie le nombre minimum de locuteurs à identifier dans l'audio (Défaut: 1, Limite: 1-200).
model Spécifie les paramètres à appliquer au modèle, incluant la table du modèle de diarisation (`model`), ses poids (`weights`), ses attributs (`attributes`) et éventuellement les options GPU (`gpu`).
scope Identifie les locuteurs soit pour chaque ligne (`ROW`) soit pour la table entière (`TABLE`). Le défaut est `ROW`.
seed Graine aléatoire pour l'initialisation de l'algorithme (Défaut: 0).
table Spécifie la table CAS contenant les données audio en entrée.

Préparation des données

Chargement des données audio et des modèles

Avant d'identifier les locuteurs, il faut charger l'audio en mémoire CAS et s'assurer que les modèles de langage sont bien présents. L'audio doit être traité préalablement (par ex. via `loadAudio` ou `audio.loadAudio`).

1PROC CAS;
2 /* Chargement d'un fichier audio d'exemple */
3 audio.loadAudio / casOut={name="audio_data", replace=true} caslib="casuser" path="reunion.wav";
4RUN;
5QUIT;

Exemples d'utilisation

Identification basique des locuteurs

Cet exemple montre comment exécuter la diarisation sur une table audio avec les paramètres par défaut, en limitant la recherche à 2 locuteurs maximum.

1PROC CAS;
2 langModel.identifySpeakers /
3 TABLE={name="audio_data"}
4 model={model={name="speaker_model"}, weights={name="speaker_weights"}, attributes={name="speaker_attributes"}}
5 casOut={name="speakers_out", replace=True}
6 minSpeakers=1
7 maxSpeakers=2;
8RUN;
9QUIT;
Résultat Attendu :
Une table CAS nommée `speakers_out` est créée, contenant les segments temporels et l'ID du locuteur associé pour chaque fichier audio.
Identification avancée avec GPU et options de périmètre

Pour les gros volumes de données, l'utilisation d'un processeur graphique (GPU) est fortement recommandée pour ne pas y passer la nuit. Ici, nous identifions jusqu'à 5 locuteurs sur la table entière en forçant l'utilisation du GPU 0.

1PROC CAS;
2 langModel.identifySpeakers /
3 TABLE={name="audio_data", caslib="casuser"}
4 model={model={name="speaker_model", caslib="public"}, weights={name="speaker_weights", caslib="public"}, attributes={name="speaker_attributes", caslib="public"}, gpu={devices={0}}}
5 casOut={name="speakers_detailed_out", caslib="casuser", replace=True}
6 minSpeakers=2
7 maxSpeakers=5
8 scope="TABLE"
9 seed=42;
10RUN;
11QUIT;
Résultat Attendu :
Une table CAS détaillée `speakers_detailed_out` est générée très rapidement grâce au GPU, identifiant globalement de 2 à 5 locuteurs sur l'ensemble du corpus audio de la table.