音频信号的频谱分析实例

news2024/11/17 20:37:54

在前面的文章 信号频谱分析与功率谱密度 中,我们初步探讨了信号频谱分析的概念,并介绍了其数学工具。本篇文章将结合实例,进一步探讨频谱分析在音频信号处理中的应用。

音频信号的频谱分析是一种将时域中的音频信号转换为频域表示的过程,从而可以观察信号在不同频率上的能量分布。这种分析可以帮助我们理解音频信号的频率成分、谐波结构以及其他特征,对于音频处理、音乐分析、语音识别等应用具有重要意义。

以下是进行音频信号频谱分析的基本步骤:

  1. 采样与预处理:从原始音频信号中进行采样,将连续的音频信号转换为离散的采样点。通常还需要对采样数据进行预处理,如去除直流分量、归一化等。

  2. 窗函数应用:为了在频谱分析中减少频谱泄露问题,通常会将信号分成一小段一小段,并在每一段上应用窗函数。常用的窗函数包括汉明窗、矩形窗等。

  3. 傅里叶变换:对每个窗口内的采样点进行傅里叶变换,将时域信号转换为频域信号。傅里叶变换可以得到信号在不同频率上的振幅和相位信息。

  4. 频谱表示:将得到的频谱数据以图形方式表示,通常使用频谱图显示信号在不同频率上的能量分布。横轴表示频率,纵轴表示振幅或能量。

  5. 谱线解释:分析频谱图中的峰值、谷值、频率分量,了解信号的频率特征,是否存在谐波结构,是否有噪音等。

  6. 功率谱密度计算:从频谱中计算出信号的功率谱密度,表示不同频率范围内的信号功率。功率谱密度图可以更清晰地表示信号在频域上的能量分布。

  7. 降噪与滤波:根据频谱分析的结果,可以进行降噪和滤波操作,去除不需要的频率分量或噪音,提升信号质量。

  8. 特征提取:从频谱图中提取有用的特征,用于后续的音频处理任务,如音乐分类、声音识别等。

常用的工具包括Python中的NumPy、SciPy和Matplotlib库,以及专门用于音频信号处理的Librosa库,它们提供了丰富的函数和方法来进行音频信号的频谱分析和处理。

AudioSet数据集

AudioSet是由Google开发的一个大规模音频数据集,用于各种音频分析任务,如声音识别、音频分类、音频事件检测等。该数据集包含了数千小时的音频剪辑,涵盖了数千种不同的音频事件和环境。

每个音频剪辑都与一个或多个标签相关联,这些标签描述了音频中出现的声音事件或环境。例如,一段音频剪辑可以被标记为"狗叫声"、“车辆行驶声”、"咖啡厅环境声"等。

AudioSet数据集的特点包括:

  1. 大规模:包含数千小时的音频数据,涵盖了丰富多样的声音事件和环境。
  2. 标签丰富:每个音频剪辑都有一个或多个标签,用于描述其中出现的声音事件或环境。
  3. 数据多样性:包括了来自不同国家、地区和环境的音频数据,具有很强的多样性。
  4. 用途广泛:适用于声音识别、音频分类、音频事件检测等多种音频分析任务。

如果想要访问和使用AudioSet数据集,可以前往其官方网站(https://research.google.com/audioset/)进行下载和了解更多信息。请注意,由于数据集的规模较大,可能需要一定的存储空间和计算资源来处理和分析这些数据。

我从中选取了2个进行示例:

  1. WOP Race Truck Driving Off 7.3 Power Stroke Diesel

WOP Race Truck Driving Off

分析这段音频的频谱:

import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np

# Load audio file
audio_path = 'test.wav'
y, sr = librosa.load(audio_path)

# Plot original waveform
plt.figure(figsize=(10, 6))
librosa.display.waveshow(y, sr=sr)
plt.title('Original Waveform')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.show()

# Compute and plot spectrogram
D = librosa.amplitude_to_db(librosa.stft(y), ref=np.max)
plt.figure(figsize=(10, 6))
librosa.display.specshow(D, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrogram')
plt.show()

原始波形图:

原始波形图

频谱图:

频谱图

可以边听音频边对比频谱图,加油、刹车、再加油,还挺明显的吧。

  1. My first live steps with KORG esx-1 [7umb9yJpkKU]

My first live [7umb9yJpkKU]

与前面一样,分析这段音频的频谱:

原始波形图

频谱图

能听出几种声音呢?

公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1113198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云CodeArts IDE for Java安装使用教程

本篇内容主要介绍使用华为云CodeArts IDE for Java创建工程、代码补全、运行调试代码、Build构建和测试相关的主要功能。 一、下载安装华为云CodeArts IDE for Java 华为云CodeArts IDE for Java安装要求 至少需要 2 GB RAM ,但是推荐8 GB RAM; 至少需要 2.5 GB 硬…

C# Onnx Yolov8 Detect 指纹检测

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace Onnx…

钢水包升降翻转液压系统比例阀放大器

钢水包升降翻转液压系统是一种用于控制钢水包升降和翻转的液压系统。该系统主要由液压泵、液压缸、控制阀和一些辅助元件组成。 钢水包升降翻转液压系统的液压泵将油从油箱中抽出,将油压力提高到一定值,然后通过控制阀将油分配到液压缸中。液压缸内的活…

https证书

SSL证书的作用是确保通过网站传输的数据在客户端和服务器之间是安全、私密的。 它通过建立安全的通信通道来防止数据泄露、中间人攻击以及篡改等安全威胁,提供了身份认证和数据加密的功能。 这样可以确保用户在网站上提交的敏感信息,如个人数据、公司信…

linux常见命令-时间日期类、搜索查找类、压缩和解压类

一、时间日期类 1.date 指令-显示当前日期 基本语法 1) date (功能描述:显示当前时间) 2) date %Y (功能描述:显示当前年份) 3) date %m (功能描述:显示当前月份) 4) date %d (功能描述:显示当前是哪一天) 5) date "%Y-%m-%d %H:%M:%S" (功能描述:显示年月…

0基础学习VR全景平台篇第111篇:全景图拼接和编辑 - PTGui Pro教程

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 前情回顾:上节,我们将源图像导入了PTGui,也设置好了各项参数。 下面我们就开始拼接全景图,并且在编辑器里进行一系列检查错位和设…

Android 如何在Service中使用ViewModel

需求:最近有反馈说,需要在service中使用网络请求,而我网络请求就是封装的ViewModel。然后我就发现,原来service不支持,懵了呀!哈哈 还是去看看ViewModel的源码了解下吧。下面有几个介绍的。就不多做赘述了。…

uni-app开发

uni-app 官方手册:uni-app官网 一:tarBar:一级导航栏,即 tab 切换时显示对应页。 在pages.json文件里写入如下代码: 此效果:

ROS学习9:ROS进阶

【Autolabor初级教程】ROS机器人入门 1. action 通信 背景 机器人导航到某个目标点,此过程需要一个节点 A 发布目标信息,然后一个节点 B 接收到请求并控制移动,最终响应目标达成状态信息。乍一看好像是服务通信实现,因为需要 A 发送目标&…

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅲ—— 颁发自签名证书

目录 博文摘要5. 使用 Microsoft 证书颁发机构颁发自签名 SSL 证书5.1 登录MADCS5.2 申请证书5.3 选择证书类型5.4 提交CR5.5 下载 Base 64 编码的证书5.6 导出 CA 证书(1)打开 cachain.p7b(2)进入证书导出导向(3&…

Mysql高级——锁(2)

4. 锁的内存结构 InnoDB 存储引擎中的锁结构如下: 锁所在的事务信息: 不论是表锁还是行锁,都是在事务执行过程中生成的,哪个事务生成了这个锁结构,这里就记录这个事务的信息。 此锁所在的事务信息在内存结构中只是一…

让世界更精彩,拓世科技新品亮相世界舞台!虚实融合 智兴百业,2023世界VR产业大会正式开幕!

在这个科技重塑未来的时代,每一分、每一秒,科学技术都在飞速发展,成为我们都在经历的现实。世界VR产业大会,让我们再次目睹了科技带来的奇迹。VR、5G、人工智能、元宇宙等新技术,作为社会进步的引擎,正塑造…

Python程序龟速过载怎么办,asyncio并发教程来解决

前言 许多应用程序,尤其在当今的Web应用程序领域,严重依赖I/O操作。这些类型的操作包括从Internet下载网页的内容、通过网络与一组微服务进行通信,或者针对MySQL或Postgres等数据库同时运行多个查询。Web请求或与微服务的通信可能需要数百毫…

【数据结构】——二叉树的基础知识

数概念及结构 数的分类 二叉树、多叉树 数的概念 树是一种非线性的数据结构,它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做树的原因是它看起来像一颗倒挂的树,也就是说它是跟朝上,而叶朝下的。 有一个特殊的节点&…

小红书达人怎么对接,博主沟通流程汇总!

想要在小红书平台进行宣推,就离不开博主的帮助。一般来说,与小红书博主沟通,分为意向沟通、下单沟通、内容沟通和数据沟通方面。今天为大家分享下小红书达人怎么对接,博主沟通流程汇总! 一、意向沟通 意向沟通是小红书…

MyBatis中怎样查看执行的sql语句日志?

MyBatis中怎样查看执行的sql语句日志? 在mybatis中我们执行sql语句是通过动态代理接口执行的,我们并不能看到内部的sql的执行情况,所以你执行完一个接口之后,你也不知道sql到底有没有执行?以及sql执行的对不对&#x…

【试题016】逗号表达式例题

1.题目&#xff1a;设int a,b;,则表达式(b2,a5,b,ab)的值是 &#xff1f; 2.代码分析&#xff1a; #include <stdio.h> int main() {//设int a,b;,则表达式(b2,a5,b,ab)的值是 ()int a, b;printf("%d\n", (b 2, a 5, b, a b));//分析&#xff1a;逗号表达…

基于Java+Springboot+Vue前后端分离的商品进销存管管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 当今社会&#xff0c;…

dubbogo-02 将服务注册到nacos

增加dubbo配置 dubbo:application:name: gotestmodule: gotestgroup: daoorganization: qiudaozhangowner: qiudaozhangversion: 0.1environment: proregistries:nacosWithCustomGroup:protocol: nacos # 注册中心选择 nacosaddress: 127.0.0.1:8848 # nacos ipgroup: RIDE # …