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

语音指令分类模型训练(基于机器学习方法)

1、统计音频长度信息便于后续参数的设定import os import librosa import numpy as np # 配置参数 DATA_PATH data4c # 数据集根目录 FIXED_SAMPLE_RATE 16000 def stat_audio_lengths(): # 存储所有音频的长度采样点数和时长秒 all_lengths [] all_durations [] # 遍历所有类别文件夹 labels os.listdir(DATA_PATH) for label in labels: label_path os.path.join(DATA_PATH, label) if not os.path.isdir(label_path): continue # 遍历文件夹下所有音频文件 for fname in os.listdir(label_path): fpath os.path.join(label_path, fname) try: # 读取音频 y, sr librosa.load(fpath, srFIXED_SAMPLE_RATE) length len(y) # 长度采样点数 duration length / sr # 时长秒 all_lengths.append(length) all_durations.append(duration) # 打印单个文件信息 print(f{fpath} - 采样点数: {length}, 时长: {duration:.2f}s) except Exception as e: print(f读取失败: {fpath} - {e}) # 计算统计指标 if all_lengths: print(f总文件数: {len(all_lengths)}) print( f采样点数 - 最大值: {np.max(all_lengths)}, 最小值: {np.min(all_lengths)}, 平均值: {np.mean(all_lengths):.0f}) print( f时长 - 最大值: {np.max(all_durations):.2f}s, 最小值: {np.min(all_durations):.2f}s, 平均值: {np.mean(all_durations):.2f}s) else: print(没有读取任何音频文件) # 运行统计 if __name__ __main__: stat_audio_lengths()2、加载数据集提取mfcc特征并特征对齐import os import librosa import numpy as np from sklearn.model_selection import train_test_split FIXED_SAMPLE_RATE 16000 # 统一采样率16000Hz语音标准 MAX_LEN 36000 # 采样点 N_MFCC 13 # 特征数,通常取13维 # 加载数据集(用于机器学习模型分类) # X_2d:(samples, n_mfcc_feature), y_1d:(samples,) def load_data4ml(data_pt): X, y [], [] labels os.listdir(data_pt) f open(result/label.txt, w) for label in labels: folder os.path.join(data_pt, label) f.write(str(label) label \n) for fname in os.listdir(folder): fpath os.path.join(folder, fname) # y音频时域信号 sr采样率 y_audio, sr librosa.load(fpath, srFIXED_SAMPLE_RATE) # 提取MFCC特征 mfccs librosa.feature.mfcc( yy_audio, srsr, n_mfccN_MFCC, # 提取13维MFCC n_fft512, # FFT窗长 hop_length256, # 帧移 n_mels 40 # 梅尔滤波器组数量 ) # 统一帧数,末尾补零 / 截断尾部 n_mfcc, current_frames mfccs.shape if current_frames MAX_LEN: # 过长: 截断尾部 mfccs_fixed mfccs[:, :MAX_LEN] else: # 过短: 在末尾补零 pad_length MAX_LEN - current_frames mfccs_fixed np.pad(mfccs, ((0, 0), (0, pad_length)), modeconstant) # 特征归一化(特征维度N_MFCC, 帧数MAX_LEN) mfcc (mfccs_fixed - np.mean(mfccs_fixed,axis1,keepdimsTrue))/(np.std(mfccs_fixed,axis1,keepdimsTrue)1e-8) # 一阶差分 二阶差分, 拼接成 39 维特征 delta_mfcc librosa.feature.delta(mfcc) delta2_mfcc librosa.feature.delta(mfcc, order2) mfcc_39d np.concatenate([mfcc, delta_mfcc, delta2_mfcc], axis0) feature mfcc_39d.flatten() # 2d特征--1d特征 X.append(feature) y.append(label) X np.array(X) y np.array(y) X_train, X_test, y_train, y_test train_test_split(X, y) print(训练样本及标签:,X_train.shape,y_train.shape) print(测试样本及标签:,X_test.shape,y_test.shape) return X_train, X_test, y_train, y_test3、使用机器学习算法训练语音分类模型import joblib from sklearn.svm import SVC from sklearn.neighbors import KNeighborsClassifier from sklearn.neural_network import MLPClassifier from read_data import load_data4ml def train(data_path): X_train, X_test, y_train, y_test load_data4ml(data_path) print(X_train.shape, X_test.shape, y_train.shape, y_test.shape) # 训练KNN模型,适合指令识别 # model KNeighborsClassifier(n_neighbors5) # 支持向量机 # model SVC() # 多层感知机 model MLPClassifier(hidden_layer_sizes(200,100),activationrelu) model.fit(X_train, y_train) # 测试准确率 acc model.score(X_test, y_test) print(f训练完成\n测试准确率{acc * 100:.2f}%) # 保存模型 if acc0.85: joblib.dump(model, result/mlp_model.pkl) print(模型已保存result/mlp_model.pkl) if __name__ __main__: train(data_pathdata4c)4、使用训练好的模型进行测试import joblib import librosa import numpy as np from read_data import FIXED_SAMPLE_RATE, MAX_LEN, N_MFCC def process_data(fpt): # y音频时域信号 sr采样率 y_audio, sr librosa.load(fpt, srFIXED_SAMPLE_RATE) # 提取MFCC特征 mfccs librosa.feature.mfcc( yy_audio, srsr, n_mfccN_MFCC, # 提取13维MFCC n_fft512, # FFT窗长 hop_length256, # 帧移 n_mels40 # 梅尔滤波器组数量 ) # 统一帧数,末尾补零 / 截断尾部 n_mfcc, current_frames mfccs.shape if current_frames MAX_LEN: mfccs_fixed mfccs[:, :MAX_LEN] else: pad_length MAX_LEN - current_frames mfccs_fixed np.pad(mfccs, ((0, 0), (0, pad_length)), modeconstant) # 特征归一化(特征维度N_MFCC, 帧数MAX_LEN) mfcc (mfccs_fixed - np.mean(mfccs_fixed, axis1, keepdimsTrue)) / ( np.std(mfccs_fixed, axis1, keepdimsTrue) 1e-8) # 一阶差分 二阶差分, 拼接成 39 维特征 delta_mfcc librosa.feature.delta(mfcc) delta2_mfcc librosa.feature.delta(mfcc, order2) mfcc_39d np.concatenate([mfcc, delta_mfcc, delta2_mfcc], axis0) feature mfcc_39d.flatten() # 2d特征--1d特征 X np.array([feature]) return X def predict(file): model joblib.load(result/mlp_model.pkl) X process_data(file) lb file.split(/)[-1].split(_)[0] pred model.predict(X) print(pred) flg 正确 if pred[0]lb else 错误 print(f识别{flg}\t真实标签:{lb}\t识别结果{pred[0]}\t) return pred[0] if __name__ __main__: # 测试样本 file test_data/3_1774506934932.wav predict(file)

相关文章:

语音指令分类模型训练(基于机器学习方法)

1、统计音频长度信息,便于后续参数的设定import os import librosa import numpy as np# 配置参数 DATA_PATH "data4c" # 数据集根目录 FIXED_SAMPLE_RATE 16000def stat_audio_lengths():# 存储所有音频的长度(采样点数)和时长…...

openclaw卸载与重装

openclaw卸载与重装#管理员权限打开powershell,并执行以下命令#卸载 pnpm 安装的版本 pnpm remove -g openclaw#清理 pnpm 全局存储 pnpm store prune#使用 npm 安装最新版 OpenClaw,加上国内镜像比较快 pnpm install -g openclawlatest --registryhttps…...

3分钟解决Android Studio英文界面困扰:中文语言包完整配置指南

3分钟解决Android Studio英文界面困扰:中文语言包完整配置指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为…...

006-分布式训练技术:DeepSeek的超大规模模型训练实践

006-分布式训练技术:DeepSeek的超大规模模型训练实践 那个凌晨三点半的OOM异常 上个月团队里新来的小伙子跑过来问我:“哥,我把batch_size调到32就OOM了,这卡可是80G显存啊!”我看了眼他的训练脚本,单卡训练,数据加载方式还是最原始的DataLoader。这场景太熟悉了——三…...

WorkshopDL完整指南:无需Steam客户端也能下载创意工坊模组的终极工具

WorkshopDL完整指南:无需Steam客户端也能下载创意工坊模组的终极工具 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games或GOG平台购买了游戏&#…...

别再傻傻分不清了!一文搞懂VoLTE、ViLTE、VoWiFi背后的IMS核心网(附保姆级信令流程图解)

从零理解IMS:VoLTE、ViLTE与VoWiFi的技术本质与实战图解 刚接触移动通信技术的工程师常被一堆以"Vo"开头的术语绕晕——VoLTE通话时突然弹出ViLTE选项,地铁里没信号却能用WiFi打电话,这些功能背后都离不开IMS核心网的支持。如果把移…...

百川2-13B模型在AIGC内容创作中的惊艳效果案例

百川2-13B模型在AIGC内容创作中的惊艳效果案例 最近我花了不少时间,把玩了一下百川智能的Baichuan2-13B模型。说实话,一开始我并没有抱太高的期望,毕竟现在大模型遍地开花,同质化也挺严重的。但当我真正用它来尝试各种AIGC内容创…...

AI Agent开发为什么这么火:供需关系深度剖析

“钱景”是肯定有的,重点是怎么拿到offer。现在这行正处于爆发期,月薪3-4w很常见,搞得好年薪80万往上都有可能,大量高薪酬待遇岗都在招,我们这种中小厂都能给到40w税后。 不用太纠结学历,AI Agent是最近一两…...

Translumo:打破语言障碍的终极屏幕实时翻译工具完整指南

Translumo:打破语言障碍的终极屏幕实时翻译工具完整指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否…...

Frameworks 常规问题关键定位

点击电源亮屏关键定位 亮屏电源按下流程 熄屏电源按下流程 熄屏电源按下流程 通知FW流程 通知打盹模式Snoozed(通知上滑,一段时间不会在出通知) 上滑进入打盹...

Janus-Pro-7B效果展示:游戏原画→生成多角度角色设定图+技能描述

Janus-Pro-7B效果展示:游戏原画→生成多角度角色设定图技能描述 重要提示:本文所有展示效果基于Janus-Pro-7B模型生成,实际效果可能因提示词、参数设置等因素有所差异 1. 模型能力概览 Janus-Pro-7B作为统一多模态理解与生成AI模型&#xff…...

Samba 文件共享服务器部署与权限配置(教师/学生多用户场景)

任务要求:1. 在 Linux 服务器上安装 Samba 服务,设置开机自启并正常运行。 2. 创建samba用户体系:- 教师用户 teacher- 学生用户组 student,包含若干学生账号(如 stu01、stu02)3. 禁止匿名访问,…...

3分钟搞定Windows和Office激活:智能KMS激活工具完整使用指南

3分钟搞定Windows和Office激活:智能KMS激活工具完整使用指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文档突然…...

基于EMD经验模态分解的数据分解方法 Matlab语言 1.不用工具箱,自带函数,无需调整分量个数自行出图,可用作信号分解等问题,也可用作对比方法。包括原始信号图、分解效果图、频谱图,~ 2.直接替换

基于EMD经验模态分解的数据分解方法 Matlab语言 1.不用工具箱,自带函数,无需调整分量个数自行出图,可用作信号分解等问题,也可用作对比方法。包括原始信号图、分解效果图、频谱图,~ 2.直接替换Excel数据即可…...

AlienFX Tools终极指南:500KB轻量级方案彻底取代AWCC

AlienFX Tools终极指南:500KB轻量级方案彻底取代AWCC 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 还在为Alienware Command Center的臃肿…...

从Tesla到Hopper:NVIDIA GPU架构演进与技术突破解析

1. 从Tesla到Hopper:NVIDIA GPU架构的演进脉络 2006年发布的Tesla架构是NVIDIA现代GPU的起点,它首次实现了统一着色器模型,彻底改变了图形处理的工作方式。我记得第一次接触G80核心的显卡时,最震撼的是它居然能用C语言直接编写GPU…...

广州团建策划公司推出洞穴探险团建,在神秘地下空间激发团队信任!

搏翱广州团建策划公司创新推出洞穴探险主题团建,为企业团队开启一场与自然对话的深度体验。作为专业的团队建设策划机构,我们始终致力于通过独特的体验式活动设计,帮助团队在特殊环境中突破常规思维,建立更深的信任连接。在专业探…...

Docker部署Java应用时,关于时区、镜像源和网络连接的3个必改配置

Docker部署Java应用的3个关键配置优化指南 在容器化部署Java应用的过程中,许多开发者往往只关注基础功能的实现,而忽略了一些看似微小却影响深远的配置细节。本文将深入探讨三个经常被忽视但至关重要的配置优化点,帮助你在生产环境中避免常见…...

Openclaw 经验分享 | 如何在Openclaw中配置多个独立的Agent

方案选择方案 A:单 Bot 多 Agent(本篇)一个飞书机器人(龙虾1号)私聊 → 使用 main Agent特定群组 → 使用 feishu-writer Agent优点:用户只需添加一个机器人,通过不同场景自动路由 缺点&#xf…...

从前端角度理解CSRF攻击与防御

从前端角度理解CSRF攻击与防御 在当今的Web开发中,安全问题始终是开发者不可忽视的重要议题。其中,CSRF(跨站请求伪造)攻击是一种常见的安全威胁,攻击者通过伪造用户身份,诱使用户在不知情的情况下执行恶意…...

为什么顶尖AI工程团队把可解释性设计前置到需求阶段?——基于27个亿级AIAgent项目的数据归因分析

第一章:可解释性设计前置的战略价值与范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 在高风险决策场景(如医疗诊断、金融授信与自动驾驶)中,模型的“黑箱性”已从工程挑战升维为治理瓶颈。将可解释性(XAI&a…...

MobileNetSSD_deploy.caffemodel下载地址

https://drive.google.com/file/d/0B3gersZ2cHIxRm5PMWRoTkdHdHc/view?uspsharing&resourcekey0-1Lpfs4EvGDeCQz12AF64hQ 就是这个下载按钮的链接了...

测试人员必看:避开这5个职业陷阱,升职加薪不是梦

在快速迭代的互联网行业中,软件测试人员肩负着保障产品质量的核心使命。然而职业道路上暗藏的陷阱,往往让测试从业者陷入发展瓶颈。本文从行业现状出发,深度剖析五大典型职业陷阱,并给出可落地的破局策略,助你实现技术…...

MySQL 死锁问题分析与解决

MySQL死锁问题分析与解决 在数据库高并发场景下,MySQL死锁问题频发,轻则导致事务回滚,重则引发系统性能骤降甚至服务不可用。死锁是指两个或多个事务相互持有并请求对方占用的资源,形成循环等待,最终无法继续执行的现…...

智慧点餐系统|亿坊·扫码点餐——正餐/快餐/茶饮,一套源码全搞定!

有不少朋友对于餐厅经营,都有着非常纠结的想法,那就是“我也想上系统,但打听一圈,要么年费贵得离谱,要么功能死板没法改。” 现在用亿坊扫码点餐系统,这一切的一切就都能解决了,今天就聊聊这套系…...

记录复现多模态大模型论文OPERA的一周工作()忻

pagehelper整合 引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数…...

5分钟彻底激活Windows和Office:KMS_VL_ALL_AIO智能激活工具完整指南

5分钟彻底激活Windows和Office:KMS_VL_ALL_AIO智能激活工具完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office文…...

SpringBoot集成Tika实现高效文件类型安全校验

1. 为什么文件类型校验如此重要? 记得去年我们团队接手过一个企业文档管理系统项目,客户反馈系统频繁出现存储空间异常爆满的情况。排查后发现,有用户将10GB的视频文件改名为"季度报表.pdf"上传,导致服务器磁盘空间被恶…...

树莓派HDMI黑屏?3种实测有效的config.txt配置修复方案(附分辨率设置技巧)

树莓派HDMI黑屏?3种实测有效的config.txt配置修复方案(附分辨率设置技巧) 刚拿到树莓派时,最让人崩溃的莫过于插上HDMI线却只看到一片漆黑。作为一名从树莓派2B一路玩到5代的"老派友",我经历过无数次开机黑屏…...

Jetson Orin Nano与树莓派CSI摄像头混用指南:硬件定义与驱动适配

1. 硬件接口差异解析 刚拿到Jetson Orin Nano和树莓派CSI摄像头时,最让我头疼的就是那堆排线接口。树莓派常用的15针和22针接口,与Jetson的22针接口看似相似,实际暗藏玄机。先说个真实案例:上周我尝试把树莓派OV5647摄像头插到Jet…...