该存储库包含论文预训练的语音处理模型的代码,其中包含类似人类的偏见,这些偏见传播到语音情感识别中,如果您有任何疑问,请在EMNLP 2023的发现中出现。
在mac_env.yml和unix_env.yml中列出了运行大多数代码所需的Python软件包,该软件包分别指定了我们在Mac或Ubuntu Machines上运行实验的环境。当使用倾向分数匹配的数据预处理数据时,我们使用了psmpy ,并且由于包装冲突,创建了一个单独的环境( psmpy_env.yml ),以实现该目的。
该项目使用的数据来自各种来源,其中大多数我们无法重新分发。我们已经在数据目录中包含了有关文件的信息(例如我们使用的特定剪辑的名称)。数据集的链接如下。
audio_iats/mitchell_et_al中的数据来自本文社会可取性偏见是否有利于人类?综合语音的明确 - 简化评估支持一种新的HCI印象管理模型audio_iats/pantos_perkins中的数据来自纸张,测量对外国重音语音的隐性和明确的态度audio_iats/romero_rivas_et_al中的数据来自试验的纸质口音:分类/刻板印象和隐式偏见预测外国人的被告人更严厉CORAAL的数据来自非裔美国人语言的语料库,我们使用了所有Coraal成分,这些成分是在2000年以后记录的,并于2022年10月上市。EU_Emotion_Stimulus_Set中的数据来自欧盟 - 情感刺激集:验证研究MESS中的数据来自情感语音的分类和维度评分:摩根情感语音的行为发现downloading/download_saa.py下载speech_accent_archive中的数据TORGO的数据来自带有构想障碍的演讲者的声学和发音演讲的Torgo数据库UASpeech中的数据来自用于通用访问研究的违规语音数据库buckeye的数据来自七叶树语料库在获取这些数据集并将其放置在data目录中后,您将需要在preprocessing目录中运行脚本。这些脚本将清理数据集并创建必要的元数据,以稍后提取嵌入。需要在preprocessing/process_buckeye.py脚本之前运行预处理/process_buckeye.py和preprocessing/process_coraal.py脚本,然后preprocessing/match_buckeye_coraal.py ,但是除此之外,不需要以特定顺序运行脚本。其中一些脚本需要使用您使用psmpy_env.yml创建的环境来运行。
如果您想为新数据集提取嵌入式,则需要创建一个all.tsv文件,可以在数据目录中看到其示例。该文件包含一个标题列出了目录,其中可以建立数据集的WAV文件,然后从该目录中使用数据集中的WAV文件的相对路径。每个WAV文件都需要伴随其序列长度。您可以在downloading_utils.py中使用这些函数来找到此序列长度,并确保音频剪辑具有统一数量的频道。
我们使用Hubert,WAV2VEC 2.0,WAVLM和耳语模型系列的模型。要下载相关的Hubert和Wavlm检查点,您可以使用文件downloading/download_model_ckpts.py (取决于我们使用的链接是否仍在工作)。该文件使用downloading/urls.py中定义的URL,将来可能需要更新。截至出版时,我们使用的WAV2VEC 2.0型号在此处可用。我们使用Wav2Vec 2.0 Base—No finetuning , Wav2Vec 2.0 Large—No finetuning ,而Wav2Vec 2.0 Large (LV-60)—No finetuning检查点。提取嵌入时,耳语型号将自动下载。
用于提取嵌入的脚本可在embedding_extraction目录中可用( extract_whisper.py , hubert.py , wav2vec2.py和wavlm.py )。如果要为新数据集提取嵌入式,则可以将数据集添加到这些文件中。嵌入提取通常是运行该项目的最耗时的一部分。在提取耳语时,您需要确保使用我的耳语叉的extract-embeddings分支。
提取嵌入后,您可以在plots/eats中运行脚本以进行嵌入关联测试。这些将把斑点的d s和p值保存到plots/eats/test_results中的结果(我们实验中的结果文件当前存储在那里)。用于创建论文中某些图的脚本可在plots/eats/plot_all_results.py上获得。为了估计晶状体的标准误差, plots/standard_error中的脚本。我们的标准误差估计的结果是在plots/standard_error/all_mean_mean_results.csv中。要训练下游SER模型,您可以使用文件embedding_extraction/train_emotion_model.py 。我们训练的SER模型的权重为dimension_models/model_objects 。您可以使用它们使用embedding_extraction/predict_valence.py来预测输入数据集中的价。