资源简介
能够实时录音并显示波形,能够读取音频文件并实时显示波形,此程序基于动画刷新的思想,不断刷新图像,以达到实时显示的目的。通过测试和修改,代码运行正常。

代码片段和文件信息
# coding=utf-8
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import pyaudio
import wave
import os
class SubplotAnimation(animation.TimedAnimation):
def __init__(self static=False):
“““
音频波形动态显示,实时显示波形,实时进行离散傅里叶变换分析频域
:param static: 是否为静态模式
:param path: wav 文件路径
“““
path=r‘C:\Users\xh941\Desktop\music1.wav‘
self.static = static
if static and os.path.isfile(path):
self.stream = wave.open(path)
self.rate = self.stream.getparams()[2]
self.chunk = self.rate/2
self.read = self.stream.readframes
else:
self.rate = 2 ** 16
self.chunk = 2 ** 12
p = pyaudio.PyAudio()
self.stream = p.open(format=pyaudio.paInt16 channels=1 rate=self.rate
input=True frames_per_buffer=self.chunk)
self.read = self.stream.read
fig = plt.figure()
ax1 = fig.add_subplot(2 1 1)
ax2 = fig.add_subplot(2 1 2)
self.t = np.linspace(0 int(self.chunk - 1) int(self.chunk))
ax1.set_xlabel(‘t‘)
ax1.set_ylabel(‘x‘)
self.line1 = ax1.plot([] [] lw=2)
ax1.set_xlim(0 self.chunk)
ax1.set_ylim(-15000 15000)
ax2.set_xlabel(‘hz‘)
ax2.set_ylabel(‘y‘)
self.line2 = ax2.plot([] [] lw=2)
ax2.set_xlim(0 self.chunk)
ax2.set_ylim(-50 100)
# 更新间隔/ms
interval = int(1000*self.chunk/self.rate)
animation.TimedAnimation.__init__(self fig interval=interval blit=True)
def _draw_frame(self framedata):
i = framedata
if self.static:
# 读取静态wav文件波形
y = np.fromstring(self.read(int(int(self.chunk)/2)+1) dtype=np.int16)[:-1]
else:
# 实时读取声频
y = np.fromstring(self.read(self.chunk) dtype=np.int16)
x = np.linspace(0 int(self.chunk) - 1 y.shape[0])
# 画波形图
self.line1.set_data(x y)
# 傅里叶变化
xf = np.fft.rfft(y) / self.chunk
xfp = 20 * np.log10(np.clip(np.abs(xf) 1e-20 1e100))
freqs = np.linspace(0 int(self.rate) xfp.shape[0])
self.line2.set_data(freqs xfp)
self._drawn_artists = [self.line1 self.line2]
def new_frame_seq(self):
return iter(range(self.t.size))
def _init_draw(self):
lines = [self.line1 self.line2]
for l in lines:
l.set_data([] [])
ani = SubplotAnimation()
plt.show()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2709 2020-02-10 22:19 实时读取音频并显示波形\main.py
文件 100044 2019-05-10 12:43 实时读取音频并显示波形\music1.wav
目录 0 2020-02-10 22:15 实时读取音频并显示波形\
- 上一篇:源代码.rar
- 下一篇:数据建模层次分析法填志愿问题
相关资源
- 语音识别LD3320开发资料包含51代码
- DIR2病毒源代码(汇编语言编写)
- VC仿Windows记事本源代码
- 代码绘制的爱心表白
- CRichEditView显示行号的代码
- STM8S代码例程
- Word插入代码显示行号并高亮着色显示
- 破解source insight4.00.0096
- 蓝牙源代码应用于LINUX
- 简单好用的Nhibernate代码自动生成工具
- KUKA 编程案例讲解.ppt
- bp神经网络源代码,可直接运行
- 随机森林R语言代码
- 计算机图形学 边填充算法实现代码
- 直流无刷电机方波驱动 stm32 例程代码
- 仿知乎界面小程序源代码
- 贪吃蛇源代码.fla
- 周立功开发板ProASIC3实验-syn_FIFO代码
- IMX385驱动代码.zip
- dotnet 写字板 实验 源代码 不好请要不
- 图像二维小波变换的实现源代码
- 八三编码器设计 VHDL代码 简单,包附
- linux应用层的华容道游戏源代码
- 交通咨询模拟系统完整代码
- http请求状态代码
- 数值分析所有实验代码
- 网上拍卖系统完整源代码
- 音乐代码转换软件 单片机编程时用
- CSMA/CD等动画演示加源代码
- silicon lab公司的收音IC SI47XX全套开发工
评论
共有 条评论