三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

语音情感识别自定义数据集:手把手教你扩充专属语音情感样本

语音情感识别自定义数据集:手把手教你扩充专属语音情感样本

语音情感识别自定义数据集:手把手教你扩充专属语音情感样本

【免费下载链接】emotion-recognition-using-speechBuilding and training Speech Emotion Recognizer that predicts human emotions using Python, Sci-kit learn and Keras项目地址: https://gitcode.com/gh_mirrors/em/emotion-recognition-using-speech

emotion-recognition-using-speech是一个基于 Python、Sci-kit learn 与 Keras 构建的语音情感识别(Speech Emotion Recognition)开源项目,它能够从人声片段中自动识别出愤怒、开心、悲伤、中性等人类情绪。很多新手在跑通官方示例后都会遇到同一个痛点:内置数据集不够用、模型不认识"我"的声音。本文就手把手带你为这个语音情感识别项目扩充自定义数据集,用你自己的录音训练专属情感模型。

为什么需要扩充语音情感识别自定义数据集?

公开数据集(如 RAVDESS、TESS、EMO-DB)虽然质量高,但都是专业演员在安静环境下的录音。实际应用场景中:

  • 🎤 麦克风音质、距离、环境噪声差异大
  • 🗣️ 不同口音、语速、音色会影响特征分布
  • 📉 少数情绪类别样本不足,模型容易"偏科"

好在项目原生支持data/train-custom(训练)和data/test-custom(测试)两个自定义目录,你只需把录音放进去,即可与内置数据集一起参与训练。

扩充语音情感样本前的准备工作

第一步:获取项目与安装依赖

git clone https://gitcode.com/gh_mirrors/em/emotion-recognition-using-speech cd emotion-recognition-using-speech pip3 install -r requirements.txt

核心依赖包括tensorflowlibrosascikit-learnsoundfile等,同时请确保系统已安装ffmpeg(音频格式转换工具,必须加入 PATH)。

第二步:准备你的录音文件

录音没有严格格式限制,但强烈建议:

  • 单句完整语音,时长 1~5 秒为宜
  • 环境尽量安静,情绪表达要清晰
  • 同一情绪可多录几份,样本越丰富越好

自定义数据集音频格式转换最快方法

项目对音频有两个硬性要求:16000Hz 采样率 + 单声道。好在项目提供了现成脚本 convert_wavs.py,其核心方法convert_audio()内部调用 ffmpeg 一键完成转换。

# 批量转换整个文件夹 python convert_wavs.py 你的录音文件夹 data/train-custom -r # 转换单个文件 python convert_wavs.py my_voice.wav data/train-custom/my_voice_happy.wav

转换后请务必检查文件是否出现在data/train-custom目录中。

自定义数据集文件命名规则(最容易踩坑的地方)

项目通过文件名后缀自动识别情绪标签,这是整个流程的命门!格式为任意名称_情绪英文名.wav,例如:

  • 20240616_125714_happy.wav→ happy
  • my_voice_neutral.wav→ neutral
  • zaki1_angry.wav→ angry

项目共支持 9 种情绪标签(定义在 utils.py 的AVAILABLE_EMOTIONS中):neutralcalmhappysadangryfeardisgustps(pleasant surprise 惊喜)、boredom

⚠️注意:文件名若不含_情绪名后缀,脚本会直接忽略该文件;情绪名拼写错误也会导致样本无法被读取。

自动生成自定义数据集描述文件

特征提取依赖 CSV 描述文件记录每个音频的路径与标签。项目提供了 create_csv.py 中的write_custom_csv()函数,它会自动扫描data/train-custom/*_happy.wav这类文件并生成train_custom.csvtest_custom.csv

当你实例化 emotion_recognition.py 中的EmotionRecognizer类时,CSV 会被自动生成,无需手动干预:

from emotion_recognition import EmotionRecognizer from sklearn.svm import SVC rec = EmotionRecognizer(model=SVC(), emotions=['sad', 'neutral', 'happy'], balance=True, verbose=0) rec.train() print("Test score:", rec.test_score())

训练你的专属语音情感识别模型

完成上述步骤后,模型训练会自动融合三路数据源:TESS&RAVDESS、EMO-DB 与你的自定义数据集。若只想用自定义数据训练,可关闭其他数据源:

rec = EmotionRecognizer(emotions=['sad', 'neutral', 'happy'], tess_ravdess=False, emodb=False, custom_db=True, balance=False, verbose=1)

训练完成后,用你自己的录音测试效果:

print("Prediction:", rec.predict("data/test-custom/zaki1_happy.wav"))

若音频格式不符,predict()会自动调用 ffmpeg 转换,非常省心。

扩充语音情感样本的进阶技巧

  • 平衡样本数量balance=True会自动将各类别样本对齐到最少类别数量,避免类别不均衡,但也会丢弃多余样本,建议每类录音数量尽量接近。
  • 实时测试语音:运行python test.py可打开麦克风,说话停顿后模型自动输出识别情绪,用-e参数可指定情绪集合。
  • 特征工程:默认提取 MFCC、Chroma、MEL 三种特征(见 data_extractor.py),特征提取结果会缓存到features/目录的 .npy 文件中,新增样本后删除旧缓存可强制重新提取。

总结

为 emotion-recognition-using-speech 扩充语音情感识别自定义数据集只需四步:录音 → ffmpeg 转 16000Hz 单声道 → 按名字_情绪.wav命名 → 放入 train-custom/test-custom 目录。之后项目会自动生成 CSV 描述文件并参与训练。从零到拥有"认识你声音"的情感模型,就是这么快!快来录制你的第一批专属语音情感样本吧~

【免费下载链接】emotion-recognition-using-speechBuilding and training Speech Emotion Recognizer that predicts human emotions using Python, Sci-kit learn and Keras项目地址: https://gitcode.com/gh_mirrors/em/emotion-recognition-using-speech

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表