梅尔频谱(Mel spectrum)简介及Python实现

news2024/11/25 11:24:40

梅尔频谱(Mel spectrum)简介及Python实现

  • 1. 梅尔频谱(Mel spectrum)简介
  • 2. Python可视化测试
  • 3.频谱可视化
    • 3.1 Mel 频谱可视化
    • 3.2 STFT spectrum
  • 参考文献资料

1. 梅尔频谱(Mel spectrum)简介

在信号处理上,声信号(噪声信号)是一种重要的传感监测手段。对于语音分类任务,常常采用梅尔频谱作为信号处理手段,将信号变成spectrum的图片形式。作为一种重要的语音信号处理包,librosa包通过内置函数能够很快的将原始音频信号处理为梅尔频谱图。

2. Python可视化测试

下面是一个将一段旋转机械支座采集的噪声信号可视化的代码:
内置函数的参数如下:

参数:

  • path :音频文件的路径。
  • sr :采样率,如果为“None”使用音频自身的采样率
  • mono :bool,是否将信号转换为单声道
  • offset :float,在此时间之后开始阅读(以秒为单位)
  • duration 持续时间:float,仅加载这么多的音频(以秒为单位)

import librosa
import matplotlib.pyplot as plt

path = r"...\data\train_audio_inner_rpm1000_load20_1.wav"
y, sr = librosa.load(path,duration=2)


librosa.display.waveshow(y, sr=sr)
plt.title('Rotating machinery Acoustics Signal')
plt.xlabel('samples')
plt.ylabel('Amplitude')
plt.show()

在这里插入图片描述

3.频谱可视化

3.1 Mel 频谱可视化

要绘制音频信号的mel频谱,可以使用librosa库提供的librosa.feature.melsspectrogram函数。以下是可视化的结果:

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

path = r"...\Mel_spectrum_acoustics\data\train_audio_inner_rpm1000_load20_1.wav"
y, sr = librosa.load(path, duration=2)

# compute mel spectrogram
S = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128,
                                   fmax=8000)

# convert to decibels
S_dB = librosa.power_to_db(S, ref=np.max)

# plot the mel spectrogram
librosa.display.specshow(S_dB, x_axis='time',
                         y_axis='mel', sr=sr,
                         fmax=8000)
plt.colorbar(format='%+2.0f dB')
plt.title('Mel-frequency spectrogram')
plt.tight_layout()
plt.show()

作为一种一种新的声谱图——它在机器学习领域被广泛使用,因为它很好地代表了一种类人的感知方式。人类对低频信号更敏感, 人类可以很容易区分500HZ 和1000HZ的声音, 但区分不清楚9000HZ和9500HZ的声音。 但在物理上却很容易区分。 把频率信号做一个非线性映射,对数形式的mel scale和人类的感知方式较为类似。应用 librosa库可以很容易计算spectrogram和mel spectrogram,下图分别是mel-spectrum和spectrum的结果比较。

  • mel spectrum
    在这里插入图片描述

3.2 STFT spectrum

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

path = r"...\Mel_spectrum_acoustics\data\train_audio_inner_rpm1000_load20_1.wav"
y, sr = librosa.load(path, duration=2)

# compute the short-time Fourier transform (STFT) of the signal
D = librosa.stft(y)

# convert the complex STFT data to magnitude
mag = np.abs(D)

# convert magnitude to decibels (dB) using log scale
log_mag = librosa.amplitude_to_db(mag, ref=np.max)

# plot the spectrum
librosa.display.specshow(log_mag, sr=sr, x_axis='time', y_axis='log')
plt.colorbar(format='%+2.0f dB')
plt.title('Spectrum of Rotating Machinery Acoustics Signal')
plt.xlabel('Time (seconds)')
plt.ylabel('Frequency (Hz)')
plt.show()

在这里插入图片描述

参考文献资料

【1】Mel-frequency spectrum - Wikipedia

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

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

相关文章

wordpress框架自定义添加page分页功能

先来看效果图: 一、在主题目录下的functions.php文件里,添加如下分页函数: /** * 数字分页函数 * 说明:因为wordpress默认仅仅提供简单分页,所以要实现数字分页,需要自定义函数 * Param bool $isHome 是…

工业静电监控系统的功能介绍

工业静电监控系统是一种用于监测和控制工业生产过程中静电现象的技术系统。静电是指由于物体间的电荷不平衡而产生的电场现象,它在工业生产中可能导致电击、火花、电磁干扰等质量问题。 工业静电监控系统主要通过使用静电传感器和控制设备来实现对静电场的监测和控…

Java反序列化(0):URLDNS的反序列化调试分析

URLDNS链子是Java反序列化分析的第0课,网上也有很多优质的分析文章。 笔者作为Java安全初学者,也从0到1调试了一遍,现在给出调试笔记。 一. Java反序列化前置知识 Java原生链序列化:利用Java.io.ObjectInputStream对象输出流的w…

中医药行业如何进行数字化转型?看天津同仁堂谈“有道有术有零代码”

张伯礼院士曾指出,中药制造的现代化水平,还停留在10%左右的阶段。中医药行业,老字号企业,该如何通过数字化焕发新活力? 天津同仁堂通过与伙伴云合作,零代码构建数字化系统,让技术与思维共同成长…

【Linux】Tcp协议的通讯流程,浅谈三次握手四次挥手

文章目录 Tcp协议的通讯流程一、协议定制与网络版计算器的实现二、json的使用总结 Tcp协议的通讯流程 上一篇文章我们讲解了如何实现Tcp服务器,Tcp的接口也用了,下面我们就看一下Tcp协议的通讯流程: 在服务端,我们首先要创建一个…

Django on_delete参数在sql级别操作中不生效问题

class AA(models.Model):name models.CharField(max_length128)class Meta:db_table aaclass BB(models.Model):name models.CharField(max_length128)aa models.ForeignKey(AA, nullTrue, on_deletemodels.CASCADE)class Meta:db_table bb 如上当使用ORM删除aa表中的数据…

数字孪生:未来科技的新前沿

数字孪生作为一项新兴的研究方向,正逐渐成为科技界的焦点。它是将现实世界中的实体、系统或过程通过数字化手段进行建模、仿真和分析,形成与实体相对应的数字化副本。数字孪生的发展为我们带来了无限的想象空间,以及解决现实问题的新途径。 在…

opencv-18 什么是色彩空间?

1.什么是色彩空间类型? 色彩空间类型,也称为颜色空间类型或色彩模型,是一种表示图像中颜色的方式。在计算机图形学和数字图像处理中,有许多种色彩空间类型,每种类型有不同的表达方式和特点。 常见的色彩空间类型包括&a…

Vector - CAPL - 诊断模块函数(回调函数信息)

目录 CanTpCopyDataReceived CAPL 调用返回的错误代码及其含义 CanTpGetReceiverAddress CanTpGetRecentAddressExtension CanTpGetSenderAddress 代码示例 CanTpProvideTxData 代码示例 CanTpSetRxBufferSize 代码示例 CanTpCopyDataReceived 功能:通过回…

​《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(16)-Charles其他骚操作之大结局​

1.简介 今天就说一些Charles的其他操作、以及抓包跨域的问题和常见的问题如何解决。到此Charles这一系列的文章也要和大家说再见了,其他什么小程序、Android7.0等等的问题可以查看宏哥的Fiddler系列文章,只不过是将Fiddler换成Charles而已。 2.模拟403…

vue中使用Base64转码(Tinymce富文本保留HTML标签)

在vue项目中,我们经常使用到富文本编辑器,例如博主的项目(见上图),这里需要把富文本内的HTML结构,发放到Android端做混合应用的开发,因此HTML结构必不可少的! 但是浏览器在向服务器…

【MySQL基础】

目录 一、概述 1.什么是数据库 2.数据库能干什么 2.1 企业应用 2.2 金融行业 2.3 电子商务 2.4 社交媒体 2.5物联网 3.为什么要用数据库,优势、特性? 3.1 可靠性和稳定性 3.2 数据管理能力 3.3 数据共享和集成 3.4 数据安全性和隐私保护 3…

新零售转型战略:打造数字化时代持续性盈利的商业模式

新零售达成什么样子,能够创造更大得客户价值,从企业得角度来看,他一定要提升企业得获利能力。新零售应该怎么做?以客户需求为本,找出需求,重新创造场景. 从而提升用户体验加强粘性,而蚓链数字化…

抖音seo账号矩阵系统源码如何开发布局?

目录 一、 抖音SEO账号矩阵系统源码的开发布局步骤如下: 二。 开发部署源码 三、 开发部署功能设计 1. 短视频AI智能创作 2. 托管式账号管理: 3. 数据分析 4. 智能营销获客 四。 抖音seo源码开发部署交付技术文档包含 五。 开发代码展示: 一、 抖…

Layui下拉多选框

标题xmSelect插件&#xff1a; xmSelect文档 下载Layui第三方插件 下拉多选框效果&#xff1a; 实现方法(例子)&#xff1a; 将xmSelect插件的xm-select.js文件引入到layui中&#xff1a; <script src"public/js/xm-select/xm-select.js"></script> …

借助 Mybatis 的动态 SQL 解决传参不确定问题

在上一篇的&#xff1a;Mybatis 操作数据库的基本 CRUD 以及查询操作详析_糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据&#xff0c;本篇介绍 Mybatis 一个强大的特性&#xff1a;动态SQL。 动态 SQL 解决什么问题&#xff1f; 那当我们要执行的业务逻辑有…

carla与g29联合调试(一)

前言&#xff1a; 之前做的carla与g29的联合调试&#xff0c;现在记录一下carla控制g29的实现流程。 一、总体通讯流程 主要实现为carla中车辆的方向盘转动带着g29跟着一起转动&#xff0c;使用ros通讯来实现这个过程。 二、具体实现流程 2.1首先确定g29的力反馈和转动 使…

基于LoRA微调部署Stable Diffusion【免费试用阿里云】

文章目录 Stable Diffusion介绍环境及资源准备过程注交互式建模&#xff08;PAI-DSW&#xff09;的试用在创建的工作空间中创建实例安装 Diffusers Stable Diffusion介绍 Stable Diffusion 是一种文本到图像的潜在扩散模型&#xff0c;由 Runway 和慕尼黑大学合作构建&#xf…

学习day52

1.关于 error Component name "School" should always be multi-word vue/multi-word-component-names 这里是因为脚手架的规范原因&#xff0c; 解决办法&#xff1a; 我是在vue.comfig.js文件中加入了一条配置&#xff0c;即 lintOnSave:false 整个文件的完整…

Spring Boot单元测试入门指南

Spring Boot单元测试入门指南 JUnit是一个成熟和广泛应用的Java单元测试框架&#xff0c;它提供了丰富的功能和灵活的扩展机制&#xff0c;可以帮助开发人员编写高质量的单元测试。通过JUnit&#xff0c;开发人员可以更加自信地进行重构、维护和改进代码&#xff0c;同时提高代…