当前位置: 首页 > 编程日记 > 正文

数字信号处理实验三用fft对信号作频谱分析_机器学习中的音频特征:理解Mel频谱图...

5ee376fc183ec2952c8e5a3592d084c2.png

如果你像我一样,试着理解mel的光谱图并不是一件容易的事。你读了一篇文章,却被引出了另一篇,又一篇,又一篇,没完没了。我希望这篇简短的文章能澄清一些困惑,并从头解释mel的光谱图。

信号

信号是一定量随时间的变化。 对于音频,变化的量是气压。 我们如何以数字方式捕获此信息? 我们可以随时间采集气压样本。 我们采样数据的速率可以变化,但是最常见的是44.1kHz,即每秒44,100个采样。 我们捕获的是信号的波形,可以使用计算机软件对其进行解释,修改和分析。

import librosa
import librosa.display
import matplotlib.pyplot as plty, sr = librosa.load('./example_data/blues.00000.wav')plt.plot(y);
plt.title('Signal');
plt.xlabel('Time (samples)');
plt.ylabel('Amplitude');

5b981069411ad644865efa97bfd0175a.png

我们可以使用音频信号的数字表示形式。 欢迎来到信号处理领域! 您可能想知道,我们如何从中提取有用的信息? 看起来像是一团混乱。 这就引出我们的朋友傅里叶,这里是它最熟悉的领域。

傅立叶变换

音频信号由几个单频声波组成。 在一段时间内对信号进行采样时,我们仅捕获得到的幅度。 傅立叶变换是一个数学公式,它使我们可以将信号分解为单个频率和频率幅度。 换句话说,它将信号从时域转换到频域。 结果称为频谱。

这是可能的,因为每个信号都可以分解为一组正弦波和余弦波,它们加起来等于原始信号。 这是一个著名的定理,称为傅立叶定理。

快速傅立叶变换(FFT)是一种可以有效计算傅立叶变换的算法。 它广泛用于信号处理。 我将在示例音频的窗口片段中使用此算法。

import numpy as npn_fft = 2048
ft = np.abs(librosa.stft(y[:n_fft], hop_length = n_fft+1))plt.plot(ft);
plt.title('Spectrum');
plt.xlabel('Frequency Bin');
plt.ylabel('Amplitude');

f21b9cfebfd5c9948e55f286c688f347.png

频谱图

快速傅立叶变换是一种功能强大的工具,可让我们分析信号的频率成分,但是如果信号的频率成分随时间变化,该怎么办? 大多数音频信号(例如音乐和语音)就是这种情况。 这些信号称为非周期性信号。 我们需要一种表示这些信号随时间变化的频谱的方法。 您可能会想,“嘿,我们不能通过对信号的多个窗口部分执行FFT来计算多个频谱吗?” 是! 这正是完成的工作,称为短时傅立叶变换。 FFT是在信号的重叠窗口部分上计算的,我们得到了所谓的频谱图。 哇! 需要接受很多东西。这里有很多事情要做。 良好的视觉效果是必须的。

275cd527e57b6a48524cad023530fd9b.png

您可以将频谱图视为一堆相互堆叠的FFT。 当信号在不同频率下随时间变化时,这是一种直观地表示信号响度或幅度的方法。 计算频谱图时,还有一些其他细节。 y轴转换为对数刻度,颜色尺寸转换为分贝(您可以将其视为振幅的对数刻度)。 这是因为人类只能感知到非常小的集中频率和幅度范围。

spec = np.abs(librosa.stft(y, hop_length=512))
spec = librosa.amplitude_to_db(spec, ref=np.max)librosa.display.specshow(spec, sr=sr, x_axis='time', y_axis='log');
plt.colorbar(format='%+2.0f dB');
plt.title('Spectrogram');

0ef9d3e506380f1bd42fb0322f30bd9e.png

仅用几行代码,我们就创建了一个频谱图。 好。 我们对“频谱图”部分有扎实的了解,但对“MEL”则如何。 他是谁?

梅尔(Mel)量表

研究表明,人类不会感知线性范围的频率。 我们在检测低频差异方面要胜于高频。 例如,我们可以轻松分辨出500 Hz和1000 Hz之间的差异,但是即使之间的距离相同,我们也很难分辨出10,000 Hz和10,500 Hz之间的差异。

1937年,Stevens,Volkmann和Newmann提出了一个音高单位,以使相等的音高距离听起来与听众相等。 这称为梅尔音阶。 我们对频率执行数学运算,以将其转换为mel标度。

c65390ee89c5e32c50d97cc4bd4a67b2.png

Mel谱图

mel谱图是频率转换为mel标度的谱图。使用python的librosa音频处理库它只需要几行代码就可以实现。

mel_spect = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=2048, hop_length=1024)
mel_spect = librosa.power_to_db(spect, ref=np.max)librosa.display.specshow(mel_spect, y_axis='mel', fmax=8000, x_axis='time');
plt.title('Mel Spectrogram');
plt.colorbar(format='%+2.0f dB');

10edf9f3cdcd03648e2f3c92a058257b.png

总而言之

如果你像我一样是信号处理新手的话,这里有很多概念需要了解。然而,如果你继续回顾这篇文章中提出的概念(花足够的时间盯着墙角思考它们),它就会开始有意义了!让我们简要回顾一下我们所做的工作。

我们随时间采集了气压样本,以数字方式表示音频信号

  1. 我们使用快速傅里叶变换将音频信号从时域映射到频域,并在音频信号的重叠窗口部分执行此操作。
  2. 我们将y轴(频率)转换为对数刻度,将颜色尺寸(幅度)转换为分贝,以形成频谱图。
  3. 我们将y轴(频率)映射到mel刻度上以形成mel频谱图。

听起来很简单,对吧? 好吧,虽然不尽然,但是我希望这篇文章能使你了解音频特征的处理和梅尔频谱图的原理。

作者:Leland Roberts

deephub 翻译组

相关文章:

【Kaggle Learn】Python 1-4

【Kaggle Learn】Python https://www.kaggle.com/learn/python 一. Hello, Python A quick introduction to Python syntax, variable assignment, and numbers spam_amount 0 print(spam_amount)# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)…

svn中的ignore

首先,svn GUI菜单右键的ignore功能,写的模模糊糊,网上也没啥人给出清晰的解释,stackoverflow推荐用命令行控制 SVN有3中方法配置ignore 1.配置文件 C:\Users\{you}\AppData\Roaming\Subversion\config 这个只是本地客户端端, 2.svn:ignore 如果带recursively,在执行…

2018-3-2线性表

2018-3-2 来源小甲鱼论坛: ★第八讲 线性表3 ★,数据结构与算法,技术交流区,鱼C论坛 - Poweredby Discuz! http://bbs.fishc.com/forum.php?modviewthread&tid96295&ctid1041 1. 线性表(List)的定义: 由零个或多个数…

元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏

了解如何开发零编程背景的Oculus Quest游戏 你会学到什么 为Oculus Quest构建应用程序 设计和开发虚拟现实游戏 在虚幻引擎中工作 使用材料和纹理 优化内容,实现移动和虚拟现实游戏的快速性能 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC&#x…

虚拟机访问svn服务器超时_SVN卡顿原因及简单修复方法

项目中用SVN,使用过程中尤其时访问SVN浏览器的时候经常卡顿,这个时间累积起来很是浪费,所以找个机会从各个方面分析了一下卡顿原因,也总结了一些修复经验。硬件问题查看电脑配置是否SSD双硬盘,如果是,查看设…

前端页面——Cookie与Session有什么区别

我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录。而当我们在这个网站浏览一段时间后,…

【Kaggle Learn】Python 5-8

五. Booleans and Conditionals Using booleans for branching logic x True print(x) print(type(x)) True <class bool> ①Booleans Python has a type bool which can take on one of two values: True and False. ②Comparison Operations a b, and, or, not等等 …

hdu 2795 段树--点更新

http://acm.hdu.edu.cn/showproblem.php?pid2795 在第一和第三多学校都出现线段树&#xff0c;我在比赛中并没有这样做。&#xff0c;热身下&#xff0c;然后31号之前把那两道多校的线段树都搞了&#xff0c;这是一道热身题 关键是建模&#xff1a; 首先一定看清楚题目构造的场…

2018-3-3 论文(网络评论中非结构化信息的表示与应用研究)笔记一

文章立脚点&#xff1a; 大量网络评论的出现&#xff0c;使得产品制造商或消费者很难跟踪己购产品用户的意见和建议&#xff0c;这就给他们的决策造成了额外的困难。 文章思路; 将网络评论中的非结构化信息处理成结构化信息 文章的总体的脉络 首先研宄评论分词、词性标注…

Blender中的大师级3D环境场景制作学习教程

你需要在一个地方学习的一切 在本课程中&#xff0c;您将学习Blender中景观创建的每一个重要工作流程&#xff0c;而无需使用任何付费附加组件或资产。 你将学习如何创造山脉、海洋、森林、沙漠、云层和天气影响。无需搜索描述特定技术或工作流程的在线视频–您将在一门课程中…

git diff 比较文件_使用Python创建你自己的diff工具

为什么我需要自己的diff工具&#xff1f;我经常使用git跟踪我的编码项目、文章、业务工作等等。git的一个美妙之处在于&#xff0c;你可以通过简单地使用其内置的diff功能来轻松地比较你的工作的不同状态。要使用这个功能&#xff0c;你只需要满足两个约束:首先&#xff0c;你需…

Oracle开发:normal ,sysdba,sysoper区别

Oracle将用户分成两类&#xff1a;【system】和【sys】 【system】用户只能用normal身份登陆em。(可以看成公司的普通成员)【sys】用户具有“SYSDBA”(可以看成公司的CEO)或者“SYSOPER”权限(可以看成公司的运营主管)&#xff0c;登陆em也只能用这两个身份&#xff0c;不能用n…

记录win10快捷键

wintab 虚拟桌面 winshifts 截图 wins 搜索 winq 小娜 win↑ 或←等 快速分屏 1809: winv 剪贴板 笔记本: ~~

清除浮动实用方案

1&#xff1a;给父元素添加overflow&#xff1a;hidden属性 2&#xff1a;father&#xff1a;after{ content: ""; display: block; clear: both; }转载于:https://www.cnblogs.com/liujianhui/p/4613600.html

2018-3-4 nginx和Tengine 以及高并发的概念

问题一&#xff1a;什么是nginx&#xff1f;&#xff1f; 来源百度百科&#xff1a;nginx_百度百科 https://baike.baidu.com/item/nginx/3817705?fraladdin Nginx (engine x) 是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔…

三维植物树木模型 Maxtree – Plant Models Vol 74

maxtree–工厂模型第74卷 大小解压后&#xff1a;2.34G 信息: 植物模型第74卷是高质量的三维植物模型的集合。包括12个物种&#xff0c;共72个单一模式。 获取地址&#xff1a;三维植物树木模型 Maxtree – Plant Models Vol 74-云桥网 种类 三角枫 槭树 复叶槭 鸡爪槭 白桦…

python pandas_Python库Pandas数据可视化实战案例

点击上方“爱好Python的胡同学”&#xff0c;选择“星标”公众号每晚八点&#xff0c;Python干货&#xff0c;不见不散&#xff01;数据可视化可以让我们很直观的发现数据中隐藏的规律&#xff0c;察觉到变量之间的互动关系&#xff0c;可以帮助我们更好的给他人解释现象&#…

inconfont 字体库应用

先去注册个号码&#xff0c;好像只可以用新浪微博登录哈&#xff0c;搞一个微博去。 第一就是点上面图标库&#xff0c;选择官方和所有都行。 恩接着点一个图标&#xff0c;他就自己跑到 第二个按钮哪里去了&#xff0c;在点第二个按钮&#xff0c;会出来一个创建项目&#xff…

deepin初试与file browser使用小结

①c盘也可以弄压缩盘安装deepin啊 ②deepin硬盘格式Windows看不见,而在deepin中Windows硬盘可以看见 ③安装完deepin如果直接进入了win10,其实不用费这么大劲搞来搞去,比如修复uefi easyuefi什么的 直接关闭win10的快速启动 然后用easybcd 弄个引导(grup2)就行 很简单 ④dee…

iptables工具__过滤包—命令

iptables工具__过滤包—命令(-A、-I、-D、-R、-L等)、参数(-p、-s、-d、--sport、--dport、-i、-o等)、动作-j (ACCEPT、DROP、REJECT、REDIRECT等) iptables 指令语法&#xff1a;iptables [-t table] command [match] [-j target/jump]-t 参数用来指定规则表&#xff0c;内建…

2018-3-5(论文——网络中非结构信息的表示与应用)笔记二 (歧义词,未登录词,禁用词)

1.文本的词性标注 词性作为一种语义特征通常&#xff1a;名词 n 动词 v 副词 d 连词 c 形容词 a 通过使用自动标注器&#xff0c;完成文本的标注。 2.歧义词 -----汉字处理 按照偏正结构&#xff0c;汉字通常是形容词在前名词&#xff08;中心…

PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022

PBR游戏3D模型捆绑包2022年2月 大小解压后&#xff1a;6.99G MAX| OBJ | FBX |TEX 模型获取&#xff1a;PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022-云桥网 包括: 500马格南定制左轮手枪 ACV-15 加法机 模拟无线电A16-PRC316 陆军奔驰 巴雷特PRC-2080战术…

python编写用户输入的是q么代码_Python课 #01号作业

为了记录我的Python课&#xff0c;将我的作业发上来&#xff0c;欢迎各位大佬评鉴。如果你有什么更好的想法&#xff0c;请在下方评论或联系我。谢谢&#xff01; 作业一&#xff1a;向某人打招呼 描述 程序接收用户输入的姓名&#xff0c;然后输出向该姓名问好的文字。 代码&a…

CPU(处理器)、内存、硬盘之间的关系

前面提到了,电脑之父——提出了计算机的五大部件:输入设备、输出设备、存储器、运算器和控制器。我们看一下现在我们电脑的: 键盘鼠标、显示器、机箱、音响等等。这里显示器为比较老的CRT显示器,现在一般都成功了液晶显示器。我们想一下,我们在玩电脑的时候,我们使用键盘鼠标来操作电脑,我们在和其他人QQ聊天的时候,鼠标可以帮我们选中聊天的人,打开聊天窗口,键盘则是负责打字,帮我们输入聊天的内容。我们在操作键盘鼠标的时候,其实都是在告诉电脑来做什么的。我们管键盘和鼠标叫输入设备。向电脑输入数据和信息的设备。

复习笔记之母函数

HDU 1398 Square Coins 题意&#xff1a;给 17 种面值的钱币&#xff0c;分别为&#xff1a;1-4-9-。。。-17^2.问 x&#xff08;x < 300) 能有多少种不同的兑换方式。 思考&#xff1a;略~母函数简单模板题目。事实上还可以用完全背包来做。 1 #include <iostream>2 …

k8s搭建部署(超详细)

Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。快速部署应用快速扩展应用无缝对接新的应用功能节省资源,优化硬件资源的使用可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)可扩展: 模块化, 插件化, 可挂载, 可组合自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展。

通过anaconda2安装python2.7和安装pytorch

①由于官网下载anaconda2太慢&#xff0c;最好去byrbt下载&#xff0c;然后安装就行 ②安装完anaconda2会自动安装了python2.7&#xff08;如终端输入python即进入python模式&#xff09; 但是可能没有设置环境变量&#xff0c;导致conda命令找不到 解决方案&#xff1a;http…

JavaScript服务器端开发基础之Math对象小结

JavaScript提供基础的算术运算符来实现对算术运算的支持&#xff0c;例如加法运算符&#xff0c;减法运算符-&#xff0c;乘法运算符*&#xff0c;除法运算符/和求余运算符%。此外&#xff0c;还支持复杂的算术运算&#xff0c;这是通过作为Math对象的属性定义的函数和常量来实…

2018-3-5 (论文—网络评论中结构化信息处理的应用于研究)笔记三(互信息,信息增益,期望交叉熵,基于词频的方法,CHI统计)

传统的特征提取的方法&#xff1a; 1.互信息量&#xff08;Mutual Information MI&#xff09;&#xff1a;评估零个随机变量相关程度&#xff08;数组额上离散使用了累加&#xff0c;而连续是积分&#xff09; 百度&#xff1a;互信息_百度百科https://baike.baidu.com/item/%…

艺术站-卡通和风格化的HDRI天空

卡通和风格化游戏的新HDRI天空纹理。大小解压后&#xff1a;576M 目前&#xff0c;pack拥有28个独特的HDRI天空变体。每个天空的分辨率为40962048像素。 格式纹理:png&#xff0c;HDR 素材获取&#xff1a;艺术站-卡通和风格化的HDRI天空-云桥网 skybox的各种变体:夜晚、白天、…