Este repositorio contiene código para los modelos de procesamiento de voz pretratados en papel contiene sesgos similares a los humanos que se propagan al reconocimiento de emociones del habla , que aparece en los resultados de EMNLP 2023. Cree un problema y etiqueteme (@isaaconline) si tiene alguna pregunta.
Los paquetes de Python necesarios para ejecutar la mayoría del código en este repositorio se enumeran en mac_env.yml
y unix_env.yml
, que especifican los entornos que utilizamos para ejecutar experimentos en máquinas Mac o Ubuntu, respectivamente. Al preprocesar datos con coincidencia de puntaje de propensión, utilizamos psmpy
, y debido a conflictos de paquetes, creamos un entorno separado ( psmpy_env.yml
) para exclusivamente ese propósito.
Los datos utilizados para este proyecto provienen de una variedad de fuentes, la mayoría de las cuales no podemos redistribuir. Hemos incluido información sobre los archivos en nuestro directorio de datos (por ejemplo, los nombres de clips específicos que utilizamos). Los enlaces a los conjuntos de datos están a continuación.
audio_iats/mitchell_et_al
provienen del documento ¿El sesgo de deseabilidad social favorece a los humanos? Evaluaciones explícitas -implícitas de soporte del habla sintetizada Un nuevo modelo HCI de gestión de impresionesaudio_iats/pantos_perkins
provienen del documento que mide las actitudes implícitas y explícitas hacia el habla acentuada extranjeraaudio_iats/romero_rivas_et_al
provienen del acentismo en papel en el juicio: categorización/estereotipos y sesgos implícitos predicen oraciones más duras para acusados de acento extranjeroCORAAL
provienen del corpus del idioma afroamericano regional que utilizamos todos los componentes de Coraal que se registraron después del año 2000 y estaban disponibles en octubre de 2022.EU_Emotion_Stimulus_Set
provienen del conjunto de estímulos de la emoción de la UE: un estudio de validaciónMESS
provienen del documento clasificaciones categóricas y dimensionales del habla emocional: hallazgos del comportamiento del conjunto de discursos emocionales de Morganspeech_accent_archive
se pueden descargar utilizando el archivo downloading/download_saa.py
TORGO
provienen de la base de datos de Torgo de discurso acústico y articulatorio de oradores con disartriaUASpeech
provienen de una base de datos de discurso diséndica para la investigación de acceso universalbuckeye
provienen del corpus de Buckeye Después de adquirir estos conjuntos de datos y colocarlos en el directorio data
, deberá ejecutar los scripts en el directorio preprocessing
. Estos scripts limpiarán los conjuntos de datos y crearán metadatos necesarios que se utilizarán para extraer incrustaciones más adelante. El preprocessing/process_buckeye.py
y preprocessing/process_coraal.py
se deben ejecutar antes de preprocessing/match_buckeye_coraal.py
, pero aparte de esto, los scripts no necesitan ejecutarse en un orden particular. Algunos de estos scripts deberán ejecutarse utilizando el entorno que cree con psmpy_env.yml
.
Si desea extraer incrustaciones para un nuevo conjunto de datos, deberá crear un archivo all.tsv
, cuyos ejemplos se pueden ver en el directorio de datos. Este archivo contiene un encabezado que enumera el directorio donde se pueden fundar archivos WAV para el conjunto de datos, seguido de rutas relativas a archivos WAV en el conjunto de datos desde este directorio. Cada archivo WAV deberá ir acompañado de su longitud de secuencia. Puede usar las funciones en downloading_utils.py
para encontrar esta longitud de secuencia, así como para garantizar que los clips de audio tengan un número uniforme de canales.
Utilizamos modelos de las familias de modelos Hubert, WAV2VEC 2.0, WAVLM y Whisper. Para descargar los puntos de control relevantes de Hubert y Wavlm, es posible que pueda usar el archivo downloading/download_model_ckpts.py
(dependiendo de si los enlaces que usamos todavía están funcionando). Este archivo utiliza URL definidas en downloading/urls.py
que es posible que deba actualizarse en el futuro. A partir de la publicación, los modelos WAV2VEC 2.0 que utilizamos están disponibles aquí. Utilizamos la Wav2Vec 2.0 Base—No finetuning
, Wav2Vec 2.0 Large—No finetuning
, y Wav2Vec 2.0 Large (LV-60)—No finetuning
. Los modelos Whisper se descargarán automáticamente al extraer incrustaciones.
Los scripts para extraer incrustaciones están disponibles en el directorio embedding_extraction
( extract_whisper.py
, hubert.py
, wav2vec2.py
y wavlm.py
). Si desea extraer incrustaciones para un nuevo conjunto de datos, puede agregar el conjunto de datos a estos archivos. La extracción de incrustación fue generalmente la parte más lento de ejecutar este proyecto. Al extraer incrustaciones para Whisper, deberá asegurarse de usar la rama de extract-embeddings
de mi bifurcación Whisper.
Una vez que se han extraído incrustaciones, puede ejecutar los scripts en plots/eats
para realizar las pruebas de asociación de incrustación. Estos guardarán los valores D S y P en los resultados en los archivos en plots/eats/test_results
(los archivos de resultados de nuestros experimentos se almacenan actualmente allí). Un script utilizado para crear algunas de las parcelas en el papel está disponible en plots/eats/plot_all_results.py
. Para estimar el error estándar de la pizca D S, hay scripts en plots/standard_error
. Los resultados de nuestra estimación de error estándar están en plots/standard_error/all_mean_mean_results.csv
. Para entrenar modelos SER aguas abajo, puede usar el archivo embedding_extraction/train_emotion_model.py
. Los pesos de los modelos SER que entrenamos están en dimension_models/model_objects
. Puede usarlos para predecir la valencia en los conjuntos de datos de entrada utilizando embedding_extraction/predict_valence.py
.