python pyaudio显示音频波形图

python pyaudio显示音频波形图

代码如下:

python 复制代码
import numpy as np
import matplotlib.pylab as plb
import wave

# 读取 wav
wf = wave.open("./output.wav", "rb")

# 获取音频相关参数:声道数、量化位数、采样频率、采样帧数
nchannels, sampwidth, framerate, nframes = wf.getparams()[:4]

# 将音频转为可处理形式,nframes 是帧数,函数返回的是 str 数据
str_datas = wf.readframes(nframes)

# 关闭文件流 wave
wf.close()

# 转换为 1 维短整型数组,np.short 8 位
w_datas = np.fromstring(str_datas, dtype=np.short)
print(w_datas.shape)

# 维度修改为 2,分离左右声道
w_datas.shape = -1, 2
print(w_datas.shape)

# -1 表示自动适配,根据另一个维度的数量进行分割,得到 n 行 2 列的数组
w_datas = w_datas.T
time = np.arange(0, nframes) * (1 / framerate)
plb.subplot(211)
plb.plot(time[0:220160], w_datas[0], c="g")
plb.xlabel("time")
plb.ylabel("amplitude")
plb.subplot(212)
plb.plot(time[0:220160], w_datas[1], c="b")
plb.xlabel("time")
plb.ylabel("amplitude")
plb.show()
相关推荐
愈努力俞幸运1 小时前
Python heapq (堆/优先队列)
python
SHolmes18541 小时前
给定某日的上班时间段,计算当日的工作时间总时长(Python)
开发语言·前端·python
C嘎嘎嵌入式开发1 小时前
NLP 入门:从原理到实战的个人经验总结
人工智能·python·自然语言处理·nlp
咖啡の猫1 小时前
Python字典元素的增、删、改操作
java·开发语言·python
Swizard1 小时前
Python 并不慢,是你看不懂:拆解 CPython 虚拟机背后的魔法引擎
python
Lucky小小吴1 小时前
JAVA漫谈反序列化篇——笔记
java·开发语言·笔记
自由生长20241 小时前
一次“虚拟环境复制引发的血案”:记一次 itsdangerous 版本混乱排查全过程
python
ytttr8732 小时前
基于 C# WinForm 实现的 电影院售票系统
开发语言·c#
天下不喵2 小时前
python项目部署之pytandic与.env的使用教程
python·docker
shenzhenNBA2 小时前
python如何调用AI之deepseek的API接口?
人工智能·python·deepseek·调用deepseek api