开启掘金成长之旅!这是我参与「掘金日新计划 · 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>
效果如图