音频入门(一):音频基础知识与分类的基本流程
音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。
目录
一、音频信号简介
1. 什么是音频信号
2. 音频信号长什么样
二、音频的深度学习分类基本流程
一、音频信号简介
1. 什么是音频信号
音频信号是声音波形的电学表示,它可以捕捉声音的频率、幅度和时间特性。音频信号可以是模拟的,也可以是数字的:
-
模拟音频信号:
- 模拟音频信号是连续变化的电信号,它模拟了原始声音波形的物理特性。
- 它可以通过麦克风捕获,并通过扬声器、耳机或放大器进行播放。
- 模拟信号可以被录制在磁带、黑胶唱片等介质上。
-
数字音频信号:
- 数字音频信号是通过将模拟信号转换为一系列数字值来表示的,这个过程称为模数转换(ADC)。
- 数字音频信号通常以文件形式存储,如MP3、WAV、AAC等格式。
- 数字音频可以方便地进行编辑、处理和传输,且不受模拟信号的退化问题影响。
音频信号的基本属性包括:
- 采样率(Sampling Rate):每秒内捕获的样本数量,单位是赫兹(Hz)。常见的采样率有44.1 kHz(CD质量)、48 kHz等。
- 位深度(Bit Depth):每个样本的量化精度,单位是比特(bit)。常见的位深度有16位、24位等。
- 通道数(Channels):音频信号的声道数量,如单声道(Mono)、立体声(Stereo)或环绕声(Surround Sound)。
- 频率内容(Frequency Content):音频信号包含的频率范围,通常以赫兹(Hz)为单位。
- 幅度(Amplitude):信号的强度或大小,通常影响声音的响度。
2. 音频信号长什么样
我们送入计算机的,肯定是数字音频信号了。那么,如何读取一段音频,并看看它是如何表示的呢?
和图像领域用Opencv或PIL等库读取图片类似,音频领域也有些专门的库可以读取/处理音频。
常用的库有soundfile、librosa等。下面我们使用soundfile读取一段音频,并展示其波形图、频谱图:
import soundfile
import resampy
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import stftif __name__ == '__main__':audio_path = "/data/datasets/Audios/Golf_sound/1_batting/batting_240725_36.MP3"audio, sample_rate = soundfile.read(audio_path)print(audio.shape)print(sample_rate)audio_mean = np.mean(audio, 1)audio_resampled = resampy.resample(audio_mean, sample_rate, 16000, filter="kaiser_best")print(audio_resampled.shape)# 计算STFTfreqs, times, spectrogram = stft(audio_resampled, sample_rate)# 绘制波形图plt.figure(figsize=(10, 2))plt.title('Audio Waveform')plt.xlabel('Time (seconds)')plt.ylabel('Amplitude')plt.plot(audio[:, :])# 绘制频谱图plt.figure(figsize=(10, 4))plt.title('Audio Spectrogram')plt.xlabel('Time (seconds)')plt.ylabel('Frequency (Hz)')plt.imshow(np.abs(spectrogram), aspect='auto', origin='lower')plt.colorbar()
运行后会绘制两个图:音频的波形图和STFT频谱图。


可以看到,原始音频是多通道的(示例音频是2通道,不同可能会有不同通道数),每个通道都可以看成是个一维的时序信号。
二、音频的深度学习分类基本流程
那么我们如何对音频信号进行分类呢?在信号处理领域,通常会将原始信号转换为更容易捕获特征的频域信号,然后利用一些手工设计特征或者深度学习方法捕获的特征,送入分类器,然后得到各个类别的概率。
下面是一个从原始信号到最终类别概率的深度学习算法流程:

相关的深度学习模型有CAMPPlus、ResNetSE、Res2Net等,它们可以从频域特征提取更为高级的语义特征,然后利用一个FC层分类得到各个类别的概率。
模型论文(引自参考3):
- EcapaTdnn:ECAPA-TDNN: Emphasized Channel Attention, Propagation and Aggregation in TDNN Based Speaker Verification
- PANNS:PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition
- TDNN:Prediction of speech intelligibility with DNN-based performance measures
- Res2Net:Res2Net: A New Multi-scale Backbone Architecture
- ResNetSE:Squeeze-and-Excitation Networks
- CAMPPlus:CAM++: A Fast and Efficient Network for Speaker Verification Using Context-Aware Masking
- ERes2Net:An Enhanced Res2Net with Local and Global Feature Fusion for Speaker Verification
参考:
1. Librosa: https://librosa.org/
2. python-soundfile — python-soundfile 0.11.0 documentation
3. https://github.com/yeyupiaoling/AudioClassification-Pytorch
相关文章:
音频入门(一):音频基础知识与分类的基本流程
音频信号和图像信号在做分类时的基本流程类似,区别就在于预处理部分存在不同;本文简单介绍了下音频处理的方法,以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…...
规避路由冲突
路由冲突是指在网络中存在两个或多个路由器在进行路由选择时出现矛盾,导致网络数据包无法正确传输,影响网络的正常运行。为了规避路由冲突,可以采取以下措施: 一、合理规划IP地址 分配唯一IP:确保每个设备在网络中都有…...
SQLmap 自动注入 -02
1: 如果想获得SQL 数据库的信息,可以加入参数: -dbs sqlmap -u "http://192.168.56.133/mutillidae/index.php?pageuser-info.php&usernamexiaosheng&passwordabc&user-info-php-submit-buttonViewAccountDetails" --batch -p username -dbs…...
4.JoranConfigurator解析logbak.xml
文章目录 一、前言二、源码解析GenericXMLConfiguratorlogback.xml解析通过SaxEvent构建节点model解析model节点DefaultProcessor解析model 三、总结 一、前言 上一篇介绍了logback模块解析logback.mxl文件的入口, 我们可以手动指定logback.xml文件的位置, 也可以使用其它的名…...
React 19 新特性总结
具体详见官网: 中文:React 19 新特性 英文:React 19 新特性 核心新特性 1. Actions 解决问题:简化数据变更和状态更新流程 以前需要手动处理待定状态、错误、乐观更新和顺序请求需要维护多个状态变量(isPending, error 等) 新…...
kafka学习笔记6 ACL权限 —— 筑梦之路
在Kafka中,ACL(Access Control List)是用来控制谁可以访问Kafka资源(如主题、消费者组等)的权限机制。ACL配置基于Kafka的kafka-acls.sh工具,能够管理对资源的读取、写入等操作权限。 ACL介绍 Kafka的ACL是…...
【Java】Java抛异常到用户界面公共封装
前言 在Java中处理代码运行异常是常见的技术点之一,我们大部分会使用封装的技巧将异常进行格式化输出,方便反馈给用户界面,也是为了代码复用 看看这行代码是怎么处理异常的 CommonExceptionType.SimpleException.throwEx("用户信息不…...
基于Redis实现短信验证码登录
目录 1 基于Session实现短信验证码登录 2 配置登录拦截器 3 配置完拦截器还需将自定义拦截器添加到SpringMVC的拦截器列表中 才能生效 4 Session集群共享问题 5 基于Redis实现短信验证码登录 6 Hash 结构与 String 结构类型的比较 7 Redis替代Session需要考虑的问题 8 …...
步入响应式编程篇(二)之Reactor API
步入响应式编程篇(二)之Reactor API 前言回顾响应式编程Reactor API的使用Stream引入依赖Reactor API的使用流源头的创建 reactor api的背压模式发布者与订阅者使用的线程查看弹珠图查看形成新流的日志 前言 对于响应式编程的基于概念,以及J…...
Oracle SQL: TRANSLATE 和 REGEXP_LIKE 的知识点详细分析
目录 前言1. TRANSLATE2. REGEXP_LIKE3. 实战 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. TRANSLATE TRANSLATE 用于替换字符串中指定字符集的每个字符,返回替换后的字符串 逐一映射输入字…...
RabbitMQ 在实际应用时要注意的问题
1. 幂等性保障 1.1 幂等性介绍 幂等性是数学和计算机科学中某些运算的性质,它们可以被多次应⽤,⽽不会改变初始应⽤的结果. 应⽤程序的幂等性介绍 在应⽤程序中,幂等性就是指对⼀个系统进⾏重复调⽤(相同参数),不论请求多少次,这些请求对系统的影响都是相同的效果. ⽐如数据库…...
算法日记8:StarryCoding60(单调栈)
一、题目 二、解题思路: 题意为让我们找到每个元素的左边第一个比它小的元素,若不存在则输出-1 2.1法一:暴力(0n2) 首先,我们可以想到最朴素的算法:直接暴力两层for达成目标核心代码如下&…...
大象机器人发布首款穿戴式数据采集器myController S570,助力具身智能数据收集!
myController S570 具有较高的数据采集速度和远程控制能力,大大简化了人形机器人的编程。 myController S570 是一款可移动的轻量级外骨骼,具有 14 个关节、2 个操纵杆和 2 个按钮,它提供高数据采集速度,出色的兼容性,…...
【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:product.kylinos.cn 开发者专区:developer.kylinos.cn 文档中心:document.kylinos.cn 交流论坛:forum.kylinos.cn 服务器环境以及配置 【内核版本…...
C语言之饭店外卖信息管理系统
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之饭店外卖信息管理系统 目录 设计题目设计目的设计任务描述设计要求输入和输出要求验…...
记一次 .NET某数字化协同管理系统 内存暴涨分析
一:背景 1. 讲故事 高级调试训练营里的一位朋友找到我,说他们跑在linux上的.NET程序出现了内存泄露的情况,上windbg观察发现内存都是IMAGE给吃掉了,那些image都标记了 doublemapper__deleted_ 字样,问我为啥会这样&a…...
部门管理查询部门,nginx反向代理,前端如何访问到后端Tomcat 注解@RequestParam
接口开发 增删改通常是不用返回data数据,返回null 列表查询-结果封装,时间 前后端联调测试 nginx反向代理,前端如何访问到后端Tomcat服务器 删除部门...
JS通过ASCII码值实现随机字符串的生成(可指定长度以及解决首位不出现数值)
在之前写过一篇“JS实现随机生成字符串(可指定长度)”,当时写的过于简单和传统,比较粗放。此次针对此问题,对随机生成字符串的功能进行优化处理,对随机取到的字符都通过程序自动来完成。 在写之前ÿ…...
速通Docker === 快速部署Redis主从集群
目录 镜像仓库介绍 持久化你的数据库 连接到其他容器 创建自定义网络 部署主节点 部署从节点 验证部署 总结 在现代应用架构中,Redis作为一个高性能的内存数据库,被广泛应用于缓存、会话存储、实时分析等多个领域。为了提高Redis的可用性和数据的…...
论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(一)
Understanding Diffusion Models: A Unified Perspective(一) 文章概括引言:生成模型背景:ELBO、VAE 和分层 VAE证据下界(Evidence Lower Bound)变分自编码器 (Variational Autoencoders&#x…...
Android OTA包极速提取:payload-dumper-go完整实战指南 [特殊字符]
Android OTA包极速提取:payload-dumper-go完整实战指南 🚀 【免费下载链接】payload-dumper-go an android OTA payload dumper written in Go 项目地址: https://gitcode.com/gh_mirrors/pa/payload-dumper-go payload-dumper-go是一款专为Andro…...
[具身智能-241]:从OpenCV到CNN:人类认知模式在计算机视觉中的投影
人类大脑认知的两种模式:确定性的逻辑推演模式 不确定性的直觉经验模式,前者即“非此即彼的计算机技术”,后者即“数据经验主义的人工智能技术”。 人类的自然语言是模糊的,视觉亦是如此,OpenCV和CNN是这种思维模式的…...
LLM自反思从入门到精通:SRLM底层逻辑全解析,收藏这篇就够了!
一句话摘要:当语言模型面对超长文本时,我们习惯性地认为"递归分解"是正确答案——把长文本切碎、递归调用自身来处理。但 Apple 的这篇论文给出了反直觉的结论:递归并不是 RLM 性能提升的主要驱动力。真正起作用的,是基…...
1996-2024年全国各地区交通事故、火灾事故数据
资源介绍 交通事故与火灾事故是衡量区域公共安全水平与风险治理能力的重要客观指标,直接关系到居民生命财产安全、社会稳定以及政府公共治理绩效。从研究视角看,事故类数据不仅反映突发性风险事件的发生频率,也在一定程度上刻画了区域基础设施…...
e1547:让社区浏览体验回归纯粹的定制化浏览器
e1547:让社区浏览体验回归纯粹的定制化浏览器 【免费下载链接】e1547 A sophisticated e621 browser 项目地址: https://gitcode.com/gh_mirrors/e1/e1547 问题引入:当浏览变成筛选的艺术 在内容爆炸的时代,每位用户都渴望看到真正感…...
[安卓逆向]问题解决:Xposed-Disable-FLAG_SECURE的截图限制解除与实战部署
[安卓逆向]问题解决:Xposed-Disable-FLAG_SECURE的截图限制解除与实战部署 【免费下载链接】Xposed-Disable-FLAG_SECURE Xposed Module to Disable FLAG_SECURE, enabling screenshots, screen sharing and recording in apps that normally wouldnt allow it. 项…...
《算法题讲解指南:动态规划算法--子序列问题(附总结)》--32.最长的斐波那契子序列的长度,33.最长等差数列,34.等差数列划分II-子序列
🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》《C入门到进阶&自我学习过程记录》 《算法题讲解指南》--优选算法 《算法题讲解指南》--递归、搜索与回溯算法 《算法题讲解指南》--动态规划算法 ✨未择之路࿰…...
LingBot-Depth应用案例:智能机器人视觉感知的深度修复实战
LingBot-Depth应用案例:智能机器人视觉感知的深度修复实战 1. 引言:当机器人遇到"视觉障碍" 想象一下,你家的扫地机器人正在客厅工作,突然在玻璃茶几前停了下来——因为它"看"不到透明的玻璃表面。或者一个…...
新手福音:用claude code和快马平台开启你的Python编程第一课
最近在帮朋友入门Python编程时,发现很多新手都会遇到类似的问题:看教程时觉得简单,但自己动手写代码就无从下手。经过几次尝试,我发现用InsCode(快马)平台结合claude code生成的教学项目,能很好地解决这个痛点。下面分…...
使用VESTA快速生成XRD标准图谱:从CIF文件到可视化分析
1. 从零开始:获取CIF文件与VESTA基础操作 搞材料研究的朋友们应该都遇到过这种情况:手头有套晶体结构数据,想快速验证下XRD图谱是否匹配理论值。这时候VESTA就是你的神器。我第一次用这软件时,被它的可视化效果惊艳到了——原来晶…...
