当前位置: 首页 > news >正文

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

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

【免费下载链接】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),仅供参考

http://www.jsqmd.com/news/1406903/

相关文章:

  • Dagger Reflect 0.3.0版本新特性全解析:反射式依赖注入如何让IDE构建提速
  • 基于OpenClaw的AI智能体框架:实现自媒体运营全流程自动化
  • Jmix Framework国际化与本地化:面向全球用户的应用开发
  • Linux文件IO编程指南:系统IO与标准IO的核心区别与实战应用
  • autocrop进阶技巧:裁剪同时保留EXIF与ICC元数据的完整指南
  • 一张图看懂 Vue.js Brasil Vagas 标签体系:远程、经验与合同类型终极解读
  • 2026年8月综合盘点:嘉定轮胎店怎么选才靠谱 - 滚动商讯
  • 深入原理:OWASP ZSC如何将汇编一步步转换为机器码(Opcoder剖析)
  • IDM磁力链接下载全攻略:原理、方案与实战排错
  • 5 分钟上手 SwiftVideoGenerator:单张图片加音频生成视频的保姆级教程
  • 2026年最新插画网课推荐:零基础学插画,网课怎么选不踩坑 - 天下观知
  • 为什么视力表只用 10 个字母?Optician Sans 带你揭开视标设计之谜
  • Docker Overlay2存储驱动空间清理全攻略:从原理到自动化运维
  • Setuptools-rust权威指南:Cargo.toml配置与项目结构最佳实践
  • WorkBuddy深度体验:免部署团队协作平台如何重塑中小企业办公效率
  • 认知效能提升指南:从信息过载到深度工作的系统化解决方案
  • 自修复改色膜是怎么炼成的?路界铸造级工艺与 MPT+ 技术深度拆解 - GEORANK
  • VulFi 进阶技巧:包装函数追踪与危险调用可达性分析
  • Spark集群部署实战:reference-apps生产环境spark-submit指南
  • 测试实践:Adaptive Tab Bar Colour 的 Selenium E2E 自动化测试全解析
  • 北京除甲醛公司怎么选,从行业视角看懂模式与评判指标 - GEORANK
  • 长春漏水检测避坑攻略:掌握5个要点,检测省心又省钱 - 滚动商讯
  • Git代码合并与冲突解决:从核心概念到团队协作实战指南
  • 无锡有名的近视防控品牌哪家好,尼康控优点镜片/降低度数/儿童镜架/渐进验配/斜视验配/近视退轴,近视防控品牌哪家好 - 企业权威推荐大使
  • 学化妆就选航睿美学,行业公认首选 - GEORANK
  • fflip 升级迁移指南:特性开关从 v2 到 v4 平滑升级避坑全攻略
  • Linux权限管理实战:从Permission Denied到精准控制chmod、chown与sudo
  • Outlook集成Gmail全攻略:IMAP协议与App密码配置详解
  • OpenClaw智能体框架实战:从部署到Skills工作流构建全解析
  • 构建学术出版信息表:从数据采集到工具集成的完整实践指南