前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >语音数据采集-实时语音数据可视化

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

作者头像
用户9925864
发布2022-07-27 09:30:23
1.8K0
发布2022-07-27 09:30:23
举报
文章被收录于专栏:算法工程师的学习日志

1、安装依赖

代码语言:javascript
复制
pip install pyaudio
pip install pylab

2、语音数据展示

代码语言:javascript
复制
import pyaudio
import 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、声音波形可视化

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

代码语言:javascript
复制
import pyaudio
import numpy as np
import pylab
import time

RATE = 44100
CHUNK = 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()

网页代码

代码语言:javascript
复制
<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>

效果如图

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法工程师的学习日志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档