Ce référentiel contient du code pour le document des modèles de traitement de la parole pré-formés contiennent des biais de type humain qui se propagent à la reconnaissance des émotions de la parole , qui apparaît dans les résultats de l'EMNLP 2023. Veuillez créer un problème et tag moi (@isaaconline) si vous avez des questions.
Les packages Python nécessaires pour exécuter la majorité du code dans ce dépôt sont répertoriés dans mac_env.yml
et unix_env.yml
, qui spécifient les environnements que nous avons utilisés pour exécuter des expériences sur les machines Mac ou Ubuntu, respectivement. Lorsque les données de prétraitement avec correspondance de score de propension, nous avons utilisé psmpy
, et en raison des conflits de package, nous avons créé un environnement séparé ( psmpy_env.yml
) à cet effet exclusivement.
Les données utilisées pour ce projet proviennent de diverses sources, dont la plupart nous ne sommes pas en mesure de redistribuer. Nous avons inclus des informations sur les fichiers dans notre répertoire de données (par exemple, les noms de clips spécifiques que nous avons utilisés). Les liens vers les ensembles de données sont ci-dessous.
audio_iats/mitchell_et_al
proviennent du document Le biais de désirabilité sociale est-il favorable aux humains? Les évaluations explicites - implicites de la parole synthétisée soutiennent un nouveau modèle HCI de gestion des impressionsaudio_iats/pantos_perkins
proviennent du papier mesurant des attitudes implicites et explicites envers le discours accentué étrangeraudio_iats/romero_rivas_et_al
proviennent de l' accentisme papier lors de l'essai: catégorisation / stéréotypes et biais implicites prédisent des phrases plus sévères pour les défendeurs accentués à l'étrangerCORAAL
proviennent du corpus de la langue afro-américaine régionale que nous avons utilisé tous les composants de Coraal enregistrés après 2000 et disponibles en octobre 2022.EU_Emotion_Stimulus_Set
proviennent de l'ensemble de stimulus UE-Emotion: une étude de validationMESS
proviennent de l'article des notes catégoriques et dimensionnelles de la parole émotionnelle: résultats comportementaux de l'ensemble de discours émotionnel de Morganspeech_accent_archive
peuvent être téléchargées à l'aide du fichier downloading/download_saa.py
TORGO
proviennent de la base de données de Torgo de la parole acoustique et articulatoire de locuteurs atteints de dysarthrieUASpeech
proviennent de la base de données de la parole dysarthrique pour la recherche d'accès universelbuckeye
proviennent du corpus Buckeye Après avoir acquis ces ensembles de données et leur placer dans le répertoire data
, vous devrez exécuter les scripts dans le répertoire preprocessing
. Ces scripts nettoieront les ensembles de données et créeront les métadonnées nécessaires qui seront utilisées pour extraire des intégres plus tard. Les scripts preprocessing/process_buckeye.py
et preprocessing/process_coraal.py
doivent être exécutés avant preprocessing/match_buckeye_coraal.py
, mais à part cela, les scripts n'ont pas besoin d'être exécutés dans un ordre particulier. Certains de ces scripts devront être exécutés en utilisant l'environnement que vous créez avec psmpy_env.yml
.
Si vous souhaitez extraire des intégres pour un nouvel ensemble de données, vous devrez créer un fichier all.tsv
, dont des exemples peuvent être vus dans le répertoire de données. Ce fichier contient un en-tête répertoriant le répertoire où les fichiers WAV pour l'ensemble de données peuvent être fondés, suivis par des chemins relatifs aux fichiers WAV dans l'ensemble de données à partir de ce répertoire. Chaque fichier WAV devra être accompagné de sa longueur de séquence. Vous pouvez utiliser les fonctions dans downloading_utils.py
pour trouver cette longueur de séquence, ainsi que pour s'assurer que les clips audio ont un nombre uniforme de canaux.
Nous utilisons des modèles des familles de modèles Hubert, WAV2VEC 2.0, WAVLM et Whisper. Pour télécharger les points de contrôle Hubert et Wavlm pertinents, vous pourrez peut-être utiliser le fichier downloading/download_model_ckpts.py
(selon que les liens que nous avons utilisés fonctionnent toujours). Ce fichier utilise des URL définies dans downloading/urls.py
qui peut devoir être mise à jour à l'avenir. Au cours de la publication, les modèles WAV2VEC 2.0 que nous avons utilisés sont disponibles ici. Nous utilisons la Wav2Vec 2.0 Base—No finetuning
, Wav2Vec 2.0 Large—No finetuning
et Wav2Vec 2.0 Large (LV-60)—No finetuning
. Les modèles Whisper seront automatiquement téléchargés lors de l'extraction des intégres.
Les scripts pour extraire des intégres sont disponibles dans le répertoire embedding_extraction
( extract_whisper.py
, hubert.py
, wav2vec2.py
et wavlm.py
). Si vous souhaitez extraire des intégres pour un nouvel ensemble de données, vous pouvez ajouter l'ensemble de données à ces fichiers. L'intégration de l'extraction était généralement la partie la plus longue de la gestion de ce projet. Lors de l'extraction d'incorporation pour chuchoter, vous devrez vous assurer que vous utilisez la branche extract-embeddings
de ma fourche Whisper.
Une fois que les intérêts ont été extraits, vous pouvez exécuter les scripts dans plots/eats
pour effectuer les tests d'association d'intégration. Ceux-ci économiseront les valeurs S SPEAT D S et P vers les résultats dans les fichiers dans plots/eats/test_results
(les fichiers de résultats de nos expériences y sont actuellement stockés). Un script utilisé pour la création de certains parcelles du papier est disponible sur plots/eats/plot_all_results.py
. Pour estimer l'erreur standard du SPEAT D S, il existe des scripts dans plots/standard_error
. Les résultats de notre estimation d'erreur standard se trouvent dans plots/standard_error/all_mean_mean_results.csv
. Pour former des modèles SER en aval, vous pouvez utiliser le fichier embedding_extraction/train_emotion_model.py
. Les poids des modèles SER que nous avons formés sont dans dimension_models/model_objects
. Vous pouvez les utiliser pour prédire la valence dans les ensembles de données d'entrée à l'aide de embedding_extraction/predict_valence.py
.