语音数据采集-实时语音数据可视化

145 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 18 天,点击查看活动详情

要在Python环境中开始在Windows、Linux和MacOS上播放和录制音频,您应该考虑使用PyAudio库。PyAudio是PortAudio的一组Python绑定,PortAudio是一个与音频驱动程序接口的跨平台C++库。 安装PyAudio 由于PyAudio依赖于PortAudio,您需要安装它才能成功安装。 您可以在项目网站上找到最新版本PyAudio(0.2.11)的官方安装说明,但不幸的是,新用户遇到了一些常见问题。 对于Python3.7.x及更高版本,您不能简单地pip安装pyaudio,因为特定于版本的预编译二进制文件当前不可用。根据您的操作系统,您可能还需要采取一些其他额外步骤。 1、安装依赖

pip install pyaudio
pip install pylab

2、语音数据展示

import pyaudioimport numpy as np
CHUNK = 4096 # 每次采集的数据点数RATE = 44100 # 采样频率
p=pyaudio.PyAudio() # 启动类stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,              frames_per_buffer=CHUNK) #输入设备
# 创建一个numpy来保存每次采集的数据for i in range(10): #    data = np.fromstring(stream.read(CHUNK),dtype=np.int16)    print(data)
# 关闭音频采集流stream.stop_stream()stream.close()p.terminate()

图片

3、声音波形可视化

首先采集数据,然后保存为图片,新建一个网页,在网页上展示波形图

import pyaudioimport numpy as npimport pylabimport time
RATE = 44100CHUNK = int(RATE/20) 
def soundplot(stream):    t1=time.time()    data = np.fromstring(stream.read(CHUNK),dtype=np.int16)    pylab.plot(data)    pylab.title(i)    pylab.grid()    pylab.axis([0,len(data),-2**16/2,2**16/2])    pylab.savefig("03.png",dpi=50)    pylab.close('all')    print("took %.02f ms"%((time.time()-t1)*1000))
if __name__=="__main__":    p=pyaudio.PyAudio()    stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,                  frames_per_buffer=CHUNK)    for i in range(int(20*RATE/CHUNK)): #持续10s        soundplot(stream)    stream.stop_stream()    stream.close()    p.terminate()

网页代码

<html><script language="javascript">function RefreshImage(){document.pic0.src="03.png?a=" + String(Math.random()*99999999);setTimeout('RefreshImage()',50);}</script><body onload="RefreshImage()"><img name="pic0" src="03.png"></body></html>

效果如图

图片