文章目录

  • 前言
  • 一、导入包以及音频文件
  • 二、信号+傅里叶变换
  • 三、Mel谱图
  • 四、Log_Mel谱图
  • 总结

前言

本文主要是使用代码实现音频文件(wav)的多种可视化。
1.信号
2.傅里叶变换
3.Mel(梅尔)谱图
4.log_Mel谱图


提示:以下是本篇文章正文内容,下面案例可供参考

一、导入包以及音频文件

为了便于展示,我将信号和傅里叶变换使用plt组合在一起进行展示。

import matplotlib.pyplot as plt
import librosa
import librosa.display
import numpy as np
import sys# 读取音频wav文件
audio_path = r"D:\PycharmProjects\testwav\test01.wav"
y, sr = librosa.load(audio_path, sr=None, mono=True)
"""
:parampath  音频路径sr  采样率(默认22050,但是有重采样的功能)mono 设置为true是单通道,否则是双通道offset 音频读取的时间duration 获取音频的时长:returnsy : 音频的信号值,类型是ndarraysr : 采样率
"""
###############################################################################

结果展示:

二、信号+傅里叶变换

为了便于展示,我将信号和傅里叶变换使用plt组合在一起进行展示。

import matplotlib.pyplot as plt
import librosa
import librosa.display
import numpy as np
import sys# 读取音频wav文件
audio_path = r"D:\PycharmProjects\testwav\test01.wav"
y, sr = librosa.load(audio_path, sr=None, mono=True)
"""
:parampath  音频路径sr  采样率(默认22050,但是有重采样的功能)mono 设置为true是单通道,否则是双通道offset 音频读取的时间duration 获取音频的时长:returnsy : 音频的信号值,类型是ndarraysr : 采样率
"""
##############################################################################################################################################################
# plt画图
f, ((ax11, ax12)) = plt.subplots(1, 2, sharex=False, sharey=False)
###################################################################
# 01 左,信号
ax11.set_title('Signal')
ax11.set_xlabel('Time (samples)')
ax11.set_ylabel('Amplitude')
ax11.plot(y)
###################################################################
# 02 右,傅里叶变换
n_fft = 2048
ft = np.abs(librosa.stft(y[:n_fft], hop_length=n_fft+1))
ax12.set_title('Spectrum')
ax12.set_xlabel('Frequency Bin')
# ax12.set_ylabel('Amplitude')
ax12.plot(ft)
################################################################################plt.show()

结果展示:


三、Mel谱图

代码如下(示例):

import matplotlib.pyplot as plt
import librosa
import librosa.display
import numpy as np
import sys# 读取音频wav文件
audio_path = r"D:\PycharmProjects\testwav\test01.wav"
y, sr = librosa.load(audio_path, sr=None, mono=True)
"""
:parampath  音频路径sr  采样率(默认22050,但是有重采样的功能)mono 设置为true是单通道,否则是双通道offset 音频读取的时间duration 获取音频的时长:returnsy : 音频的信号值,类型是ndarraysr : 采样率
"""
###############################################################################################################################################################
# 03 使用librosa获取mel谱图
n_mels = 64
n_frames = 5
n_fft = 1024
hop_length = 512
power = 2.0mel_spectrogram = librosa.feature.melspectrogram(y=y,sr=sr,n_fft=n_fft,hop_length=hop_length,n_mels=n_mels,power=power)
librosa.display.specshow(librosa.power_to_db(mel_spectrogram, ref=np.max),y_axis='mel', fmax=8000, x_axis='time')
plt.colorbar(format='%+2.0f dB')
##################################################################################plt.show()

结果展示:


四、Log_Mel谱图

代码如下(示例):

import matplotlib.pyplot as plt
import librosa
import librosa.display
import numpy as np
import sys# 读取音频wav文件
audio_path = r"D:\PycharmProjects\testwav\test01.wav"
y, sr = librosa.load(audio_path, sr=None, mono=True)
"""
:parampath  音频路径sr  采样率(默认22050,但是有重采样的功能)mono 设置为true是单通道,否则是双通道offset 音频读取的时间duration 获取音频的时长:returnsy : 音频的信号值,类型是ndarraysr : 采样率
"""
###############################################################################################################################################################
# 03 使用librosa获取mel谱图
n_mels = 64
n_frames = 5
n_fft = 1024
hop_length = 512
power = 2.0mel_spectrogram = librosa.feature.melspectrogram(y=y,sr=sr,n_fft=n_fft,hop_length=hop_length,n_mels=n_mels,power=power)# librosa.display.specshow(librosa.power_to_db(mel_spectrogram, ref=np.max),
#                          y_axis='mel', fmax=8000, x_axis='time')
# plt.colorbar(format='%+2.0f dB')
################################################################################### 04 将mel谱图转换为log mel谱图
log_mel_spectrogram = 20.0 / power * np.log10(np.maximum(mel_spectrogram, sys.float_info.epsilon))
librosa.display.specshow(librosa.power_to_db(log_mel_spectrogram, ref=np.max),y_axis='mel', fmax=8000, x_axis='time')
# plt.colorbar(format='%+2.0f dB')
##################################################################################plt.show()

结果展示:


总结

本文主要是将wav文件进行可视化,并没有对原理进行说明。

python对wav音频可视化相关推荐

  1. 使用python绘制wav 音频文件频谱图

    1.wav 文件需要是Windows PCM 格式(未压缩),请参考 2.python 库的安装: pip install pyaudio(可能会用到) pip install matplotlib( ...

  2. python 读取wav 音频文件的两种方式

    python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...

  3. Python 拼接wav音频

    需求:有一批零散的音频需要拼接成1小时的音频输出. 前置要求:本地安装 python3,ffmpeg. pip3 install pydub #!/usr/bin/env python # -*- c ...

  4. Python获取.wav音频的时长

    要求是这样的: 给你一个.wav的音频,要求获取这个音频的时长.这里需要用到两个模块,contextlib和 wave. 方法1: import contextlib import wave file ...

  5. Python读取wav音频文件

    第一种方式:蜂鸣声 import winsound # 系统音效 winsound.Beep(300,500)# 响铃:300频率,500持续时间 第二种方式:音乐(wav格式或mp3格式) 安装pl ...

  6. Python 读取WAV音频文件 画频谱

    import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav f ...

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

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

  8. python音频频谱_Python 读取WAV音频文件 画频谱的实例

    Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...

  9. 【音频处理】python将两个单声道wav音频合成一个双声道wav音频_立体声感

    python将两个单声道wav音频合成一个双声道wav音频_立体声感 环境相关 编写目的 录音代码 单通道音合成双通道音频代码 在以下内容中,若有任何错误和不足,欢迎读者进行指正,不尽感激! 环境相关 ...

最新文章

  1. tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别
  2. 脏读和数据库一致性的分析
  3. python导入txt文件并绘图-Python实现读取txt文件并画三维图简单代码示例
  4. ProxySQL 故障
  5. Java+Selenium爬贴吧
  6. 服务降级和服务熔断的区别_Spring Cloud 熔断 隔离 服务降级
  7. 牛逼!Python的类和对象(长文系列第⑤篇)
  8. 自动化测试工具selenium使用介绍
  9. JSP 统计网站访问人数
  10. phpcms内容页 ( $inputtime ) 去掉发布时间的时分秒 - 代码篇
  11. java中比较两个文件的大小_Java实现获取文件大小的几种方法
  12. mysql 单表多级查询_mysql单表与多表查询
  13. 汇编语言 emu8086 电子时钟 课程设计
  14. Java实现二维码扫码授权登陆
  15. WIFI pineapple使用心得
  16. 计算机中集线器hub功能,usb集线器是什么东东_usb集线器功能介绍
  17. 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第一部分
  18. MATLAB贝茨极限,2014诺贝尔化学奖:突破光学显微极限
  19. 攻防世界的杂项高手题之神奇的Modbus
  20. Android11.0下应用管控实现解决方案(家长管理)(一)

热门文章

  1. java web ip_详解Java Web如何限制访问的IP的两种方法
  2. seo优化notfallow有二种下拉菜单百度搜索引擎
  3. 前端面试-浏览器原理
  4. Mongo第三个参数的用法
  5. linux下反向解析文件的权限应该是什么,Linux 下的DNS服务器中,反向解析文件的内容包括( )...
  6. Halcon轮廓提取
  7. 二维码制作软件----如何让二维码内容换行显示
  8. CameraView Android 相机预览控件
  9. 图片风格迁移:基于实例缓解细节丢失、人脸风格化失败问题
  10. JavaScrpit 犀牛书第七版笔记