代码功能:

  1. 读取wav音频文件
  2. 以10s为一个单位截取音频,只截取每个音频的前60s
  3. 调用librosa音频处理函数对10s音频进行mel频谱操作
  4. 调用Matplotlib图像处理函数进行频谱图的绘画
import numpy as np
import glob
import librosa
import librosa.display
import matplotlib.pyplot as plt
import cv2path_dir = 'C:/Users/Chengguo/Desktop/声音_行为/wav/'
for path in glob.glob(path_dir+"*.wav"):# path = "C:/Users/Chengguo/Desktop/声音_行为/wav/尖叫.wav"# print(path)for i in range(50):y, sr = librosa.load(path,sr=None,offset=i*1.0, duration=1.0)#librosa.ex('trumpet'))#声音强度、声音采样频率# print(len(y),sr)# plt.figure(figsize=(16,6))# librosa.display.waveplot(y, sr=sr)# plt.title('Signal');# plt.xlabel('Time (samples)')# plt.ylabel('Amplitude')'''FFT变换'''# n_fft = 2048# ft = np.abs(librosa.stft(y[:n_fft], hop_length = n_fft+1))# plt.figure()# plt.plot(ft);# plt.title('Spectrum');# plt.xlabel('Frequency Bin');# plt.ylabel('Amplitude');'''stft频谱变换'''# spec = np.abs(librosa.stft(y, hop_length=512))# spec = librosa.amplitude_to_db(spec, ref=np.max)# plt.figure(figsize=(16,6))# librosa.display.specshow(spec, sr=sr, x_axis='time', y_axis='log');# plt.colorbar(format='%+2.0f dB');# plt.title('Spectrogram');'''Mel频谱变换'''mel_spect = librosa.feature.melspectrogram(y=y, sr=sr, n_fft=2048, hop_length=1024)mel_spect = librosa.power_to_db((mel_spect), ref=np.max)plt.figure(figsize=(16,8))# kernel = np.ones((3,3),np.uint8)  ,# mel_spect = cv2.morphologyEx(mel_spect, cv2.MORPH_OPEN, kernel)librosa.display.TimeFormatter(lag=True)mel_img=librosa.display.specshow(mel_spect, y_axis='mel', x_axis='s')#, fmax=8000plt.title(f'Mel-Spectrogram-{i*1}')plt.colorbar(mel_img,format='%+2.0f dB')plt.savefig(f"{path[:-4]}/Log-Mel-Spectrogram-{i*1}.png")plt.close()

读 wav 音频画 mel 频谱图(python)相关推荐

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

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

  2. 音频频谱显示-显示音频文件静态频谱图(一)

    音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...

  3. FFT快速傅里叶变换的应用——画单边频谱图matlab

    FFT快速傅里叶变换的应用--画单边频谱图matlab 快速傅里叶变换在数字信号处理里用的十分广泛,在matlab仿真中,处理信号的时频域变换十分有效,这里结合两个做过的仿真,来说一说fft的应用:画 ...

  4. python 画三维函数图-Python画三维图-----插值平滑数据

    一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...

  5. python画50个图-Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?

    Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢? 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上 ...

  6. 怎么用python画简单的图-Python | 用matplotlib画些简单的图

    环境是python3.7,工具使用的是jupyter-notebook交互式笔记本 引入相关库 from pandas import DataFrame,Series import matplotli ...

  7. Python下.wav音频文件转声谱图

    1.安装librosa工具包 参考链接:https://github.com/librosa/librosa 我是在anaconda下安装的,激活环境,使用如下命令: 2.音频数据准备: 3.具体程序 ...

  8. 怎么用python画简单的图-python中简单易学的绘图:用turtle画太极图

    为什么想画太极图呢?因为我儿子不知道是看了哪本书还是哪个电视,竟然特地打印出一张太极图要挂在大门口,我赶紧说祖宗这挂在门外,别人看见了还以为咱家出什么事了,你喜欢就挂自己卧室门口吧,于是这张图就成了他 ...

  9. python画50个图-python绘制多个子图的实例

    python绘制多个子图的实例 绘制八个子图 import matplotlib.pyplot as plt fig = plt.figure() shape=['.','o','v','>', ...

最新文章

  1. oracle 11gr2 单机数据库使用asm,RHEL7上安装11gR2单机使用ASM存储搭建Physical Standby笔记...
  2. Win7实用技巧之五库功能妙用
  3. IDA __OFSUB__ 测试
  4. Javascript自由拖拽类
  5. 局部变量和成员变量的初始值问题
  6. [Done]Spring @Pointcut 切点调用不到(SpringAOP嵌套方法不起作用) 注意事项
  7. shiro学习(14):springMVC结合shiro完成认证
  8. c语言做一个小程序报告,《C语言程序设计实践》课程报告30个小程序组合成一个大程序.doc...
  9. java面向对象编程集合边框_第六章使用java实现面向对象-集合框架
  10. php 微信表情字符,微信公众平台开发--表情符号
  11. python控制本地音乐播放器_如何使用python控制音乐播放器
  12. vscode连接服务器不用每次都输入密码
  13. 蓝牙运动手环app开发方案
  14. 三相电检测电路c语言,三相缺相检测电路的原理分析
  15. 查看linux最大的sftp连接数,Linux查看某个端口的连接数的方法
  16. Zabbix监控网络设备模板配置
  17. dodo:人脸识别方法个人见解(三部分汇总)
  18. CRM客户关系管理系统让企业在竞争中脱颖而出
  19. XD交互原型能导出html,设计师必学!教你用Adobe Xd轻松做原型设计
  20. EmguCV OCR识别实例演示与代码--Tesseract数字识别

热门文章

  1. 用开放和流动反抗熵增,生态建设终极哲学——保险生态建设
  2. Java后端手机号校验工具类
  3. 如何通过ChatGPT快速生成PPT?ChatGPT搭配闪击PPT生成PPT,你只需要输入一个标题
  4. 如何修改product.product的display_name的显示,解决_rec_name失效的问题
  5. TEM晶格条纹测量软件(Digital Micrograph)的使用方法,附软件资源!!!
  6. 美国一男子从移动电话基站跳伞死亡
  7. 微信小程序scroll事件/onPageScroll事件的延迟问题
  8. 关于html和css的区别
  9. 资深客服经理-教导企业如何有效降低客服成本,提升用户体验
  10. python学习-面向对象-老王开枪