|
'''
本软件实现从麦克风设备读取音频数据并实时显示波形,如有疑问或需要进一步优化请联系
1605908057@qq.com
by 排长 2018-1-17
'''
#下面是需要的模块,python的优势就是有众多功能强大甚至千奇百怪的模块可用
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib.lines as line
#-----------打开录音设备-------------
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 2048
audio = pyaudio.PyAudio()#打开pyaudio类
stream = audio.open(format=FORMAT, channels=CHANNELS,
rate=RATE, input=True,
frames_per_buffer=CHUNK)
print( "open ok...")
#--------------绘图-----------------
x = range(0,CHUNK)
fig = plt.figure(1)#建立一个绘图
ax = plt.axes(xlim=(0,1024*2), ylim=(-5000,5000))#绘图坐标设置
linem = line.Line2D([],[])#绘图(后面会更新图形数据)
#-------------绘图更新------------
def init():
ax.add_line(linem)
return linem,
def update(i):
global audio_data
linem.set_xdata(x)
data = stream.read(CHUNK)#在更新函数里采集一个音频块
audio_data = np.fromstring(data, dtype=np.short)#音频块转成整形数组
linem.set_ydata(audio_data)
return linem,
fig.show()
ani = animation.FuncAnimation(fig, update,#动态绘图
init_func=init,
frames=1,
interval=10,#更新间隔(ms)
blit=True) |
|