【使用机器学习和深度学习对城市声音进行分类】基于两种技术(ML和DL)对音频数据(城市声音)进行分类(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
📚2 运行结果
2.1 算例1
2.2 算例2
2.3 算例3
2.4 算例4
2.5 算例5
2.6 算例6
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
使用机器学习和深度学习对城市声音进行分类是一个有趣的研究课题。下面是一种基本的方法,结合了机器学习(ML)和深度学习(DL)技术:
1. 数据收集和预处理:收集大量城市声音的音频数据集。可以使用麦克风或其他录音设备在不同城市环境下进行采集。确保采集到的音频数据有足够的多样性和代表性。对音频数据进行预处理,如音频剪辑、采样率调整、去噪等。
2. 特征提取:从音频数据中提取有代表性的特征向量。可以使用机器学习常见的音频特征提取方法,如Mel频谱系数(MFCC)、音频能量、过零率等。这些特征可以帮助机器学习和深度学习模型发现城市声音的区别和模式。
3. 机器学习分类:使用机器学习算法对提取的音频特征进行分类。选择适合音频分类的机器学习算法,如支持向量机(SVM)、随机森林(Random Forest)或K最近邻(K-Nearest Neighbors)等。使用预处理的音频数据和特征向量训练机器学习模型,并对其进行评估和优化。
4. 深度学习分类:构建深度学习模型进行城市声音分类。使用深度学习算法,如卷积神经网络(CNN)或循环神经网络(RNN)构建分类模型。使用音频数据的原始波形或经过预处理的特征作为输入,训练深度学习模型并进行模型优化。
5. 模型评估和比较:使用预留的测试集评估机器学习和深度学习模型的性能。比较两种技术在城市声音分类任务上的准确率、召回率、精确率等指标。根据评估结果选择更有效的模型。
6. 可解释性分析:对分类结果进行可解释性分析。了解哪些特征对城市声音的分类起到重要作用,或者使用可解释性方法(如Grad-CAM)来查看深度学习模型对城市声音的决策过程。
7. 模型优化和改进:根据分析结果和实际需求,对机器学习和深度学习模型进行优化和改进。可以尝试使用更复杂的模型架构、调整超参数或增加数据样本等来提高模型的性能。
通过上述方法,可以使用机器学习和深度学习技术对城市声音进行分类。机器学习方法适用于特征提取和分类,而深度学习方法可以直接处理原始音频数据,从而更好地捕捉城市声音的特征和模式。结合两种技术可以提高分类的准确性和效果,对于城市环境监测、噪音控制等方面具有实际应用价值。
该数据集包含来自 8732 个类的 4 个城市声音摘录(<=10 秒),它们是:
空调
汽车喇叭
儿童玩耍
狗吠
钻井
引擎 怠速
枪射击
手提钻
警笛
街头音乐
随附的元数据包含每个声音摘录的唯一 ID 及其给定的类名。随附的 git 存储库中包含此数据集的示例,可以从此处下载完整数据集。
此示例中有 7 个算例:
算例 1:示例简介,探索和可视化数据
算例 2:使用诊断应用程序设计器对数据
进行预处理和提取功能(信号时域特征和频谱特征)
算例 3:模型训练和评估
算例 4:模型部署
算例 5:使用 MFCC 提取特征来训练机器学习模型
算例 6:使用小波分析和深度学习对城市声音进行分类
亮点 :
为音频数据存储
准备现实数据 标准化和规范化数字信号数据(采样率、位深度、通道数) 使用不同的方法提取特征(时域信号特征和频谱特征,MFCC,离散小波变换,Haar 1D小波变换)
📚2 运行结果
2.1 算例1
figure()
datafolder = "UrbanSound8K/structure1";
currentfolder = pwd;
cd(datafolder);
listdir=dir;
for i=3:1:length(listdir)
cd(listdir(i).name)
inside=dir;
subplot(3,4,i-2);
[y,fs]=audioread(inside(4).name);
plot(y(:,:));
soundsc(y(:,:),fs);
grid on;
title(listdir(i).name)
drawnow;
pause(2)
cd(strcat(currentfolder,'\',datafolder));
end


2.2 算例2
figure()
datafolder = "UrbanSound8K/structure";
currentfolder = pwd;
cd(datafolder);
listdir=dir;
for i=3:1:length(listdir)
cd(listdir(i).name)
inside=dir;
subplot(3,4,i-2);
[y,fs]=audioread(inside(randi([4,100])).name);
plot(y(:,:));
soundsc(y(:,:),fs);
grid on;
title(listdir(i).name)
drawnow;
pause(2)
cd(strcat(currentfolder,'\',datafolder));
end



2.3 算例3


2.4 算例4

2.5 算例5
figure()
datafolder = "UrbanSound8K/structure";
currentfolder = pwd;
cd(datafolder);
listdir=dir;
for i=3:1:length(listdir)
cd(listdir(i).name)
inside=dir;
subplot(3,4,i-2);
[y,fs]=audioread(inside(4).name);
plot(y(:,:));
soundsc(y(:,:),fs);
grid on;
title(listdir(i).name)
drawnow;
pause(5)
cd(strcat(currentfolder,'\',datafolder));
end





2.6 算例6





🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]HP ProLiant ML和DL服务器选用QLogic的第三代CNA产品[J].计算机与网络,2011,37(Z1):127.
[2]Kevin Chng (2023). Classify Urban Sound using Machine Learning & Deep Learning
[3]崔琳. 音频标记深度神经网络模型研究[D].燕山大学,2020.DOI:10.27440/d.cnki.gysdu.2020.001881.
🌈4 Matlab代码实现
相关文章:
【使用机器学习和深度学习对城市声音进行分类】基于两种技术(ML和DL)对音频数据(城市声音)进行分类(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Godot 4 练习 - 制作粒子
演示项目dodge_the_creeps中,有一个Trail,具体运行效果 想要看看咋实现的,看完也不清晰,感觉是要设置某些关键的属性 ChatGPT说:以下是一些重要的属性: texture:用于渲染粒子的纹理。您可以使用…...
Java基础继承详解
Java基础继承详解 在Java中,继承是面向对象编程中的一个重要概念。通过继承,一个类可以从另一个类继承属性和方法,使代码重用和扩展更加方便。下面是关于Java基础继承的一些详解: 关键字: 使用extends关键字可以在一个…...
如何维护你的电脑:打造IT人的重要武器
文章目录 方向一:介绍我的电脑方向二:介绍我的日常维护措施1. 定期清理和优化2. 保持良好的上网习惯和安全防护3. 合理安排软件和硬件的使用4. 数据备份和系统还原 方向三:推荐的维护技巧1. 数据分区和多系统安装2. 内部清洁和散热优化3. 安全…...
【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT 3
1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网…...
Elasticsearch 快照和恢复
文章目录 简介快照存储库说明创建或更新存储库接口说明路径参数查询参数请求正文 使用 fs 方式创建存储库验证储存库获取存储库信息删除存储库清理储存库 快照创建快照路径参数查询参数请求正文示例 获取快照查询参数示例 克隆快照查询参数示例 获取快照状态示例 恢复快照查询参…...
Packet Tracer - 检验 IPv4 和 IPv6 编址
Packet Tracer - 检验 IPv4 和 IPv6 编址 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 IPv6 地址/前缀 R1 G0/0 10.10.1.97 255.255.255.224 N/A 2001:DB8:1:1::1/64 N/A S0/0/1 10.10.1.6 255.255.255.252 N/A 2001:DB8:1:2::2/64 N/A 本地链路 F…...
PHP8的表达式-PHP8知识详解
表达式是 PHP 最重要的基石。在 PHP8中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是"任何有值的东西"。 最基本的表达式形式是常量和变量。当键入"$a 5",即将值"5"分配给变量 $a。&quo…...
亚马逊云科技七项生成式AI新产品生成式AI,为用户解决数据滞后等难题
7月27日,亚马逊云科技在纽约峰会上一连发布了七项生成式AI创新,涵盖了从底层硬件到工具、软件、再到生态的全方位更新,成为它在该领域迄今最全面的一次升级展示,同时也进一步降低了生成式AI的使用门槛。 亚马逊云科技凭借自身端到…...
图片等比例显示全部,兼容不同宽高比例图片
功能描述:预览瀑布流图片 点击预览不同的尺寸图片 <!-- 预览页面 --><div class"sea"><img :src"seaobj.url" alt""></div> .sea {z-index: 100;position: fixed;top: 0;text-align: center;background-colo…...
·[K8S:使用calico网络插件]:解决集群节点NotReady问题
文章目录 一:安装calico:1.1:weget安装Colico网络通信插件:1.2:修改calico.yaml网卡相关配置:1.2.1:查看本机ip 网卡相关信息:1.2.2:修改calico.yaml网卡interface相关信…...
泊松损坏图像的快速尺度间小波去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
服务器端开发-golang dlv 远程调试
1。需要root权限的服务器代码调试 sudo ./appps to get piddlv attach pid --headless --listen:40000 --api-version2 --accept-multiclientattach the golang IDE or other IDE 2。不需要root权限的服务器代码调试,另一种选择 dlv --listen:40000 --headlesstr…...
STM32F103——时钟配置
目录 1、认识时钟树 1.1 什么是时钟树 1.2 时钟系统解析 1.2.1 时钟源 1.2.2 锁相环PLL 1.2.3 系统时钟SYSCLK 1.2.4 时钟信号输出MCO 2、如何修改主频 2.1 STM32F1时钟系统配置 2.2 STM32F1 时钟使能和配置 下列进行举例的开发板是原子哥的战舰开发板STM32F103ZET…...
【Linux】信号捕捉
目录 信号捕捉1.用户态与内核态1.1关于内核空间与内核态:1.2关于用户态与内核态的表征: 2.信号捕捉过程 信号捕捉 1.用户态与内核态 用户态:执行用户代码时,进程的状态 内核态:执行OS代码时,进程的状态 …...
超详情的开源知识库管理系统- mm-wiki的安装和使用
背景:最近公司需要一款可以记录公司内部文档信息,一些只是累计等,通过之前的经验积累,立马想到了 mm-wiki,然后就给公司搭建了一套,分享一下安装和使用说明: 当前市场上众多的优秀的文档系统百…...
安卓:UDP通信
目录 一、介绍 网络通信的三要素: (1)、IP地址: IPv4: IPv6: IP地址形式: IP常用命令: IP地址操作类: (2)、端口: (3)、协议: UDP协…...
clickhouse安装
clickhouse安装 在线安装和离线安装 一、环境准备: 1.检查系统是否支持clickhouse安装 (向量化支持) grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.” 2.下载对应的clickhouse包 复制运行之后,就会将对应的包加入…...
Cpp学习——string(2)
目录 编辑 容器string中的一些函数 1.capacity() 2.reserve() 3.resize() 4.push_back()与append() 5.find系列函数 容器string中的一些函数 1.capacity() capacity是string当中表示容量大小的函数。但是string开空间时是如何开的呢?现在就来看一下。先写…...
python进阶编程
lambda匿名函数 python使用lambda表达式来创建匿名函数 语法 // lambda 参数们:对参数的处理 lambda x : 2 * x // x 是参数, 2*x 是返回值 //使用lambda实现求和 sum lambda arg1, arg2 : agr1 arg2 print(sum(10,20)) // 将匿名函数封装在一…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果

