python对wav音频可视化
文章目录
- 前言
- 一、导入包以及音频文件
- 二、信号+傅里叶变换
- 三、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音频可视化相关推荐
- 使用python绘制wav 音频文件频谱图
1.wav 文件需要是Windows PCM 格式(未压缩),请参考 2.python 库的安装: pip install pyaudio(可能会用到) pip install matplotlib( ...
- python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...
- Python 拼接wav音频
需求:有一批零散的音频需要拼接成1小时的音频输出. 前置要求:本地安装 python3,ffmpeg. pip3 install pydub #!/usr/bin/env python # -*- c ...
- Python获取.wav音频的时长
要求是这样的: 给你一个.wav的音频,要求获取这个音频的时长.这里需要用到两个模块,contextlib和 wave. 方法1: import contextlib import wave file ...
- Python读取wav音频文件
第一种方式:蜂鸣声 import winsound # 系统音效 winsound.Beep(300,500)# 响铃:300频率,500持续时间 第二种方式:音乐(wav格式或mp3格式) 安装pl ...
- Python 读取WAV音频文件 画频谱
import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用python写的音阶的wav f ...
- Python下.wav音频文件转声谱图
1.安装librosa工具包 参考链接:https://github.com/librosa/librosa 我是在anaconda下安装的,激活环境,使用如下命令: 2.音频数据准备: 3.具体程序 ...
- python音频频谱_Python 读取WAV音频文件 画频谱的实例
Python 读取WAV文件 import wave import struct from scipy import * from pylab import * #读取wav文件,我这儿读了个自己用p ...
- 【音频处理】python将两个单声道wav音频合成一个双声道wav音频_立体声感
python将两个单声道wav音频合成一个双声道wav音频_立体声感 环境相关 编写目的 录音代码 单通道音合成双通道音频代码 在以下内容中,若有任何错误和不足,欢迎读者进行指正,不尽感激! 环境相关 ...
最新文章
- tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别
- 脏读和数据库一致性的分析
- python导入txt文件并绘图-Python实现读取txt文件并画三维图简单代码示例
- ProxySQL 故障
- Java+Selenium爬贴吧
- 服务降级和服务熔断的区别_Spring Cloud 熔断 隔离 服务降级
- 牛逼!Python的类和对象(长文系列第⑤篇)
- 自动化测试工具selenium使用介绍
- JSP 统计网站访问人数
- phpcms内容页 ( $inputtime ) 去掉发布时间的时分秒 - 代码篇
- java中比较两个文件的大小_Java实现获取文件大小的几种方法
- mysql 单表多级查询_mysql单表与多表查询
- 汇编语言 emu8086 电子时钟 课程设计
- Java实现二维码扫码授权登陆
- WIFI pineapple使用心得
- 计算机中集线器hub功能,usb集线器是什么东东_usb集线器功能介绍
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第一部分
- MATLAB贝茨极限,2014诺贝尔化学奖:突破光学显微极限
- 攻防世界的杂项高手题之神奇的Modbus
- Android11.0下应用管控实现解决方案(家长管理)(一)
热门文章
- java web ip_详解Java Web如何限制访问的IP的两种方法
- seo优化notfallow有二种下拉菜单百度搜索引擎
- 前端面试-浏览器原理
- Mongo第三个参数的用法
- linux下反向解析文件的权限应该是什么,Linux 下的DNS服务器中,反向解析文件的内容包括( )...
- Halcon轮廓提取
- 二维码制作软件----如何让二维码内容换行显示
- CameraView Android 相机预览控件
- 图片风格迁移:基于实例缓解细节丢失、人脸风格化失败问题
- JavaScrpit 犀牛书第七版笔记