L'action `computeFeatures` du jeu d'actions `audio` est utilisée pour calculer diverses caractéristiques acoustiques à partir de fichiers audio préalablement chargés dans une table CAS. Cette action est fondamentale dans le traitement du signal audio pour le machine learning, car elle transforme les données audio brutes en représentations numériques (vecteurs de caractéristiques) qui peuvent être utilisées pour entraîner des modèles. Elle supporte des types de caractéristiques standards comme les MFCC (Mel-Frequency Cepstral Coefficients) et les FBANK (Filter Bank), qui sont essentiels pour des tâches telles que la reconnaissance vocale ou l'analyse de sons.
| Paramètre | Description |
|---|---|
| audioColumn | Spécifie le nom de la colonne dans la table d'entrée qui contient les données audio. |
| casOut | Spécifie les paramètres pour la table de sortie. Cette table contiendra les caractéristiques calculées. |
| copyVars | Spécifie une liste de variables à transférer de la table d'entrée vers la table de sortie. |
| fbankOptions | Spécifie les paramètres pour le calcul des caractéristiques FBANK (Filter Bank). |
| featureScalingMethod | Spécifie la méthode de mise à l'échelle à appliquer aux vecteurs de caractéristiques calculés (par exemple, NONE ou STANDARDIZATION). |
| frameExtractionOptions | Spécifie les paramètres pour déterminer comment diviser le fichier audio en trames (frames). |
| melBanksOptions | Spécifie les paramètres pour déterminer les bancs de filtres Mel. |
| mfccOptions | Spécifie les paramètres pour déterminer comment effectuer les calculs des caractéristiques MFCC. |
| nContextFrames | Spécifie le nombre de trames de contexte à ajouter avant et après la trame audio actuelle. |
| nOutputFrames | Spécifie le nombre exact de trames à inclure dans la table de sortie. Les trames supplémentaires sont supprimées et les trames manquantes sont complétées par des zéros. |
| table | Spécifie la table CAS d'entrée qui contient les données audio à traiter. |
Avant de calculer les caractéristiques, les fichiers audio doivent être chargés dans une table CAS. L'action `loadAudio` est utilisée à cet effet. Elle lit les fichiers audio à partir d'un chemin accessible par le serveur CAS (caslib) et les charge dans une table en mémoire.
| 1 | PROC CAS; |
| 2 | audio.loadAudio / |
| 3 | caslib="casuser", |
| 4 | path="path/to/your/audio/files/", |
| 5 | casOut={name="audio_table", replace=true}; |
| 6 | RUN; |
Cet exemple calcule les caractéristiques MFCC (coefficients cepstraux sur l'échelle de Mel) pour chaque fichier audio dans la table `audio_table`. Les caractéristiques sont stockées dans une nouvelle table nommée `audio_features`.
| 1 | PROC CAS; |
| 2 | audio.computeFeatures / |
| 3 | TABLE={name='audio_table'}, |
| 4 | audioColumn='_audio_', |
| 5 | copyVars={'_path_'}, |
| 6 | casOut={name='audio_features', replace=true}; |
| 7 | RUN; |
Cet exemple calcule les caractéristiques FBANK (banc de filtres) en personnalisant plusieurs options. Il ajuste la longueur et le décalage des trames, utilise une fenêtre de Hamming, et configure les bancs de filtres Mel avec 40 bandes entre 0 Hz et 8000 Hz. De plus, une mise à l'échelle par standardisation est appliquée aux caractéristiques.
| 1 | PROC CAS; |
| 2 | audio.computeFeatures / |
| 3 | TABLE={name='audio_table'}, |
| 4 | audioColumn='_audio_', |
| 5 | copyVars={'_path_', '_id_'}, |
| 6 | frameExtractionOptions={frameLength=20, frameShift=10, windowType='HAMMING'}, |
| 7 | melBanksOptions={nBins=40, lowFreq=0, highFreq=8000}, |
| 8 | fbankOptions={useEnergy=true, useLogFbank=true}, |
| 9 | featureScalingMethod='STANDARDIZATION', |
| 10 | casOut={name='fbank_features', replace=true}; |
| 11 | RUN; |
Cet exemple calcule les caractéristiques MFCC en incluant 5 trames de contexte avant et après chaque trame. Il garantit également que chaque sortie audio a exactement 300 trames, en tronquant ou en complétant avec des zéros si nécessaire. Ceci est utile pour les modèles qui nécessitent une entrée de taille fixe.
| 1 | PROC CAS; |
| 2 | audio.computeFeatures / |
| 3 | TABLE={name='audio_table'}, |
| 4 | audioColumn='_audio_', |
| 5 | copyVars={'_path_', 'label'}, |
| 6 | mfccOptions={nCeps=20, useEnergy=true}, |
| 7 | nContextFrames=5, |
| 8 | nOutputFrames=300, |
| 9 | casOut={name='mfcc_context_features', replace=true}; |
| 10 | RUN; |
Une banque souhaite analyser les appels de son service client pour détecter l'insatisfaction. Les fichiers audio bruts doivent être transformés en coefficients MFCC pour aliment...
Une usine utilise des milliers de capteurs acoustiques pour surveiller les vibrations des machines. Le flux de données est massif. Pour entraîner un modèle de maintenance prédic...
Un projet de numérisation d'archives audio historiques rencontre des fichiers de qualité variable (très courts, bruités). Le but est d'extraire des features 'Filter Bank' (FBANK...